現在、php掲示板を制作しています。
ファイルはindex.php
取り入れたい機能は投稿機能、編集機能、パスワード機能です。
投稿機能の部分で別テキストファイルに、
番号<>名前<>テキスト<>日付<>パスワード
の形で保存、編集することには成功しました。
そしてパスワード以外の部分だけ表示する段階ですが、ここで詰まってしまっています。
先程保存したテキストをexplode関数を使い<>で分裂させ、パスワード以外を表示させるつもりです。しかし、このexplodeがうまく働いていないようで、番号以外うまく読み取ってくれません。
このようになぜエラーなのかはわかっているのですが、対処法がわかりません。
分かる方いましたら助言をお願いしたいです
回答よろしくお願いします。
php
1<?php 2 3 4$file="receive.txt"; 5if (file_exists($file)) { 6 $count = count(file($file))+1; 7} else { 8 $count = 1; 9 } 10$err_msg1 = ""; 11$err_msg2 = ""; 12$err_msg7= ""; 13$message =""; 14$passmessage=""; 15$edfile = file('receive.txt'); 16$name=( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; 17$text=( isset( $_POST["text"] ) === true ) ?$_POST["text"]: ""; 18$password=( isset( $_POST["password"] ) === true ) ?$_POST["password"]: ""; 19$data=($count."<>".$name."<>".$text."<>" .date('H:i:s')."<>".$password."\n"); 20 21if ( isset($_POST["posting"] ) === true ) { 22 23 if ( $name === "" ) $err_msg1 = "名前を入力してください"; 24 25 if ( $text === "" ) $err_msg2 = "コメントを入力してください"; 26 27 if ( $password === "" ) $err_msg7 = "パスワードを入力してください"; 28 29 30 if( $err_msg1 === "" && $err_msg2 ==="" && $err_msg7 ===""){ 31 $fp = fopen( "receive.txt" ,"a" ); 32 fwrite( $fp , $data); 33 $message ="投稿に成功しました。"; 34 35 } 36 fclose($fp); 37 } 38 39 40 41 42 43 44// 編集フォーム 45 46$err_msg3 = ""; 47$err_msg4 = ""; 48$err_msg5 = ""; 49$err_msg9 = ""; 50$message2 =""; 51$edfile = file('receive.txt'); 52$renum=( isset( $_POST["renum"] ) === true ) ?$_POST["renum"]: ""; 53$rename=( isset( $_POST["rename"] ) === true ) ?$_POST["rename"]: ""; 54$retext=( isset( $_POST["retext"] ) === true ) ?$_POST["retext"]: ""; 55$pass2ed=( isset( $_POST["pass2ed"] ) === true ) ?$_POST["pass2ed"]: ""; 56$redata=($renum."<>".$rename."<>".$retext."<>" .date('H:i:s')."<>".$pass2ed."\n"); 57 58 59 60if ( isset($_POST["edit"] ) === true ) { 61 62 if ( $renum === "" ) $err_msg3 = "番号を入力してください"; 63 64 if ( $rename === "" ) $err_msg4 = "名前を入力してください"; 65 66 if ( $retext === "" ) $err_msg5 = "コメントを入力してください"; 67 68 if ( $pass2ed === "" ) $err_msg9 = "パスワードを入力してください"; 69 70 71 if( $err_msg3 === "" && $err_msg4 === "" && $err_msg5 === "" && $err_msg9 === ""){ 72 $fp = fopen("receive.txt", "w"); 73 for ($i = 0; $i < count($edfile); $i++) { 74 $editraw = explode("<>", $edfile[$i]); 75 76 if ($editraw[0] !== $renum && $editraw[4] !== $pass2ed) { 77 fwrite($fp, $edfile[$i]); 78 } 79 else{ 80 fwrite($fp, $redata); 81 $message2 ="編集に成功しました。"; 82 } 83 } 84 } 85 } 86 87 // 消去フォーム 88 $err_msg6 = ""; 89 $err_msg8 = ""; 90 $delfile = file('receive.txt'); 91 $delete=( isset( $_POST["delete"] ) === true ) ?$_POST["delete"]: ""; 92 $pass3del=( isset( $_POST["pass3del"] ) === true ) ?$_POST["pass3del"]: ""; 93 94 95 if ( isset($_POST["delete"] ) === true ) { 96 97 if ( $delete === "" ) $err_msg6 = "番号を入力してください"; 98 99 if ( $pass3del === "" ) $err_msg8 = "パスワードを入力してください"; 100 101 if( $err_msg6 === "" && $err_msg8 === ""){ 102 $fp = fopen("receive.txt", "w"); 103 for ($i = 0; $i < count($delfile); $i++) { 104 $deldata = explode("<>", $delfile[$i]); 105 if ($deldata[0] !== $delete && $deldata[4] !== $pass3del ) { 106 fwrite($fp, $delfile[$i]); 107 } else { 108 fwrite($fp, "消去しました。\n"); 109 } 110 } 111 } 112 } 113 114 115 116?> 117 118<!DOCTYPE html> 119<html lang="ja"> 120<head> 121<meta charset="UTF-8"> 122<title>掲示板</title> 123 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 124 <link rel="stylesheet" href="./styles.css" type="text/css"> 125</head> 126<body> 127<h1>掲示板</h1> 128<section> 129 <h2>新規投稿</h2> 130 <form action="index.php" method="post"> 131 名前 : <input type="text" name="name" > <?php echo $err_msg1; ?><br> 132 コメント: <input type="text" name="text" > <?php echo $err_msg2; ?><br> 133 パスワードを設定 <input type="text" name="password" > <?php echo $err_msg7; ?> 134 <input type="submit" value="投稿" name="posting"><br> 135 <?php echo $message; ?> 136 </form> 137 138 139 <h2>投稿編集</h2> 140 <form action="index.php" method="post"> 141 編集番号 <input type="number" name="renum"> <?php echo $err_msg3; ?><br> 142 名前: <input type="text" name="rename" ><?php echo $err_msg4; ?><br> 143 コメント: <input type="text" name="retext" > <?php echo $err_msg5; ?><br> 144 パスワードを入力 <input type="text" name="pass2ed" ><?php echo $err_msg9; ?><br> 145 <input type="submit" value="編集" name="edit"><br> 146 <?php echo $message2; ?> 147 </form> 148 149 150 151 152 <h2>消去</h2> 153 <form action="index.php" method="post"> 154 消去番号 <input type="number" name="delete"> <?php echo $err_msg6; ?><br> 155 パスワードを入力 <input type="text" name="pass3del" > <?php echo $err_msg8; ?><br> 156 <input type="submit" value="消去"> <br> 157 </form> 158 159</section> 160<section> 161 <h2>投稿一覧</h2> 162</section> 163 164<?php 165// 読み込むファイル名の指定 166$file_name = "receive.txt"; 167// ファイルを全て配列に入れる 168$ret_array = file( $file_name ); 169 170// 取得したファイルデータ(配列)を全て表示する 171// $echo_arrays = implode("\n", $ret_array); 172for( $i = 0; $i < count($ret_array); ++$i ) { 173 $echo_array = explode("<>", trim($ret_array[$i])); 174 175// // 配列を順番に表示する 176 echo ( $echo_array[0]."<>".$echo_array[1]."<>".$echo_array[2]."<>".$echo_array[3]."<br />\n" ); 177} 178 179 ?> 180 181 182</body> 183</html>
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 }
回答2件
あなたの回答
tips
プレビュー