PHPで簡易掲示板を作っております。
下記コードで編集機能を実装しようとしています。
「各投稿番号とPOST送信されてきた編集番号を比較し、等しい場合、配列値を取得する」
ことはできたと思うのですが、
「入力フォームに取得した配列値を上書きで表示する」
ことができません。どのように書き直したらいいか、回答お願いいたします。
例えば、投稿番号が1、名前がabcd、コメントがnovelという投稿だけがもともとあるとします。その状態で編集対象番号に1を入力し、送信すると、フォームの名前のところにabcd、コメントのところにnovelが出力され、これを名前をefgh、コメントをsongに編集し、送信すると投稿番号2(名前:efgh、コメント:song)が新たに追加されます。
これを投稿番号1で名前:efgh、コメント:songだけが存在する状態にしたいのですが…
よろしくお願いいたします。
PHP
1<?php 2 3 $name = $_POST['name']; 4 $name = htmlspecialchars($name); 5 6 $comment = $_POST['comment']; 7 $comment = htmlspecialchars($comment); 8 9 $delete = $_POST['delete']; 10 $delete = htmlspecialchars($delete); 11 12 $edit = $_POST['edit']; 13 $edit = htmlspecialchars($edit); 14 15 $time = date("Y/m/d H:i:s"); 16 17 $line = file("mission_2-2.txt"); 18 $num = count($line); 19 20 $write = "{". $num . "}<>{" . $name . "}<>{" . $comment . "}<>{" . $time . "}"; 21 22 if (!empty($name) && !empty($comment)) { 23 $fp = fopen ("./mission_2-2.txt","a"); 24 fputs ($fp, $write."\n"); 25 fclose ($fp); 26 } 27 28 if (!empty($delete)) { 29 $delCon = file("mission_2-2.php"); 30 for ($j = 0; $j < count($delCon) ; $j++) { 31 $delData = explode("<>", $delCon[$j]); 32 if ($delData[0] == "{".$delete."}") { 33 array_splice($delCon, $j, 1); 34 file_put_contents("./mission_2-2.txt", $delCon); 35 } 36 } 37 } 38 39 // $editが'0'のときif文通らない 40 if (!empty($edit)) { 41 $ediCon = file("mission_2-2.txt"); 42 for ($k = 0; $k < count($ediCon) ; $k++) { 43 $ediData = explode("<>", $ediCon[$k]); 44 if ($ediData[0] == "{".$edit."}") { 45 //$simEdit = explode("}<>{", $ediCon[$k]); 46 for($h = 0; $h < count($ediData); $h++){ 47 $simEdit[$h] = mb_substr(trim($ediData[$h]), 1, -1); 48 } 49 } 50 } 51 } 52 53 54?> 55<!DOCTYPE html> 56<html> 57 58<head> 59<meta charset="UTF-8"> 60<title>favorite book</title> 61</head> 62 63<body> 64 <form method="POST" action="<?php echo($_SERVER['PHP_SELF']) ?>"> 65 <label for="name">名前:</label> 66 <input type="text" name="name" value="<?php echo $simEdit[1]; ?>"><br><br> 67 68 <label for="comment">コメント:</label> 69 <textarea name="comment" cols="30" rows="5"><?php echo $simEdit[2]; ?></textarea><br> 70 <input type="submit" value="投稿する"> 71 </form> 72 73 <br> 74 75 <form method="POST" action="<?php echo($_SERVER['PHP_SELF']) ?>"> 76 <label for="delete">削除対象番号</label><br> 77 <input type="text" name="delete"><br> 78 <input type="submit" value="削除する"> 79 </form> 80 81 <br> 82 83 <form method="POST" action="<?php echo($_SERVER['PHP_SELF']) ?>"> 84 <label for="edit">編集対象番号</label><br> 85 <input type="text" name="edit"><br> 86 <input type="submit" value="編集する"> 87 </form> 88 89<?php 90 91 $contents = file('mission_2-2.txt'); 92 foreach($contents as $line){ 93 $data = explode("<>", $line); 94 for($i = 0 ; $i < count($data); $i++){ 95 echo $data[$i]."<br>"; 96 97 } 98 } 99 100?> 101</body> 102</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/28 06:15
退会済みユーザー
2017/10/28 06:47