前提・実現したいこと
フォームから編集番号を受信→ファイル内の投稿番号を取得、比べて一致したらその投稿のコメント、名前を投稿フォームへ表示
投稿番号を$karabakoというテキストボックスに表示
名前、コメント、$karabakoのすべてが埋まっていたら編集として$karabakoを投稿番号として表示
$karabakoのみ空いていたら新規として投稿するプログラムを作っています
発生している問題・エラーメッセージ
形は出来上がっているのですが、どの番号を試しても新規になってしまい、編集が機能しません
該当のソースコード
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>mission_3-4</title> 6</head> 7<body> 8<?php 9 $filename="mission_3-4.txt"; 10 if (file_exists($filename)) { 11 $num = count(file($filename))+1; 12 } else { 13 $num = 1; 14 } 15 16 $filename="mission_3-4.txt"; 17 $namae= ($_POST["namae"]); 18 $comment = ($_POST["comment"]); 19 $date = date("Y年m月d日 H:i:s"); 20 $format = $num."<>".$namae."<>".$comment."<>".$date; 21 22 23 //削除処理 24 //削除フォームの送信の有無 25 if (isset($_POST["delete"])) { 26 $delete = $_POST["delete"]; 27 $delCon = file("mission_3-4.txt"); 28 29 $fp = fopen($filename, "w"); 30 for ($j = 0; $j < count($delCon); $j++) { 31 $delDate = explode("<>", $delCon[$j]); 32 33 if ($delDate[0] != $delete) { 34 fwrite($fp, $delCon[$j]); 35 36 } else { 37 fwrite($fp, "消去しました。\n"); 38 } 39 } 40 fclose($fp); 41 } 42 43 44 //編集準備 45 if(!empty($_POST['edit'])) { 46 $edit = $_POST['edit']; 47 $ret_array2=file($filename); 48 49 $fp2 = fopen($filename,'r'); 50 for($i=0; $i<count($ret_array2); $i++){ 51 $ex=explode("<>",$ret_array2[$i]); 52 if($i==$edit){ 53 $editnumber=$ex[0]; 54 $editnamae=$ex[1]; 55 $editcomment=$ex[2]; 56 } else { 57 58 } 59 }fclose($fp2); 60 } 61 //karabakoに入っていたら編集 62 if ((!empty($_POST['namae']))&&(!empty($_POST['comment']))&&(!empty($_POST['karabako']))) { 63 $karabako = ($_POST["karabako"]); 64 $edit = ($_POST["edit"]); 65 $ret_array3=file($filename); 66 $fp3 = fopen($filename,'w'); 67 for($b=0; $b<count($ret_array3); $b++){ 68 $ex2=explode("<>",$ret_array3[$b]); 69 if($ex2[0] == $karabako){ 70 fwrite($fp3,$karabako."<>".$namae."<>".$comment."<>".$date."\n"); 71 } 72 fclose($fp3); 73 } 74 } 75 //新規 namae commentが埋まっていて karabakoのみ空(新規)の場合 76 if ((!empty($_POST['namae'])) &&(!empty($_POST['comment'])) && (empty($_POST['karabako']))){ 77 $fp = fopen($filename,'a'); 78 fwrite($fp, $format.PHP_EOL); 79 fclose($fp); 80 } 81?> 82 83 <!--変数をvalueに入れて投稿フォーム記述--> 84 <form action="" method="post"> 85 <input type="text" name="namae" value="<?php print $editnamae;?>"> 86 <input type="text" name="comment" value="<?php print $editcomment;?>"> 87 <input type="submit" name="sousin"> 88 </form> 89 90 <!--編集判断材料text あとで隠す--> 91 <form action="" method="post"> 92 <input type="" name="karabako" value="<?php print $editnumber;?>"> 93 </form> 94 95 <!-- 削除フォームと編集フォーム--> 96 <form action="" method="post"> 97 <input type="text" name="delete" value="番号"> 98 <input type="submit" name="" value="削除"> 99 </form> 100 101 <form action="" method="post"> 102 <input type="text" name="edit" value="番号"> 103 <input type="submit" name="" value="編集"> 104 </form> 105<?php //ブラウザ表示 106 $filename="mission_3-4.txt"; 107 $lines = file($filename,FILE_IGNORE_NEW_LINES); 108 foreach($lines as $line){ 109 $lin = explode("<>", $line); 110 print $lin[0]." ".$lin[1]." ".$lin[2]." ".$lin[3]."<br/>"; 111 112} 113?> 114 115</body> 116</html>
試したこと
なんどかループ処理を書き直したり変数を見直しているのですがどこを直せばいいかわからないです…
何か思ったことがあればどんどん教えてください
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/27 15:38
2020/10/27 16:42
2020/10/28 02:45
2020/10/28 03:33
2020/10/28 06:39