1

私は現在、いくつかの情報をcsvファイルに投稿してから読み戻す必要があるプロジェクトに取り組んでいます。これにより、以前の情報をユーザーが表示して編集できるようになります。情報がセルにあるデータベーステーブルのようなもので、別の行の横にテキストが表示されている必要があります。

現時点では、私のコードには2つのテーブルがあります。1つはcsvからの情報を示し、もう1つはデータを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

Davidが言ったように、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 に答える