2

わかりました、私はこのコードを持っています:

<?php

//this is the thispage.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);
}


?>

そしてこのindex.php。

<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>

これはdata.txtに含まれています。

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

私は苦労して、これを機能させ、更新と削除を試みています。追加することはできますが、更新と削除のどちらもできません。皆さんが私を助けてくれることを願っています、これは期限切れです。前もって感謝します。

4

3 に答える 3

1

ここで何を求めているのかよくわかりません。通常、ulvundが言ったように、この種の保存にはデータベースを使用しますが、あなたが言うように、これは実験なので、私はそれを使用します;)

挿入と表示であるあなたが提供したコードに基づいて、私は発生するかもしれないいくつかの問題を見ます。あなたが言う更新と削除に問題がありますが、その部分のコードはありません。正しく機能しないコードがありますか、それとも次に何をすべきかを尋ねていますか?

このコードで見られる問題

  • 誰かが「\n」(改行文字)を含むフォームを送信した場合はどうなりますか?それはあなたのデータを台無しにします(またはユーザーが投稿する数に応じて、少なくとも数行。

  • 行#2を削除し、新しい行を再度挿入するとどうなりますか?行数をカウントし、その結果を使用して次のINSERTのIDを作成する方法のため、最終的に2行#4になります。

  • $ line = explode('|'、$ line); 「thispage.php」のこの行は、すべてのデータを配列に抽出するのではなく、行数をカウントするだけなので、何もしません。そして、私が前に言ったように、IDを構成するこの方法は良い考えではありません。

したがって、この実験に取り組む価値がある場合は、「自動増加ID」を別のファイルに保存するか、データベースファイルの最初の行をAIIDとしてメタデータを含むメタ行にすることを検討する必要があります。あなたがそこに持ちたいかもしれない他のもの。

于 2012-04-28T12:52:56.547 に答える
0

あなたが持っているものに基づいて、以下のようなものがうまくいくかもしれません。ただし、user1362861ulvundからの回答を必ずお読みください。これがうまくいかない可能性のある多くの方法があり、これを実際に適用することを計画している場合は、データベースを使用する方がよいでしょう。

<?php
//this is the thispage.php

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

$data = file('data.txt');
$i = 1;
foreach ($data as $line) {
    // You're not doing anything with this.
    //$line = explode('|', $line);
    $i++;
}

if (isset($_POST['submits'])) {
    if ($mode === 'add') {
        $fp = fopen($file, "a+");
        fwrite($fp, $i."|".$name."|".$url."|\n");
        fclose($fp);
    } else {
        $fp = fopen($file, "r+");
        foreach ($data as $line) {
            $l = explode('|', $line); // $l = substr($line, 0, strpos($line, '|'));
            if ($id === $l[0]) {
                if ($mode === 'update') {
                    fwrite($fp, $l[0]."|".$name."|".$url."|\n");
                } // else delete; don't re-write this line.
            } else {
                fwrite($fp, $line);
                // This assumes IDs are attached to data, not line numbers.
                // If that isn't the case, storing the ID (line number) is pointless.
            }
        }
        fclose($fp);
    }
}
?>
于 2012-04-28T13:01:23.313 に答える
0

代わりにデータベースを使用してみませんか?データベースを使用して、簡単に更新、削除、挿入できます。

于 2015-03-19T14:11:42.327 に答える