前提・実現したいこと
今回 if(isset($_POST[ 'name' ])&&isset($_POST[ 'opinion' ]))からif分岐させることで、新規入力と編集を分けております。理論上は、名前とコメントフォームに値が入力されると$_POST[ 'name' ]と$_POST[ 'opinion' ]に値が入力される仕組みとなっており、その結果
if(empty($_POST ['edit_post' ])){
$fp = fopen($filename,"a"); $date = date('Y-m-d H:i:s'); $numSecond = count(file($filename))+1; fwrite($fp,$numSecond."<>".$name."<>".$opinion."<>".$date."\n"); fclose($fp);の処理が行われ、ファイルに上書きが行われ、以下コメントの下にechoを使って出力されるはずなのですが、うまくいきません。また編集フォームに値が入力され、編集ボタンが押されることで、入力フォームに数値が代入され、同時に$_POST ['edit_post' ]にも値が入力されif文のelseへと分岐され、その結果編集が行われるというものなのですが、うまくいきません、原因の予想ですが、'edit_post' への値の出力は名前、コメントと同じformで行っているため、空となる場合を設定しなくてはいけないのではと考えております。phpをphpを触って約2週間ほどです。よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージはないです。
該当のソースコード
php
1 2```<?php 3 $filename = "kadai_2_3.txt"; 4 $editName = ''; 5 $editComment = ''; 6 7 if(isset($_POST[ 'name' ])&&isset($_POST[ 'opinion' ])){ 8 $name = $_POST[ 'name' ]; 9 $opinion = $_POST[ 'opinion' ]; 10 $date = date('Y-m-d H:i:s'); 11 12 13 14 15 16 if(empty($_POST ['edit_post' ])){ 17 18 $fp = fopen($filename,"a"); 19 20 $date = date('Y-m-d H:i:s'); 21 $numSecond = count(file($filename))+1; 22 23 fwrite($fp,$numSecond."<>".$name."<>".$opinion."<>".$date."\n"); 24 fclose($fp); 25 }else{ 26 $fileLaw = file($filename, FILE_IGNORE_NEW_LINES); 27 $fp = fopen($filename,"w"); 28 $editNum = $_POST[ 'edit_post' ]; 29 for($i = 0; $i < count($fileLaw); $i++){ 30 $line = explode("<>",$fileLaw[$i]); 31 if($editNum == $line[0]){ 32 fwrite($fp,$edit."<>".$name."<>".$opinion."<>".$date."\n"); 33 }else{ 34 fwrite($fp,$fileLaw[$i]); 35 } 36 fclose($fp); 37 38 39 } 40 } 41 } 42 43 44 if(isset($_POST[ 'delete' ])){ 45 $delete = $_POST[ 'delete' ]; 46 $fileLaw = file($filename, FILE_IGNORE_NEW_LINES); 47 $fp = fopen($filename,"w"); 48 49 for($n = 0; $n < count($fileLaw); $n++){ 50 $line = explode("<>",$fileLaw[$n]); 51 $leadNumber = $line[0]; 52 53 if($leadNumber != $delete){ 54 55 fwrite($fp,$line[0]."<>".$line[1]."<>".$line[2]."<>".$line[3]."\n"); 56 57 } 58 59 } 60 fclose($fp); 61 } 62 63 if(isset($_POST[ 'edit' ])){ 64 $edit = $_POST[ 'edit' ]; 65 $fileLaw = file($filename, FILE_IGNORE_NEW_LINES); 66 for($n = 0; $n < count($fileLaw); $n++){ 67 $line = explode("<>",$fileLaw[$n]); 68 $leadNumber = $line[0]; 69 70 if($leadNumber == $edit){ 71 $editName = $line[1]; 72 $editComment = $line[2]; 73 } 74 } 75 76 77 78 79 } 80 81 82 83 84 85 86 87 88 89 90 91?> 92<!DOCTYPE html> 93<html> 94<head> 95<meta charset="utf-8"> 96<title></title> 97</head> 98<body> 99 100<form action="" method="POST"> 101<input type="hidden" name="edit_post" value="<?php echo $edit; ?>"> 102 103<p>お名前:<input type="text" name="name" value="<?php echo $editName; ?>"> 104 105</p> 106 107<p>コメント:</p> 108<p><textarea type="text" name="opinion" cols="50" rows="5" value="<?php echo $editComment; ?>"></textarea></p> 109 110<p><input type="submit" name="submitBtn" value="送信"></p> 111</form> 112 113<form action="" method="POST"> 114<p>削除したい番号を指定:</p> 115<p><input type="text" name="delete"> 116<input type ="submit" name="deleteBtn" value="削除"></p> 117</form> 118</body> 119</html> 120 121<form action="" method="POST"> 122<p>編集したい番号を指定:</p> 123<p><input type="text" name="edit"> 124<input type ="submit" name="editBtn" value="編集"></p> 125 126</form> 127</body> 128</html> 129 130<p>以下コメント</p> 131 132<?php 133 if(file_exists($filename)){ 134 135 136 137 $fp = fopen($filename, 'r'); 138 139 while (!feof($fp)) { 140 141 $txt = fgets($fp); 142 143 echo $txt.'<br>'; 144 145 } 146 } 147 148 149 150 151 152 153 154?>
質問文を修正してソースコードを<code>ブロックの中に入れてください。
タイトルでエラーと言っておいてエラーメッセージが無いとはどういうこと?
単に「うまくいかない」とするのではなく、想定結果と実際の出力がどう違うか等もう少し詳しく説明してください。
申し訳ございません、出力結果的にエラーは出ないのですが、今回自分の予想と意図しない結果となってしまったのでエラーという言葉を使わせていただきました。また、想定では名前とコメントを入力すると、以下コメントの下にその記載した内容が出力されるはずなのですが、まったく出てきません
まだ質問が「受付中」になっていますが、いったんご自身の回答をもって「解決済」にされてはいかがでしょうか。
回答2件
あなたの回答
tips
プレビュー