前提・実現したいこと
掲示板のようなものを作成し、投稿をDBで管理し追加と表示をしたいです。
下記の条件を満たしたいです。
・利用者が名前とコメントを入力し、発言できる。
・利用者の過去発言内容をデータベースで管理する。
・全ての利用者の過去発言を一覧で見ることができ、「名前、コメント、発言日時」の最低限3つを1行ずつ表示する。
・利用者の名前は最大20文字以内とし、それ以上の場合はエラーメッセージを表示し、発言できないようにする。
・利用者のコメントは最大100文字以内とし、それ以上の場合はエラーメッセージを表示し、発言できないようにする。
・利用者の名前、コメントのどちらか又は両方が未入力だった場合、エラーメッセージを表示し、発言できないようにする。
発生している問題・エラーメッセージ
POSTでデータの取得もできていないように感じます。 エラーも表示されないので原因がわかりません。
該当のソースコード
<?php $name = ""; $comment = ""; $data = array(); $error = array(); $log = date('Y-m-d H:i:s'); $host = "IPアドレス"; $username = "ユーザー名"; $passwd = "パスワード"; $dbname ="DB名"; //sqlに接続。変数に代入 $link = mysqli_connect($host, $username, $passwd, $dbname); if ($link) { //文字化けの防止 mysqli_set_charset($link, 'utf8'); //送信データがPOSTの時に実行 if ($_SERVER['REQUEST_METHOD'] === 'post') { //nameの送信データを代入 if (isset($_POST['name']) === TRUE) { $name = $_POST['name']; } //送信データnameに不備があれば配列errorに代入 if (mb_strlen($name) > 20) { $error[] = '名前は20文字以内で入力をお願いします。'; } else if (mb_strlen($name) === 0) { $error[] = '名前を入力してください'; } if (isset($_POST['comment']) === TRUE) { $comment = $_POST['comment']; } //送信データcommentに不備があれば配列errorに代入 if (mb_strlen($comment) > 100) { $error[] = 'コメントは100文字以内で入力してください。'; } else if (mb_strlen($comment) === 0) { $error[] = 'コメントを入力してください。'; } var_dump($name); var_dump($comment); //配列$errorの個数を取得。 if (count($error) === 0) { $query = "INSERT INTO bulletion_bord(user_name, user_comment, data) VALUES('$name','$comment','$log')"; $result = mysqli_query($link, $query); if ($result === FALSE) { $error[] = '登録に失敗しました。'; } } } $query = "SELECT * FROM bulletion_bord"; $result = mysqli_query($link, $query); while ($row = mysqli_fetch_array($result)) { $data[] = $row; } mysqli_free_result($result); mysqli_close($link); } else { $error[] = '接続失敗'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta chaarset="utf-8"> <title>課題(中級)</title> </head> <body> <h1>一言掲示板</h1> <!-- エラーを表示 --> <?php foreach ($error as $value) { ?> <p><?php print $value; ?></p> <?php } ?> <form method="post"> 名前:<input type="text" name="name" size="15" value=""> コメント:<input type="text" name="comment" size="40" value=""> <input type="submit" value="投稿"> </form> <ul> <?php foreach ($data as $value) { ?> <li> <?php print $value['user_name']; ?> <?php print $value['user_comment']; ?> <?php print $value['data']; ?> </li> <?php } ?> </ul> </body> </html>
試したこと
var_dump()を使用してデータが入っているか確認。
IF($link)の中の処理からされていないように思いました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー