###前提・実現したいこと
- php7.0.12にて、掲示板作成をしてる
- 出力先はcsvである。
- コメントを未入力の場合のエラー表示が何故か出来ない。コメント入力してもechoでエラーを表示してしまう。
- csvにて、最後尾のnoというカラムの取得について、いまいちわからない。
- 現在、以下の3ファイルから構成している。
・BulletinBoard.php(csvを操作する)
・controller.php(BulletinBoard.phpから受け取った値をhtmlに出力)
・bulletin_board_top.html(view)
####BulletinBoard.php
php
1<?php 2date_default_timezone_set('Asia/Tokyo'); 3$timestamp = time() ; 4$now_day = date("Y/m/d H:i:s",$timestamp); 5 6// 書き込み 7if (isset($_POST['comment'])) { 8 $comment = $_POST['comment']; 9 $file = fopen("../csv/test.csv", "a"); 10 $c_records = array( 11 1, 12 $now_day, 13 $comment 14 ); 15 fputcsv($file,$c_records); 16 fclose($file); 17 header("Location:BulletinBoard.php"); 18 exit(); 19}else { 20} 21 22// csv表示 23$filepath ="../csv/test.csv"; 24$file = new SplFileObject($filepath); 25$file->setFlags(SplFileObject::READ_CSV); 26foreach ($file as $line) { 27 if (!is_null($line[0])) { 28 $records[] = $line; 29 } 30} 31if (isset($records)) { 32 $_POST['records'] = $records; 33} 34 35$err_msg = (isset($comment)) ? true : false; 36$_POST['err_msg'] = $err_msg; 37include('../template/BulletinBoard/bulletin_board_top.html'); 38?>
####controller.php
php
1<?php 2if (isset($_POST['records'])) { 3 echo "<center>"; 4 echo "<table border=\"0\">"; 5 $ary = $_POST['records']; 6 foreach ($ary as $key => $value) { 7 echo "<tr>"; 8 echo "<td>No.</td>"; 9 echo "<td>".$ary[$key][0]."</td>"; 10 echo "<td>日時</td>"; 11 echo "<td>".$ary[$key][1]."</td>"; 12 echo "</tr>"; 13 echo "<tr>"; 14 echo "<td align=\"center\" colspan=\"4\">コメント</td>"; 15 echo "</tr>"; 16 echo "<tr>"; 17 echo "<td colspan=\"4\">".$ary[$key][2]."</td>"; 18 echo "</tr>"; 19 } 20 echo "</table>"; 21 echo "<center>"; 22} 23 24if (isset($err_msg)) { 25 $err_msg = $_POST['err_msg']; 26 if ($err_msg == true) { 27 echo ""; 28 }else { 29 echo "コメントを入力してください。"; 30 } 31} 32?>
####bulletin_board_top.html
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>課題:掲示板</title> 6 </head> 7 <body> 8 <center> 9 <h1>課題:掲示板</h1> 10 <?php include("../lib/controller/controller.php"); ?> 11 <form action="BulletinBoard.php" method="post"> 12 <textarea name="comment" rows="8" cols="40"></textarea> 13 <input type="submit" name="submit" value="投稿"> 14 </form> 15 </center> 16 </body> 17</html>
#####test.csv
csv
11,"2016/11/20 22:26:51",コメント1 21,"2016/11/20 22:40:49",コメント2 31,"2016/11/20 22:42:12",コメント3 41,"2016/11/20 22:42:16",コメント4
###試したこと
BulletinBoard.phpにあります、書き込みの処理の時issetでコメントが入ってるか、どうかを判断する際
php
1if(isset($_POST['comment']){ 2省略 3 $err = ""; 4 $_POST['err'] = $err; 5}else{ 6 $err = "コメントを入力してください"; 7 $_POST['err'] = $err; 8}
をし、controllerのほうで、errをうけとり、表示したのですが、comment入力した際も、"コメントを入力してください"と出てしまう。
同じく、boolean型で処理し、controllerで処理するも、同じ結果に。
また、コメント書き込みの際に、noのカラムの最終番号を取得し、最終番号+1し、csvに追加していきたいのですが、良い方法が思いつきません。アドバイスをください。
以前
BulletinBoard.phpでの処理の流れを
ファイル読み取り→書き込み。としていて、ファイル読み取りの際、ラストnoを取得出来たのですが、
今回
書き込み→ファイル読み取り。の流れにしましたので、悩んでおります。
ご指導賜り願います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/20 17:23
2016/11/20 17:34