■フォームからテキストデータを受け取る
HTMLフォームから書き込まれたデータは、PHPでは $_POST または $_GETのスーパーグローバル変数(PHPプログラムの何処からでもアクセス可能)を利用することで、簡単に取得する事ができます。
フォームのnameプロパティがKeyとなり、Valueプロパティの値がそのまま値として格納されます。
例えばフォームからPOSTでテキストボックス(name="texistfield")に「今日は焼肉食べたい」等と入力し送信すると、PHPでは
$_POST['textfield']="今日は焼肉食べたい"
と処理されます。
POSTとGETの違いは、送信されるフォームによって決定され、特に意図が無い限りはPOSTを使うと問題ないでしょう。
以下のようなPHPスクリプトtestform.php
を作成し実際に値を確認するとわかりやすいです。
testform.php
<?PHP
print
$_POST[textfield];
exit;
?>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=Shift_JIS">
<title>フォームテスト</title>
</head>
<body>
<formname="form1" method="post" action="testform.php">
<inputtype="text" name="textfield">
<inputtype="submit" name="Submit" value="送信">
</form>
</body>
</html>
|
※フォームの値を表示するだけなら、たったこれだけでできます。
formtest.htmlには、一行分のテキストエリアと、送信ボタンだけがあり、何か入力してボタンを押すと、入力した値が表示されたページになります。
■フォーム作成の注意
上記のsample等でもわかるように、フォームからの値はフォームのNameプロパティをKEYとした連想配列に格納されますので、Nameプロパティの名前が重複した場合、連想配列のKEYに重複は認められないため、後に記載した内容のみ有効になります。
チェックボックスのような複数選択可が当たり前な物はName値を”check[]”といった感じで最後に'[]'(半角のかぎカッコ)を付けなければ、複数選択しても最後の値しか反映されません。name="check[]"とすると、
$_POST['check'][0],$_POST['check'][1]・・と通し番号がつけられ多次元配列に格納されます。
[sampleページ]
sampleページ:sample401_2.php のソース
<!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN">
<html><head><meta
http-equiv="Content-Type" content="text/html;
charset=Shift_JIS">
<title>sample:フォームテスト2</title></head>
sample:フォームテスト2<p>
<?PHP
if
($_POST){
if
($_POST[checkbox]){
foreach
($_POST[checkbox]
as
$val){
$checkbox
.=
$val.
'
,
';
}
}
print <<<EOM
------------------------送信内容-----------------------------------<P>
textfield=$_POST[textfield] <P>
radiobutton=$_POST[radiobutton] <P>
checkbox=
$checkbox <P>
-------------------------------------------------------------------
EOM;
}
?>
<form
name="form1" method="post" action="">
<table
width="300" border="0" cellpadding="4" cellspacing="0" bgcolor="#CCCCFF">
<tr><td>
<input
type="text" name="textfield">
<p>
<input
type="radio" name="radiobutton" value="123">123
<input
type="radio" name="radiobutton" value="456">456
<input
type="radio" name="radiobutton" value="789">789
<p>
<input
type="checkbox" name="checkbox[]" value="abc">abc
<input
type="checkbox" name="checkbox[]" value="def">def
<input
type="checkbox" name="checkbox[]" value="ghi">ghi
<input
type="checkbox" name="checkbox[]" value="jkl">jkl
<p>
<input
type="submit" name="Submit" value="送信">
</p>
</td></tr></table></form>
</body></htm>l
|
※使用に関して発生した問題の責任は、一切負いませんのでご了承ください。
バグや不具合等に関しては、ご報告頂ければ善処します。
|