PHP演習 4

form.phpフォームに入力して、結果をshowname.phpで受け取り表示します。

PHP演習 2のフォームに「好きな色」を追加しています。色は複数選択可能であるため、受信して表示する側では配列を使用しています。

 

実行結果

入力フォーム

f:id:develog:20161103221856p:plain

 

フォームの内容を受信して表示した結果

f:id:develog:20161103221913p:plain

ソースファイル

----------------------------------------------------------------------

フォーム入力(form.php

----------------------------------------------------------------------

<!DOCTYPE HTML>
<html lang ="ja">
<head>
<meta charset="utf-8">
<title>フォーム入力画面</title>
<style>
dt {
float: left;
width: 200px;
}
dt, dd {
margin-bottom: 20px;
}
form, h1 {
margin-left: 100px;
}
</style>
</head>

<body>
<h1>フォームに入力した内容を取得する</h1>
<form action="showname.php" method="post">
<dl>

<dt><label for="name">お名前:</label></dt>
<dd>
<input id="name" type="text" name="name" size="20" maxlength="10" placeholder="山田太郎" required>
</dd>

<dt>
<label for="mail">メールアドレス:</label></dt>
<dd>
<input id="mail" type="email" name="mail" size="50" maxlength="50" required>
</dd>

<dt>性別:</dt>
<dd>
<input name="gender" id="gender_male" type="radio" value="男性" checked>
<label for="gender_male">男性</label>
<input id="gender_female" type="radio" name="gender" value="女性">
<label for="gender_female">女性</label>
</dd>

<dt>好きな色(複数回答可):</dt>
<dd>
<input id="black" type="checkbox" name="color" value="0"><label for="black"></label>
<input id="red" type="checkbox" name="color"
value="1"><label for="red"></label>
<input id="blue" type="checkbox" name="color" value="2"><label for="blue"></label>
<input id="green" type="checkbox" name="color"
value="3"><label for="green"></label>
<!--inputのidとlabelのforで紐づけして文字をクリックできるようにする-->
</dd>

<dt><label for="message">お問合わせ内容:</label></dt>
<dd>
<textarea name="message" id="message" cols="50" rows="4"></textarea></dd>
</dl>

<input type="submit" value="送信する">
</form>
</body>
</html>

 

----------------------------------------------------------------------

受信して表示(showname.php

----------------------------------------------------------------------

<?php
$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
$mail = htmlspecialchars($_POST['mail'], ENT_QUOTES, 'UTF-8');
$gender = htmlspecialchars($_POST['gender'], ENT_QUOTES, 'UTF-8');
$message = htmlspecialchars($_POST['message'], ENT_QUOTES, 'UTF-8');
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フォーム受信側処理</title>
<style>
dd {
margin-left: 150px;
}
</style>
</head>

<body>
<dl>
<dt>お名前:</dt>
<dd><?php echo $name; ?></dd>
<dt>メールアドレス:</dt>
<dd><?php echo $mail; ?></dd>
<dt>性別:</dt>
<dd><?php echo $gender; ?></dd>

<dt>好きな色:</dt>
<dd><?php
$list = array('0' => '黒', '1' => '赤', '2' => '青', '3' => '緑');
<!--数字に対応した色を配列で用意しておく-->

foreach( $_POST['color'] as $value ){
echo $list[$value].', ';
}
<!--foreachを使用してチェックされたすべての色を表示する-->
?></dd>
<dt>メッセージ:</dt>
<dd><?php echo $message; ?></dd>
</dl>
</body>
</html>