0

さまざまなチュートリアル、例などから以下のスクリプトをつなぎ合わせました...

現在、スクリプトは ID、名前、URL を「|」で保存しています。次のようなテキスト ファイル Db への区切り記号:

1|John|http://www.john.com|
2|Mark|http://www.mark.com|
3|Fred|http://www.fred.com|

しかし、「UPDATE」と「DELETE」ボタンを機能させるのに苦労しています。

誰かがコードを投稿してください:

  • その行の変更されたデータを更新/保存させてください (UPDATE ボタンの場合)
  • その行を削除させてください (DELETE ボタンの場合)

以下のコードをコピーして貼り付けて、自分で試してください。以下のスクリプトの出力形式も維持したいと思います。


<?php

$file = "data.txt";
$name = $_POST['name'];
$url = $_POST['url'];

$data = file('data.txt');
  $i = 1;
    foreach ($data as $line) {
    $line = explode('|', $line);
  $i++;
}

if (isset($_POST['submits'])) {
 $fp = fopen($file, "a+");
   fwrite($fp, $i."|".$name."|".$url."|\n");
  fclose($fp);
}


?>
<html>
<head>
</head>
<body>
<br>
<form name="form1" action="thispage.php" method="POST">
<input type="text" name="name">
<input type="text" name="url">
<input type="submit" name="submits" value="ADD"><br>
</form>
<form name="form2" action="thispage.php" method="POST">
<?php

   $display = file("data.txt");
       for ($i=0; $i<=count($display)-1; $i++) {
       $lines = explode("|",$display[$i]);

       print('<input type="hidden" name="id" value="'.$lines[0].'">
                 <input type="text" name="name" value="'.$lines[1].'">
                 <input type="text" name="url" value="'.$lines[2].'">
                 <input type="submit" name="update" value="UPDATE">
                 <input type="submit" name="delete" value="DELETE"><br>');
       }

?>
</form>
</body>
</html>
4

1 に答える 1

1

コードを投稿するだけではありません。(遅くなりました。もしそうなら、私はタイプミスを保証します)

まず、各行を識別するために、出力のフォーム フィールドをマークする必要があります。配列を使用してそれを行うことができます。たとえば、 name="url" の代わりに name="url[]" を使用すると、 $_POST 変数に配列が含まれます。キーによって、いじっている行が決まります。

削除するものも必要です。これはプレーンなリンクまたはチェックボックスです。一度に多くの行を削除できるため、チェックボックスの方がおそらく優れています。あなたが持っている「削除」送信ボタンを取り除きます。

それらを配置したら、 $_POST 変数 (およびデータベース ファイル) の各行を繰り返し処理し、必要に応じて編集または削除できます。

于 2010-04-24T07:31:52.497 に答える