未経験からのITエンジニア学習ブログ

主にIT系のブログを書きます。

PHP 学び 問い合わせフォームの作成 part3

HTML学び

htmlのtextareaにはvalue属性がなく、テキストエリアタグの中に書いたものがvalueになる

お問い合わせ内容
<textarea name="contact">
<?php if(!empty($_POST['contact'])){echo h($_POST['contact']) ;} ?>
</textarea>

 

htmlのcheckboxのnameの後に「[ ]」をつけておくと、複数のチェック項目がある場合配列として表示できる。

<br>
<input type='checkbox' name="caution[ ]" value="1">注意事項のチェックする
<br>

はてなブログで[ ]を空白入れずに書くと表示されなかったので空白を入れているが、本来は入れなくてOK。

 

php学び

お問い合わせフォームの入力画面で、情報として0なら男性、1なら女性とした場合、値としては0か1になり、中身を見た時にすぐには分からない。なので、確認画面ではif文使い、男性、女性という表示をさせる(年齢も同じ要領)。

入力画面のコード

性別
<input type="radio" name="gender" value="0">男性
<input type="radio" name="gender" value="1">女性
<br>
年齢
<select name="age">
<option value="">選択してください</option>
<option value="1">〜19歳</option>
<option value="2">20歳〜29歳</option>
<option value="3">30歳〜39歳</option>
<option value="4">40歳〜49歳</option>
<option value="5">50歳〜59歳</option>
<option value="6">60歳〜</option>
</select>

 

確認画面のコード

性別
<?php
if($_POST['gender'] === '0'){ echo '男性'; }
if($_POST['gender'] === '1'){ echo '女性'; }
?>
<br>
年齢
<?php
if($_POST['age'] === '1'){ echo '〜19歳'; }
if($_POST['age'] === '2'){ echo '20歳〜29歳'; }
if($_POST['age'] === '3'){ echo '30歳〜39歳'; }
if($_POST['age'] === '4'){ echo '40歳〜49歳'; }
if($_POST['age'] === '5'){ echo '50歳〜59歳'; }
if($_POST['age'] === '6'){ echo '60歳〜'; }
?>

確認画面のinputの内容も追加

<input type="submit" name="back" value="戻る">
<input type="submit" name="btn_submit" value="送信する">
<input type="hidden" name="your_name"
value="<?php echo h($_POST['your_name']) ;?>">
<input type="hidden" name="email"
value="<?php echo h($_POST['email']) ;?>">
<input type="hidden" name="url"
value="<?php echo h($_POST['url']) ;?>">
<input type="hidden" name="gender"
value="<?php echo h($_POST['gender']) ;?>">
<input type="hidden" name="age"
value="<?php echo h($_POST['age']) ;?>">
<input type="hidden" name="contact"
value="<?php echo h($_POST['contact']) ;?>">
<input type="hidden" name="csrf"
value="<?php echo h($_POST['csrf']) ;?>">
</form>

性別、年齢の表示が数字だけではなく文字表記されていればOK。

 

最初からラジオボタンや選択項目にチェックを入れておきたい場合

入力画面

性別
<input type="radio" name="gender" value="0" checked>男性
<input type="radio" name="gender" value="1">女性
<br>
年齢
<select name="age">
<option value="">選択してください</option>
<option value="1" selected>〜19歳</option>
<option value="2">20歳〜29歳</option>
<option value="3">30歳〜39歳</option>
<option value="4">40歳〜49歳</option>
<option value="5">50歳〜59歳</option>
<option value="6">60歳〜</option>
</select>

性別(input)の場合、valueの後ろにchecked。

年齢(select)の場合、valueの後ろにselected。

下記のようになっていればOK。

↑の応用

入力画面で性別にチェックを入れて確認画面に進み、その後戻るボタンを押して入力画面に戻った際、チェックが入力した時の情報で反映される方法。

入力画面

性別
<input type="radio" name="gender" value="0"
<?php if(isset($_POST['gender']) && $_POST['gender'] === '0' )
{ echo 'checked'; } ?>>男性
<input type="radio" name="gender" value="1"
<?php if(isset($_POST['gender']) && $_POST['gender'] === '1' )
{ echo 'checked'; } ?>>女性
<br>

if文を使い男性か女性かでチェックをどちらに入れるか判定する。

なお、emptyは0もtrueとしてしまうので、isset(空ではない状態ならtrue)をこの場合用いる。

女性でチェックを入れた後、戻るを押して女性のままチェックが残っていればOK