1

我目前正在一个项目中,我需要将一些信息发布到 csv 文件然后读回,以便用户可以看到以前的信息然后对其进行编辑。有点像一个数据库表,其中信息将在单元格中,它应该在另一行中旁边有一些文本。

目前我的代码有两个表,一个显示来自 csv 的信息,另一个显示将数据发送到 csv,但我希望将其合并,以便他们可以看到以前创建的信息是什么,然后他们可以编辑这个信息点击提交,这就是将出现在表格中的信息。

这是我现在的代码...

$myfile = "outputfile.csv"; 
if (!isset($_POST['submit'])) {
$f = fopen($myfile, 'r');
echo "<table>";
while (($line = fgetcsv($f)) !== false) {
    echo "<tr>";
    foreach ($line as $cell) {
        echo "<td>" . htmlspecialchars($cell) . "</td>";
    }
    echo "</tr>\n";
}
fclose($f);
echo "\n</table>";
echo "
<form action='' method='POST'>
<table border='1'>
    <tr>
        <td><input name='var1' type='text'></td>
        <td>MMR</td>
    </tr>
    <tr>
        <td><input name='var2' type='text'></td>
        <td>FIVE_IN_ONE</td>
    </tr>
    <tr>
        <td><input name='var3' type='text'></td>
        <td>BOOSTER</td>
    </tr>
    <tr>
        <td><input name='var4' type='text'></td>
        <td>MENC</td>
    </tr>
</table>
<input name='submit' type='submit' value='Submit'>
</form>";
} else {
    $text1 = $_POST['var1'];
    $text2 = $_POST['var2'];
    $text3 = $_POST['var3'];
    $text4 = $_POST['var4'];

    $fh = fopen($myfile, 'w+');
    fwrite($fh, $text1 . "\r\n" . $text2 . "\r\n" . $text3 . "\r\n" . $text4);
    fclose($fh);

    echo $text1 . "<br>" . $text2 . "<br>" . $text3 . "<br>" . $text4; 
}
4

2 回答 2

1

PHP 内置了 csv 功能:

$arrayOfValues = str_getcsv(file_get_contents('myfile.csv'));
foreach($arrayOfValues as $row)
{
  foreach($row as $col)
  {
    echo $col . '&nbsp;';
  }
  echo '<br>';
}
于 2012-07-02T13:23:55.397 回答
0

正如大卫所说,使用 str_getcsv。要将所有内容放在适当的位置以便人们可以进行实时编辑,您需要像这样显示表单:

$arrayOfValues = str_getcsv(file_get_contents('myfile.csv'));
foreach($arrayOfValues as $row)
{
  $index=0;
  echo "<tr>";
  foreach($row as $col)
  {
     echo "<td><input name='var".$index."' type='text' value='".$col."'></td>";
     $index++;
  }
  echo "</tr>";
}
于 2012-07-02T13:34:07.030 回答