2012-04-28 18 views
2

の追加と削除。テキストファイルの更新、私はこのコードを持って[OK]を

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

Imは、苦労してこの1つは作品作り、更新、削除しようとすると、私は追加することができますが、私はどちらかの更新および削除傾けます。皆さんが私を助けてくれることを願っています。これは期限です。前もって感謝します。

答えて

0

代わりにデータベースを使用しないのはなぜですか?データベースを使用して、簡単に、更新、削除、挿入することができます。

+1

提案をいただき、ありがとうございました。現在、バックエンドとしてデータベースを使用しているすべてのものを再ルーティングしています。 –

0

なぜデータベースを使用しないのですか?あなたのプロジェクトがフラット・テキスト・ファイル以外の場所に値を格納するのは良い考えで、変更やシングル・リードを行うたびに全体を読む必要はありません。

+0

私はちょうどフラットファイルデータベースとしてこれを作る方法を理解しようとしています。ありがとうございました。 –

1

私はあなたがここに求めているものを、非常にわからないんだけど、ulvundが言ったように、通常、あなたが保存するこの種のデータベースを使用していますが、それは実験だと言うように、私はそれで行く;)

あなたが提供したコード(挿入と表示)に基づいて、いくつかの問題が発生することがあります。更新や削除に問題がありますが、その部分のコードはありません。あなたは正しく動作しないいくつかのコードを持っているか、あるいは次に何をするべきかを尋ねていますか?誰かが「\ nを」(改行文字)でフォームを送信する場合、どのようにこのコードで私が見

問題

  • ?それはあなたのデータを混乱させます(または、ユーザーの投稿数に応じて少なくともいくつかの行が表示されます)。

  • 2行目を削除してもう一度新しい行を挿入するとどうなりますか?次のINSERTのIDを構成するために、行番号を数えてその結果を使用する方法のため、2行目#4で上に移動します。

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

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

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); 
    } 
} 
?> 
関連する問題