前提・実現したいこと
HTMLで入力フォームを用意する。入力項目は「名前」と「コメント」とする
フォームからの入力値を新しいテキストファイルに保存する。
その際、1行ごとに「(投稿番号)<>(名前)<>(コメント)<>(投稿日時)」と言う形で保存する
(例: 1<>社団太郎<>これはテストです<>2017/10/20 0:00:00)
投稿番号は、最後の投稿番号に+1したものが入ること。ただし、1回目の投稿なら「1」とする。
発生している問題・エラーメッセージ
投稿番号が全て「1」になってしまいます。できれば、投稿番号はテキストファイルに書かれた行の番号にしたいです。
該当のソースコード
PHP
1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4<title>mission2-1</title> 5</head> 6<body> 7 8 9 10 <form action = "mission_2-1.php" method="post"> 11 名前: 12 <input type="text" name="name"><br /> 13 14 コメント: 15 <input type="text" name="comment"><br /> 16 17 <input type="submit" value="送信" > 18 </form> 19 20 <?php 21 $filename = 'mission_2-1_syadan.txt'; #ここでテキストファイルに記述しています。 22 if(!empty($_POST["name"])) { 23 24 $fp = fopen($filename,'a'); 25 $dataFile = explode(" ",$filename) ; #ここがうまくいっていません! 26 fwrite($fp,count(file($dataFile[0]))."<>".$_POST["name"]."<>".$_POST["comment"]."<>".date( "Y年m月d日 H:i:s" )); 27 fwrite($fp,"\n"); 28 fclose($fp); 29 } 30 ?> 31 32 <?php 33#テキストファイルの内容をブラウザに表示させています。 34$fp = fopen('mission_2-1_syadan.txt', "r"); 35while ($line = fgets($fp)) { 36 $line2 = explode("<>",$line); 37 print_r($line2[0]." ".$line2[1]." ".$line2[2]." ".$line2[3]); 38 print_r("<br>"); 39} 40fclose($fp); 41 42?> 43 44</table> 45</body> 46</html> 47
試したこと
(count(file($dataFile)))のcountをsizeofにしてみたがうまくいかなかった。
###関数の実行
txt
11<>test<>test<>2018年10月12日 23:58:20 21<>test<>test<>2018年10月12日 23:58:32 31<>test<><>2018年10月12日 23:58:38 41<>test<>実験<>2018年10月12日 23:58:46 51<>リンゴ<>test<>2018年10月13日 12:52:09
期待される関数の実行
txt
11<>test<>test<>2018年10月12日 23:58:20 22<>test<>test<>2018年10月12日 23:58:32 33<>test<><>2018年10月12日 23:58:38 44<>test<>実験<>2018年10月12日 23:58:46 55<>リンゴ<>test<>2018年10月13日 12:52:09
回答3件
あなたの回答
tips
プレビュー