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