前回は、未入力チェック機能を作成しました。
今回は、この未入力チェック機能をさらに洗練させていきましょう。
if文を使えるようになると、使い方次第でかなり高度な機能も実現できるようになります。
if文の使い方を工夫して、未入力チェック機能を洗練させてみましょう。
テキストエディタでconfirm.phpを開いて下記の内容に書き換えてください。
サンプルソース:confirm.php<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>入力内容の確認|メール送信フォーム</title> </head> <body> <?php /******************************* データの受け取り *******************************/ $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($mailaddress == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($naiyou == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; } /******************************* 入力内容の確認 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、エラーメッセージを表示する echo $errmsg; } else { //エラーメッセージが空の場合には、入力された内容を画面表示する echo '<h3>入力内容を確認します</h3>'; echo '<dl>'; echo '<dt>【お名前】</dt><dd>'.$namae.'</dd>'; echo '<dt>【メールアドレス】</dt><dd>'.$mailaddress.'</dd>'; echo '<dt>【お問合せ内容】</dt><dd>'.nl2br($naiyou).'</dd>'; echo '</dl>'; } ?> </body> </html>
入力が完了したら、confirm.phpを上書き保存してください。
いま上書き保存したconfirm.phpをブラウザで表示確認してみましょう。
下記のように、画面に「お名前が入力されていません。」「メールアドレスが入力されていません。」「お問い合わせ内容が入力されていません。」と表示されていれば成功です。
↓
下記のソースでは、未入力の項目があった場合に変数$errmsgにエラーメッセージを格納するように指定します。
初めに$errmsgを空にしておいてから、未入力の場合にエラーメッセージを格納していきます。
サンプルソース:confirm.phpの抜粋$errmsg = ''; //エラーメッセージを空にしておく if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($mailaddress == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($naiyou == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; }
$errmsg = $errmsg.‘ ~ ‘の部分は、
変数$errmsgにすでにデータが格納されている場合にも追加でデータを格納する場合の記述方法です。
追加と言うのは前のデータと置き換えるのではなく、前のデータの末尾にデータをつなげるという意味です。
文字列を末尾につなげる場合にはドット( . )でつなぎます。
例えば、変数$errmsgにすでに「<p>お名前が入力されていません。</p>」というテキストが格納されている場合に、
$errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>’;と指定をすると、
変数$errmsgには、
「<p>お名前が入力されていません。</p><p>メールアドレスが入力されていません。</p>」
という内容が格納されることになります。
そこへさらに
$errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>’;
という指定をすると、
変数$errmsgには、
「<p>お名前が入力されていません。</p><p>メールアドレスが入力されていません。</p><p>お問合せ内容が入力されていません。</p>」
という内容が格納されることになります。
下記のソースは、
if ( 条件に合致しない場合には ) { 処理A } else { 処理B }
という構造になっています。
「if文の条件に合致しない場合には処理Aを、それ以外の場合には処理Bを実行しなさい」という指定です。
具体的には、「もし、変数$errmsgの中身が空ではない場合には$errmsgの内容を出力しなさい。
それ以外の場合には入力された内容を画面表示しなさい。」というプログラムです。
サンプルソース:confirm.phpの抜粋if ($errmsg != '') { //エラーメッセージが空ではない場合には、エラーメッセージを表示する echo $errmsg; } else { //エラーメッセージが空の場合には、入力された内容を画面表示する echo '<h3>入力内容を確認します</h3>'; echo '<dl>'; echo '<dt>【お名前】</dt><dd>'.$namae.'</dd>'; echo '<dt>【メールアドレス】</dt><dd>'.$mailaddress.'</dd>'; echo '<dt>【お問合せ内容】</dt><dd>'.nl2br($naiyou).'</dd>'; echo '</dl>'; }
注目して欲しいのは、elseが使われている点です。
elseを使うと「それ以外の場合には」という条件で処理を実行させることが可能となります。
もう一点注目して欲しいのは、if文の条件式が$errmsg != ”となっている点です。
!= は「等しくない」という意味を表します。
他の箇所では下記のif文を使用しました。下記では == という記号を使用していますが、
== は「等しい」という意味を表します。
サンプルソース:confirm.phpの抜粋if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; }
これらの == や != などの記号は、比較演算子と呼ばれます。
比較演算子には下記の種類があります。
自分の設定したい条件式になるように適切に使い分けます。
演算子 | 意味 |
---|---|
== | 等しい |
!= | 等しくない |
> | 右辺より大きい |
>= | 右辺以上 |
< | 右辺より小さい |
<= | 右辺以下 |
今回、下記のようにプログラムソース中のコメントの一部を目立たせるようにしました。
プログラムの処理ブロックの区切りを分かりやすくする狙いがあります。
サンプルソース:confirm.php<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>入力内容の確認|メール送信フォーム</title> </head> <body> <?php /******************************* データの受け取り *******************************/ $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($mailaddress == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($naiyou == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; } /******************************* 入力内容の確認 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、エラーメッセージを表示する echo $errmsg; } else { //エラーメッセージが空の場合には、入力された内容を画面表示する echo '<h3>入力内容を確認します</h3>'; echo '<dl>'; echo '<dt>【お名前】</dt><dd>'.$namae.'</dd>'; echo '<dt>【メールアドレス】</dt><dd>'.$mailaddress.'</dd>'; echo '<dt>【お問合せ内容】</dt><dd>'.nl2br($naiyou).'</dd>'; echo '</dl>'; } ?> </body> </html>
PHPのコメントの書き方は、コメント部分を /* ~ */ で囲むか、コメント文の先頭に // を付けます。
このコメントの入れ方は /* ~ */ で囲むというルールを守りつつ飾り枠のような表現にしています。
自分のオリジナルの飾り枠付きコメントを考えてみるのも楽しいでしょう。
<前へ | 目次へ | 次へ> |