※当ページのリンクには広告が含まれています。

【第十二回】PHPでシステム開発を実践!フォームでのPHPの使い方[第2回]

はじめに

考える人

ここまでPHPについて色々と取り上げてきまして、難しいところもあったかと思います。
今回も大切なことを1つ1つ取り上げたいと思います。

チェックボックスの情報を受け取る

前回の記事の続きになりますが、フォームには時々、チェックボックスで作られた選択肢があり、選択した後に「送信する」をクリックすると選択した情報を送ることが出来ます。
この処理もPHPで行われます。それでは情報を受け取りブラウザに受け取った情報を表示させてみます。

まずはindex.htmlにチェックボックスを設置したいと思います。
今回は前回作成したindex.htmlに以下コードを3つ日付を変えて追加しています。
——————
<h2>希望日</h2>
<ul>
<li>
<label>
<input name=”reserve[]” type=”checkbox” value=”1/1″ />1月1日
</label>
</li>
</ul>
——————
VSCチェックボックス設置

一度ここで上書き保存をし、ブラウザで表示を確認してみます。
ブラウザ表示チェックボックス設置
チェックボックスと「送信する」ボタンが表示されていましたら問題ありません。
スタイルは気にせず進めていきますが、気になる方はCSSの設定もしてみて下さい。

