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

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

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

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

HTML

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

Q&A

解決済

2回答

3182閲覧

掲示板作成でのエラーについて

Rye

総合スコア13

PHP

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

HTML

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

0グッド

0クリップ

投稿2018/12/20 03:50

前提・実現したいこと

php、javascript、html、css、csvで簡易掲示板を作成しています。
ログイン画面で入力した名前とアドレスを上部に配置し、その下に投稿ナンバー、投稿者の名前、アドレス、コメントを表示させ、同時に修正ボタン(修正画面に飛ぶ)、削除ボタン(csvからも削除する)を配置し、一番下にテキストエリアと送信ボタンを置くというものを作っています。

教えていただきたいこと
・投稿ナンバーのつけ方
・投稿者の名前、アドレス、コメントが表示されず、表示されても全てログイン者のものに書き換わってしまい、csvまで書き換わるのでその解決方法
・修正、削除の仕方

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

投稿者の名前、アドレス、コメントのエラーです。

Notice: Undefined variable: user in C:\xampp\htdocs\bbs.php on line 38 Notice: Undefined variable: user in C:\xampp\htdocs\bbs.php on line 38 Notice: Undefined variable: message in C:\xampp\htdocs\bbs.php on line 39

該当のソースコード

<?php $dataFile = 'bbs.csv'; if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['message']) && isset($_POST['user']) && isset($_POST['email'])){ $message = $_POST['message']; $user = $_POST['user']; $email = $_POST['email']; $newData = $user. "," . $email. "," . $message. "\n"; $fp = fopen($dataFile, 'a'); fwrite($fp, $newData); fclose($fp); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTFR-8" /> <title>掲示板</title> <link rel="stylesheet" type="text/css" media="screen" href="bbs.css" /> <script type = "text/javascript" src = "bbs.js"></script> </head> <body> <h1>BBS</h1> <form action="" method="post" > 名前:<input type="hidden" name="user" value="<?=$_POST['user']?>"><?php echo $_POST['user']; ?> E-mail:<input type="hidden" name="email" value="<?=$_POST['email']?>"><?php echo $_POST['email']; ?> <h2>投稿一覧</h2> <ul> <li> <?php echo ($user); ?> <?php echo ($email); ?> <?php echo ($message); ?><input type="button" name="shusei" value="修正" onclick = "location.href = 'shusei.php'"> <input type="button" name="sakujo" value="削除"></li> </ul> コメント:<textarea name="message" rows="10" cols="70"></textarea> <input type="submit" name="soushin" value="送信"> </form> </body> </html>

試したこと

投稿ナンバーはforeachを使って見たのですが、数字が1234...と横並びに出てしまい他の簡単な方法を探しています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

エラーの解消自体はすぐです。
Notice: Undefined variable: user
→userは未定義の変数です

つまり、定義されないまま変数が使われようとしている際に出るエラーです。
(これと配列参照のときにでる Undefined index ~~ はセットで覚えておいてください)

$userという変数は
下記の条件のときにしか定義されていません。

php

1if($_SERVER['REQUEST_METHOD'] == 'POST' && 2 isset($_POST['message']) && 3 isset($_POST['user']) && 4 isset($_POST['email'])){

つまり、この条件に当てはまらないときには未定義の変数となるわけです。他も同様ですね。

例えば先に下記のように空文字でも仮に入れておけばエラーは発生しません。

php

1$user = '';

ちなみにエラーと「教えていただきたいこと」はほぼ無関係と言って良いです。
複数あるようですし、ここで全て回答とするのは非常に負荷が高く、また内容次第ではデバッグ依頼・作業依頼となりえる内容です。

要件をもう少し細分化し、デバッグを効果的に使い1つ1つこなしていきましょう。

ちなみにPHPのバージョンは質問の際に提示必須です。
5系が7系かでも違いますし、それぞれのマイナーバージョンで大きく違う機能もチラホラあります。

投稿2018/12/20 04:05

m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2018/12/20 15:10

isset($_POST['message'], $_POST['user'], $_POST['email']) こんな風に書けますよ。
m.ts10806

2018/12/20 16:17

補足ありがとうございます。 その部分は質問者さんのコードの引用ですね。 短く書けるに越したことはないです。
Rye

2018/12/23 12:09

お二人ともありがとうございます。 何とか解決出来ました! かなり焦っていたので、質問の仕方党、色々とおかしかったかと思いますが、真摯にアドバイスを下さり、感謝しております。
m.ts10806

2018/12/23 21:44

調べればすぐに解決策が出るような内容は低評価がつきやすいです。 まずは調べましょう。エラーメッセージはどうすれば解決するか教えてくれています
guest

0

以下の記事にやりたいだろうことと、これから躓くであろうことが記述されています。
【PHP初心者向け】セキュアな掲示板を最小構成から作る

投稿2018/12/20 03:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Rye

2018/12/23 12:12

ありがとうございます! 何とか解決する事が出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問