現在phpで掲示板を作っています。
ファイルは"231536_receive.txt"とindex.phpの二つで構成していて、index.phpの中で入力した内容を"231536_receive.txt"に保存して表示する形にしています。
コード全体は下に貼っています。
今までは段落数で投稿番号をつけていたのですが、投稿番号の最大値を取得して最大値にプラス1をした投稿番号をつけたいと考えています。
そこで、コードを書いたのですが、なぜか1が二回登場してしまいます。
このバグの処理の仕方がわかりません。
力を貸していただきたいです。
よろしくお願いします。
2個目のコードも試しましたがまたもや1が二回でで来てしまいました。
三つ目のコードも試しましたが、同じく1が二回出てしまいます。
コードをクロームの検証機能で検証したところ、1が二個出現する一つ目の1に*がついておりカーソルを合わせるとufeffが出てきました。これは解決の糸口になるのでしょうか?
php
1$file="231536_receive.txt"; 2$count=1; 3$files = file('231536_receive.txt'); 4 5if (file_exists($file)) { 6 // 2ループ処理 7 for ($i=1; $i<count($files); $i++){ 8 $numraw = explode("<>", trim($files[$i])); 9 $numpoint = $numraw[0]; 10 // 最大値より配列の値が大きければ上書きをする 11 if($count <= $numpoint){ 12 $count=$numpoint; 13 $count=++$count; 14 } 15 } 16} else { 17 $count = 1; 18 }
php
1$file="231536_receive.txt"; 2if (file_exists($file)) { 3 $files = file('231536_receive.txt'); 4 $lastLine = $files[count($files) -1]; 5 $num = explode('<>', $lastLine)[0]; 6 $count=(int)$num +1; 7 8} else { 9 $count = 1; 10 } 11 12
php
1$file="231536_receive.txt"; 2 3 if(file_exists($file)) 4 { 5 $text_file = file($file);//ファイルがあったら、ファイルを配列化する 6 $last_toukou=end($text_file);//最後の投稿の要素を取り出す 7 $divide_end_number=explode("<>",$last_toukou);//最後の投稿の要素を、さらに<>で分割する 8 $count=(int)$divide_end_number[0]+1;//投稿番号の部分を取り出し、投稿番号が「最後の投稿の番号+1」の数になるように設定 9 10 } 11 else 12 { 13 $count=1;//ファイルがなかったら「投稿番号=1」 14 }; 15
php
1 2 3<?php 4 5 6// $file="231536_receive.txt"; 7// if (file_exists($file)) { 8// $count = count(file($file))+1; 9// } else { 10// $count = 1; 11// } 12 13$file="231536_receive.txt"; 14$count=1; 15$files = file('231536_receive.txt'); 16 17if (file_exists($file)) { 18 // 2ループ処理 19 for ($i=1; $i<count($files); $i++){ 20 $numraw = explode("<>", trim($files[$i])); 21 $numpoint = $numraw[0]; 22 // 最大値より配列の値が大きければ上書きをする 23 if($count <= $numpoint){ 24 $count=$numpoint; 25 $count=++$count; 26 } 27 } 28} else { 29 $count = 1; 30 } 31 32 33$err_msg1 = ""; 34$err_msg2 = ""; 35$err_msg7= ""; 36$message =""; 37$passmessage=""; 38$edfile = file('231536_receive.txt'); 39$name=( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; 40$text=( isset( $_POST["text"] ) === true ) ?$_POST["text"]: ""; 41$password=( isset( $_POST["password"] ) === true ) ?$_POST["password"]: ""; 42$data=($count."<>".$name."<>".$text."<>" .date('H:i:s')."<>".$password."\n"); 43 44if ( isset($_POST["posting"] ) === true ) { 45 if ( $name === "" ) $err_msg1 = "名前を入力してください"; 46 if ( $text === "" ) $err_msg2 = "コメントを入力してください"; 47 if ( $password === "" ) $err_msg7 = "パスワードを入力してください"; 48 if ( ($err_msg1 === "") && ($err_msg2 === "") && ($err_msg7 === "") ) { 49 $fp = fopen( "231536_receive.txt" ,"a" ); 50 fwrite($fp , $data); 51 $message = "投稿に成功しました。"; 52 fclose($fp); 53 } 54} 55 56 57 58 59 60 61// 編集フォーム 62$err_msg3 = ""; 63$err_msg4 = ""; 64$err_msg5 = ""; 65$err_msg9 = ""; 66$message2 =""; 67$edfile = file('231536_receive.txt'); 68$renum=( isset( $_POST["renum"] ) === true ) ?$_POST["renum"]: ""; 69$rename=( isset( $_POST["rename"] ) === true ) ?$_POST["rename"]: ""; 70$retext=( isset( $_POST["retext"] ) === true ) ?$_POST["retext"]: ""; 71$pass2ed=( isset( $_POST["pass2ed"] ) === true ) ?$_POST["pass2ed"]: ""; 72$redata=($renum."<>".$rename."<>".$retext."<>" .date('H:i:s')."<>".$pass2ed."\n"); 73 74if ( isset($_POST["edit"] ) === true ) { 75 76 if ( $renum === "" ) $err_msg3 = "番号を入力してください"; 77 if ( $rename === "" ) $err_msg4 = "名前を入力してください"; 78 if ( $retext === "" ) $err_msg5 = "コメントを入力してください"; 79 if ( $pass2ed === "" ) $err_msg9 = "パスワードを入力してください"; 80 81 if ( ($err_msg3 === "") && ($err_msg4 === "") && ($err_msg5 === "") && ($err_msg9 === "") ) { 82 $fp = fopen("231536_receive.txt", "w"); 83 for ($i = 0; $i < count($edfile); $i++) { 84 $editraw = explode("<>", trim($edfile[$i])); // <-- trim()をつけないとパスワードに改行コードがツイたまま。 85 86 if ($editraw[0] !== $renum) { 87 fwrite($fp, $edfile[$i]); 88 } 89 else { // <-- 投稿番号と編集番号が一致 90 if ($editraw[4] === $pass2ed){ 91 fwrite($fp, $redata); 92 $message2 = "編集に成功しました。"; 93 } 94 else { 95 fwrite($fp, $edfile[$i]); 96 $message2 = "編集に失敗しました。パスワードが間違っています。"; 97 } 98 } 99 } 100 if ($message2 === '') { 101 $message2 = "編集に失敗しました。編集番号が一致しませんでした。"; 102 } 103 } 104} 105 // 消去フォーム 106 $err_msg6 = ""; 107 $err_msg8 = ""; 108 $delfile = file('231536_receive.txt'); 109 $delete = ( isset( $_POST["delete"] ) === true ) ? $_POST["delete"] : ""; 110 $pass3del = ( isset( $_POST["pass3del"] ) === true ) ? $_POST["pass3del"] : ""; 111 112 113 114 if ( isset($_POST["delete"] ) === true ) { 115 if ( $delete === "" ) $err_msg6 = "番号を入力してください"; 116 if ( $pass3del === "" ) $err_msg8 = "パスワードを入力してください"; 117 118 if ( ($err_msg6 === "") && ($err_msg8 === "") ) { 119 $fp = fopen("231536_receive.txt", "w"); 120 for ($i = 0; $i < count($delfile); $i++) { 121 $deldata = explode( "<>", trim($delfile[$i]) ); 122 if ( $deldata[0] !== $delete ) { 123 fwrite($fp, $delfile[$i]); 124 } 125 else { 126 if ($deldata[4] === $pass3del) { 127 $err_msg6 = $delete . "番の消去に成功しました。"; 128 129 } 130 else { 131 $err_msg8 = $delete . "番の消去に失敗しました。パスワードが間違っています。"; 132 fwrite($fp, $delfile[$i]); 133 } 134 } 135 } 136 if ( ($err_msg6 === '') && ($err_msg8 === '') ) { 137 $err_msg6 = $delete . '番に一致するものを見つけられませんでした。'; 138 } 139 } 140 } 141 142?> 143 144<!DOCTYPE html> 145<html lang="ja"> 146<head> 147<meta charset="UTF-8"> 148<title>掲示板</title> 149 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 150 <link rel="stylesheet" href="./styles.css" type="text/css"> 151</head> 152<body> 153<h1>掲示板</h1> 154<section> 155 <h2>新規投稿</h2> 156 <form action="index.php" method="post"> 157 名前 : <input type="text" name="name" > <?php echo $err_msg1; ?><br> 158 コメント: <input type="text" name="text" > <?php echo $err_msg2; ?><br> 159 パスワードを設定 <input type="text" name="password" > <?php echo $err_msg7; ?> 160 <input type="submit" value="投稿" name="posting"><br> 161 <?php echo $message; ?> 162 </form> 163 164 165 <h2>投稿編集</h2> 166 <form action="index.php" method="post"> 167 編集番号 <input type="number" name="renum"> <?php echo $err_msg3; ?><br> 168 名前: <input type="text" name="rename" ><?php echo $err_msg4; ?><br> 169 コメント: <input type="text" name="retext" > <?php echo $err_msg5; ?><br> 170 パスワードを入力 <input type="text" name="pass2ed" ><?php echo $err_msg9; ?><br> 171 <input type="submit" value="編集" name="edit"><br> 172 <?php echo $message2; ?> 173 </form> 174 175 176 177 178 <h2>消去</h2> 179 <form action="index.php" method="post"> 180 消去番号 <input type="number" name="delete"> <?php echo $err_msg6; ?><br> 181 パスワードを入力 <input type="text" name="pass3del" > <?php echo $err_msg8; ?><br> 182 <input type="submit" value="消去"> <br> 183 </form> 184 185</section> 186<section> 187 <h2>投稿一覧</h2> 188</section> 189 190<?php 191// 読み込むファイル名の指定 192$file_name = "231536_receive.txt"; 193// ファイルを全て配列に入れる 194$ret_array = file( $file_name ); 195 196// 取得したファイルデータ(配列)を全て表示する 197for( $i = 0; $i < count($ret_array); ++$i ) { 198 $echo_array = explode("<>", $ret_array[$i]); 199 200// // 配列を順番に表示する 201 echo ( $echo_array[0]."<>".$echo_array[1]."<>".$echo_array[2]."<>".$echo_array[3]."<br />\n" ); 202} 203 204 ?> 205 206 207</body> 208</html> 209 210コード
回答4件
あなたの回答
tips
プレビュー