現在の状態で「送信する」ボタンをクリックしてもチェックボックスで選択した情報は表示されません。
そこでsubmit.phpのファイルを修正していきます。
まずはsubmit.phpの内容がブラウザで表示されるのか確認します。
submit.phpに以下コードを追加してみます。
——————
<h2>希望日</h2>
<ul>
<li>1/2</li>
<li>1/3</li>
</ul>
——————
VSCチェックボックスsubmit.php
上書き保存をし、ブラウザで表示を確認してみます。
「送信する」ボタンをクリックしますとsubmit.phpに入力した「1/2」と「1/3」が表示されています。
まだチェックボックスの情報は反映されませんので、固定で「1/2」と「1/3」が表示されていれば、submit.phpの内容がそのまま表示されていることになります。
ブラウザ表示確認submit.php
それでは次にindex.htmlのチェックボックスにチェックを入れた情報だけを表示させるようにしてみます。
前回の記事で取り上げました$_REQUEST[]を使います。
submit.phpを開き、以下のように修正します。
——————
<h2>希望日</h2>
<?php $reserves = $_REQUEST[‘reserve’]; ?>
<ul>
<?php foreach($reserves as $reserve): ?>
<li><?php echo htmlspecialchars($reserve, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
——————
VSCチェックボックス$_REQUEST
上書き保存をし、ブラウザの表示を確認してみます。
index.htmlの画面でチェックボックスにチェックを入れた後、「送信する」ボタンをクリックしますとsubmit.phpの画面でチェックした日付が表示されているのが確認できます。
ブラウザ表示確認チェックボックス$_REQUEST
それではどのような仕組みでチェックボックスにチェックを入れた情報が表示されているのか1つ1つ取り上げていこうと思います。
まずはチェックボックスの情報を受け取るために配列を使います。
——————
<?php $reserves = $_REQUEST[‘reserve’]; ?>
——————
index.htmlのチェックボックスの<input>のname属性に指定されているreserveの情報を$_REQUESTで受け取ります。
受け取った情報は、変数$reservesの中に代入します。
——————
<ul>
<?php foreach($reserves as $reserve): ?>
<li><?php echo htmlspecialchars($reserve, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
——————
次にforeach文を使い、$reservesで受け取った情報を1つ1つ$reserveに繰り返し代入し、表示させています。
表示させる際にhtmlspecialcharsを使って、特殊文字を変換して表示させるようにしています。

ここまででチェックボックスにチェックを入れた場合には、その情報が表示されるようになりました。
ただチェックボックスに何もチェックを入れなかった場合は、エラーが表示されてしまいます。
そこで最後にif文を使い、受け取った情報が空ではなかった時に上記プログラムが発動するようにします。
以下のように全体をif文で囲みます。
——————
<h2>希望日</h2>
<?php if(!empty($_REQUEST[‘reserve’])): ?>
<?php $reserves = $_REQUEST[‘reserve’]; ?>
<ul>
<?php foreach($reserves as $reserve): ?>
<li><?php echo htmlspecialchars($reserve, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
——————
VSC空じゃないときに発動
上書き保存をし、ブラウザで表示を確認してみます。
index.htmlの画面でチェックボックスに何もチェックを入れずに「送信する」ボタンをクリックしてみますと何も表示されなくなりました。
ブラウザ表示確認空の場合
もし何かメッセージを表示させたい場合は、elseを使い、空の場合の処理を指定します。
——————
<h2>希望日</h2>
<?php if(!empty($_REQUEST[‘reserve’])): ?>
<?php $reserves = $_REQUEST[‘reserve’]; ?>
<ul>
<?php foreach($reserves as $reserve): ?>
<li><?php echo htmlspecialchars($reserve, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>希望日がありません</p>
<?php endif; ?>
——————
VSCelse追加
上書き保存をし、ブラウザで再度確認してみます。
チェックボックスに何もチェックを入れなかった場合は、「希望日がありません」が表示されるようになりました。
ブラウザ表示確認else追加

全角英数字から半角英数字に変換

フォームで電話番号やメールアドレスなど半角英数字で入力してほしい時があります。
ただユーザーによっては全角で入力してしまう場合もあります。
その場合、半角に自動で直すプログラムをPHPで実装することが出来ます。
例えば年齢の項目があったとし、その入力欄に全角が入力された場合にsubmit.phpの画面で半角に直された年齢が表示されるようにしてみます。

まずはindex.htmlに年齢の入力欄を設置するために以下を追加します。
——————
<label for=”my_age”>年齢:</label>
<input type=”text” id=”my_age” name=”my_age”>
——————
VSC年齢
上書き保存をし、ブラウザで表示を確認してみます。
年齢の項目が表示されていましたら問題ありません。
ブラウザ表示確認年齢

さて次はこちらの入力欄に入力された情報を「送信する」ボタンをクリックして遷移するsubmit.php画面で処理するプログラムを作っていきます。
submit.phpを開き、以下プログラムを追加します。
——————
<h2>年齢</h2>
<?php if(!empty($_REQUEST[‘my_age’])): ?>
<?php $age = $_REQUEST[‘my_age’]; ?>
<?php $age = mb_convert_kana($age, ‘n’ , ‘UTF-8’); ?>
<?php
if(is_numeric($age)){
echo $age . ‘歳です’;
}else{
echo ‘*数字で入力して下さい。’;
}
?>
<?php endif; ?>
——————
VSC年齢submit.php
上書き保存をし、ブラウザで表示を確認してみます。

まず入力欄に全角で数字を入力し、「送信する」ボタンをクリックします。
するとちゃんと半角数字に直して表示してくれているのが確認できます。
ブラウザ表示確認全角から半角
それでは数字以外の文字を入力し、「送信する」ボタンをクリックします。
ブラウザ表示確認ひらがなからエラー表示
以上のように、状況により表示される情報が変わり、全角の数字を入力した場合は自動で半角数字に変更して表示されるようになりました。
それでは1つ1つ実行したプログラムを確認してみましょう。

index.htmlで年齢の情報が入るname属性にmy_ageと指定しています。
まずは最初にこのmy_ageに入力した情報が入っているかどうかをif文で判断します。
——————
<?php if(!empty($_REQUEST[‘my_age’])): ?>

<?php endif; ?>
——————
そして情報が空じゃない場合にまずはmy_ageの情報を変数$ageに代入します。
——————
<?php $age = $_REQUEST[‘my_age’]; ?>
——————
次に$ageに入っている情報をmb_convert_kanaで半角にし、さらにmb_convert_kana()のカッコ内のnで数字に限定しています。
——————
<?php $age = mb_convert_kana($age, ‘n’ , ‘UTF-8’); ?>
——————
そしてさらにif文を使い、is_numericで$ageの情報が数字かどうか判断し、数字であった場合は「〇〇歳です」と表示(〇〇は$ageの内容)され、それ以外の時は「*数字で入力して下さい。」と表示されるようにしています。

このように全角で入力された情報を自動で半角に変更して処理を行うということはよくありますので覚えておきましょう。

参考:mb_convert_kana
参考:is_numeric

仕事・働き方に悩んでいたら。『Salad』が強みを活かす職のサポートをします


自分の強みを仕事にできる求人サイト

ノウドー

強みの活かし方を知るための情報サイト

Salad

 

ができること

新しい働き方を知りたい!

今すぐ働きたい!

あなたの強みを活かす働き方を。

あなたの「好き」を『伸ばす・活かす』サポートをいたします。
でもそれはあくまでサポート。
「好きなことならがんばれる」というあなた自身の熱意を
求めている企業をみつけませんか。

まとめ

フォームでメール送信した人

今回は取り上げるテーマが少なかったですが、それぞれとても大切な内容となります。
フォーム作成の際は、チェックボックスの項目がある場合もありますし、半角数字に自動で変更するような機能を実装することもあります。
ここまでで出てきましたmb_convert_kanaやis_numericなどどのような用途で使うのか理解を深めていただければと思います。

【サラダ編集部公式SNS】XInstagram
この記事をシェアしましょう!