今日はフォームを使って、入力された値をPHPに送ってそれを表示してみようと思う。
この手の動きは、メールフォームやコメントの投稿フォームなんかで使われているので、ちゃんと覚えておかないとね。
まずは送信フォームを作る
この部分はHTMLだから、特に問題は無いな。
<form name="value" method="post" action="result.php">
名前
<input name="名前" type="text" />
フリガナ
<input name="フリガナ" type="text" />
性別
<input type="radio" name="性別" value="男" checked="checked" />男
<input type="radio" name="性別" value="女" />女
住所
<select name="住所">
<option value="北海道">北海道</option>
<option value="長野">長野</option>
<option value="東京">東京</option>
<option value="沖縄">沖縄</option>
</select>
<input type="submit" value="送信" />
</form>
こんな感じでオッケー。
これで、入力された値がresult.phpに飛んでいくというわけですね。
次に値を受け取るPHPを作る
送られた値は、$_POSTというスーパーグローバル変数(?)に配列として(?)格納されるみたいです。
なので、$_POSTの中身を変数に格納してあげて、それをprintで表示させてみました。
<?php
$name = $_POST['名前'];
$kana = $_POST['フリガナ'];
$sex = $_POST['性別'];
$address = $_POST['住所'];
print($name."<br>");
print($kana."<br>");
print($sex."<br>");
print($address."<br>");
?>
これで問題なく、送られた値が表示されました。
でも、これだとただ中身が表示されるだけなので使い勝手が悪いし、あんまりソースも綺麗じゃないので、foreachを使って、$_POSTの中身を取り出したいと思います。
<?php
foreach($_POST as $key => $val){
echo $key." : ".$val."<br>";
}
?>
これだと値とname属性を
名前 : 太郎
フリガナ : タロウ
といった感じで取り出せるので便利ですね。
実働サンプル
今回の反省点・失敗点
上記の書き方でフォームを作ったのに、送信ボタンを押しても何もでなかった。
書き方は間違えていないのに・・・。
原因は、文字コード。
HTMLファイルはUTF-8で、PHPはshift_jisで作っていたみたい。
そのせいで、name属性が文字化けして、読み込めなかったみたいだ。
でも、foreachで回していると、ふたつのファイルの文字コードが違っていても問題無かった。
うーん。
微妙な違いだけど、文字コードは気をつけないとな。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。