質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

HTML

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

Q&A

解決済

3回答

1319閲覧

自作掲示板のエラーが直せない

naberius

総合スコア11

PHP

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

HTML

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

0グッド

0クリップ

投稿2018/06/29 05:43

前提・実現したいこと

掲示板を作ったのですが問題なく動いてるのにエラーが表示されます。

発生している問題・エラーメッセージ

Notice: Undefined index: color in C:\xampp\htdocs\practice\text_board\textboard_arrange.php on line 21

該当のソースコード

PHP

1<?php 2 3$filename = 'counter.dat'; 4 5$fp1 = fopen($filename, "r+"); 6$count = fgets($fp1,32); 7$count++; 8fseek($fp1, 0); 9fputs($fp1, $count); 10flock($fp1, LOCK_UN); 11fclose($fp1); 12 13 14//最初に変数を定義しておかないとエラーになる 15$err_msg1 = ""; 16$err_msg2 = ""; 17$message = ""; 18$name = (isset($_POST["name"]) === TRUE) ?$_POST["name"]:""; 19$comment = (isset($_POST["comment"]) === TRUE) ?trim($_POST["comment"]):""; 20$_POST["date"] = date('Y/m/d H:i:s'); 21$color = $_POST["color"]; 22 23 24//投稿がある場合にのみ処理を行う 25if(isset($_POST["send"]) === true){ 26 if($name === "")$err_msg1 = '名前を入力してください'; 27 28 if($comment === "")$err_msg2 = 'コメントを入力してください'; 29 30 if($err_msg1 === "" && $err_msg2 === ""){ 31 $fp2 = fopen("data.txt", "a"); 32 fwrite($fp2, $name."\t".$comment."\t".date('Y/m/d H:i:s')."\t".$color."\r\n"); 33 $message = '書き込みに成功しました'; 34 } 35} 36$fp2 = fopen("data.txt", "r"); 37 38$dataArr = array(); 39while($res = fgets($fp2)){ 40 $tmp = explode("\t", $res); 41 $arr = array( 42 "name"=>$tmp[0], 43 "comment"=>$tmp[1], 44 "date"=>$tmp[2], 45 "color"=>$tmp[3], 46 ); 47 $dataArr[] = $arr; 48} 49?> 50 51<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.ong/TR/html4/loose.dtd"> 52<html lang="ja"> 53 <head> 54 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 55 <title>掲示板</title> 56 </head> 57 <body bgcolor="#9999FF"> 58 <table border="1"> 59 <tr><td><?php echo $count;?></td></tr></table> 60 <h1><center>一行掲示板</center></h1> 61 <h3><center>思いつくまま、一言メッセージをどうぞ。</center></h3> 62 <?php echo $message; ?> 63 <table border="2" bgcolor="#9999FF"><tr> 64 <form action="" method="post"> 65 <td>名前</td><td><input type="text" name="name" value="<?php echo $name;?>"></td></tr> 66 <?php echo '<font color="red">'.$err_msg1.'</font>';?><br> 67 <tr><td>コメント</td><td><textarea name="comment" row="4" cols="40"><?php echo $comment;?></textarea></td></tr> 68 <?php echo '<font color="red">'.$err_msg2.'</font>';?><br> 69 <tr> 70 <td> 71 <label for="color">文字の色</label> 72 <select name="color"> 73 <option value="#000000"></option> 74 <option value="#FFFFFF"></option> 75 <option value="#FF0000"></option> 76 <option value="#0000FF"></option> 77 <option value="#00FF00"></option> 78 <option value="#660099"></option> 79 <option value="#FF3300"></option> 80 </select> 81 <td><input type="submit" name="send" value="クリック"></td> 82 </form></table> 83 <br> 84 <hr> 85 <br> 86 <dl> 87 <?php foreach($dataArr as $data):?> 88 <p><span><font color="<?php echo htmlspecialchars($data["color"], ENT_QUOTES, 'UTF-8');?>"><?php echo htmlspecialchars($data["name"], ENT_QUOTES, 'UTF-8');?></font></span> > <span><font color="<?php echo htmlspecialchars($data["color"], ENT_QUOTES, 'UTF-8');?>"><?php echo htmlspecialchars($data["comment"], ENT_QUOTES,'UTF-8');?></font></span><span>(<?php echo $data["date"];?>)</span></p> 89 <?php endforeach;?> 90 </dl> 91 </body> 92</html> 93

試したこと

補足情報(FW/ツールのバージョンなど)

コメントを投稿すると消えます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

php

1$color = $_POST["color"];

php

1// php7 2$color = $_POST["color"] ?? ''; 3 4// php < 7 5$color = isset($_POST["color"]) ? $_POST["color"] : ''; 6 7// または 8$color = filter_input(INPUT_POST, 'color');

投稿2018/06/29 05:49

編集2018/06/29 05:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naberius

2018/06/29 06:16

二番目ので問題なくエラーが消えました。 同じでよかったんですね・・・ありがとうございました!
KazuhiroHatano

2018/06/30 04:44

DreamWeaverはいまだにPHPのバージョンを7にしても??を構文エラーにしてれる、function():returnTypeも<=>もyield fromもエラー、さすが天下のAdobeさんやで(白目) ただの愚痴です
退会済みユーザー

退会済みユーザー

2018/06/30 06:48

> KazuhiroHatanoさん 自分は10年くらい前にDreamweaverからNetbeansに移行しました。DreamweaverはPHP開発に向いてないですね。Netbeans8.2ではPHP7.0には対応していますよ。
guest

0

$_POST["color"]が、フォームデータが入っていないせいでデータが入ってないために、
参照しようとしてWarningが表示されているものと思われます。

array_key_existsでcolorパラメータを受信しているか点検してから読み出すか、
そもそも送信するフォームでcolorパラメータのデフォルト値を設定して空で送信しないようにすると良いでしょう。

if (array_key_exists('color', $_POST)) { $color = $_POST['color']; } else { $color = '$000000'; // デフォルト値を自分で詰める場合 }

投稿2018/06/29 05:46

編集2018/06/29 05:49
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naberius

2018/06/29 05:59

書いていただいたソースで直りました! ありがとうございます!
guest

0

回答ではないです

この掲示板、このまま一般公開してはまずいスクリプトになっています。
【PHP初心者向け】セキュアな掲示板を最小構成から作る
最低限ですが、必要な対応と考慮ポイントが記述してあるので、読んでおくとイイです。

投稿2018/06/30 04:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問