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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

Q&A

解決済

1回答

3312閲覧

値が空なら、エラーを表示する処理

mocch

総合スコア7

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

0グッド

0クリップ

投稿2017/08/13 06:30

###前提・実現したいこと
PHPでコメント一覧を表示する練習をしています。
データベースへ登録し、表示することはできました。
しかし、入力欄が空でも表示されてしまうので、もし未入力であればエラーメッセージを表示して登録できないようにしたいです。

###該当のソースコード
PHP

<?php //データベースに接続 $host = 'localhost'; // データベースのホスト名又はIPアドレス ※CodeCampでは「localhost」で接続できます $username = 'codecamp17745'; // MySQLのユーザ名 $passwd = 'RZWRFERT'; // MySQLのパスワード $dbname = 'codecamp17745'; // データベース名 $link = mysqli_connect($host, $username, $passwd, $dbname); //変数を初期化 $name = ""; $comment = ""; $date = date('Y/m/d H:i:s'); //postに値がTRUEかの確認 if(isset($_POST['name']) === TRUE){ $name = $_POST['name']; if(mb_strlen($name)===0){ print "名前が未入力です。<br>"; }else if(mb_strlen($name >= 20)){ print "指定できる名前は20文字以内です。"; } } if(isset($_POST['comment']) === TRUE){ $comment = $_POST['comment']; if(mb_strlen($comment)===0){ print "コメントが未入力です。<br>"; }else if(mb_strlen($comment >= 100)){ print "コメントは100文字以内です。<br>"; } } //接続に失敗したらコメントを表示 if(!$link){ print "データベースには接続できませんでした。"; }else{ mysqli_set_charset($link, 'utf8'); //postで受け取った値を挿入 if ($_SERVER['REQUEST_METHOD'] === 'POST'){ $query = 'INSERT INTO bbs_table(name, comment, date) VALUES (\'' . $name . '\', \'' . $comment . '\', \'' . $date . '\')'; $result = mysqli_query($link, $query); } //bbs_tableからコメント情報を取得 $query = 'SELECT * FROM bbs_table'; $result = mysqli_query($link, $query); while ($row = mysqli_fetch_array($result)){ $tweet[] = $row; } //データ領域の解放free mysqli_free_result($result); } //データベースを閉じる mysqli_close($link); ?> <!DOCTYPE html> <html lang = ja> <head> <title></title> <meta charset = "utf-8"> </head> <body> <!-- form method post --> <form method = "post"> <label>名前:<br><input type ="text" name = "name"><br></label> <label>コメント:<br><textarea name="comment" rows="4" cols="40"></textarea><br></label> <label><input type ="submit" value ="投稿する"></label> </form> <p>コメント一覧</p> <?php foreach($tweet as $value){ ?> <div> <?php print htmlspecialchars($value[1], ENT_QUOTES, 'UTF-8'); ?><br> <?php print htmlspecialchars($value[2], ENT_QUOTES, 'UTF-8'); ?><br> <?php print htmlspecialchars($value[3], ENT_QUOTES, 'UTF-8'); ?><br> <hr> </div> <?php } ?> </body> </html>

###試したこと
if(isset($_POST['name']) === TRUE){
$name = $_POST['name'];
if(mb_strlen($name)===0){
print "名前が未入力です。<br>";
}else if(mb_strlen($name >= 20)){
print "指定できる名前は20文字以内です。";
}
}
と作成してみたのですが、変わらず表示されてしまいます。

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

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

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

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

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

guest

回答1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問