質問編集履歴

2 入力ミス

yusuke_00

yusuke_00 score 20

2016/11/20 23:34  投稿

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

    33764 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    20045 questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1 初心者マーク追加

yusuke_00

yusuke_00 score 20

2016/11/20 23:26  投稿

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

    33764 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    20045 questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る