11.フォームからのデータを受け取る方法
1)フォームからサーバにデータを送信する方法
①フォームの書き方
フォームタグに「action」、「method」属性を追加します。
「action」属性は、フォームからのデータを渡すサーバのプロクラム名を指定します。
「method」属性は、フォームからデータを送信するときの形式を指定します。
フォームから送信されるデータは、「URLエンコード形式」のデータで送信されます。そのフォーマットは、以下のようになります。
変数名=値&変数名=値&変数名=値&・・・・・・・・・・・
のようになっています。
変数名は、フォーム内のエレメントの「name」属性に指定した文字列が変数名になります。
値は、「value」属性で指定した値になります。省略した場合は、そのエレメントに入力した値になります。
このデータは、単純な文字列として送信されますが、送信形式には、「POST」と「GET」があります。
「POST」は、URLとは別のファイルとして送信されます。長い文字列を送信するときに向いています。
「GET」は、URLの後ろに文字列として追加されて送信されます。重要な情報を送信するときは、この方法は避けるようにします。
「GET」の場合は、以下のように送信されます。
http://www.manabukun.net?変数名=値&変数名=値&変数名=値&・・・・・・・・・・・
フォームタグは、以下のように書きます。
<form method="POST" action="test.php"> ← 送信形式が「POST」で「test.php」にデータを渡すように指定しています。
<input type="text" name="abc"> ← value属性がないので、テキストフィールドに入力された値が送信されます。
<input type="radio" name="xyz" value="男">男 ← ここにチェックが入れば、「xyz=男」として送信されます。
<input type="radio" name="xyz" value="女">女 ← ここにチェックが入れば、「xyz=女」として送信されます。
<input type="submit" name="sub" value="送信"> ← フォームを送信するボタンでクリックすると送信されます。「sub=送信」が送信されます。
<input type="reset" name="rst" value="クリア"> ← このボタンは、フォームのデータをクリアするものでサーバには、送信されません。
</form>
2)フォームのデータを受け取る方法
フォームから送信されてきたデータは、PHP側では、以下のように連想配列に格納されます。
①GETメソッドで送信されてきた場合
フォームのエレメントで「name="abc"」であればその値は、
$_GET['abc'] に格納されています。
②POSTメソッドで送信されてきた場合
フォームのエレメントで「name="xyz"」であればその値は、
$_POST['xyz'] に格納されています。
3)テキストフィールドのデータを受け取る方法
テキストフィールドは、何も入力せずにデータを送信した場合は、「ヌル」が送信されます。
サーバ側では、このヌルをチェックすることで未入力のチェックができます。
ファイル名:textForm.html
<!doctype html> <html>ファイル名:textForm.php
<head>
<meta charset="utf-8">
<title>テキストフィールドのデータの送信</title>
</head>
<body>
<form name="form1" method="post" action="textForm.php">
テキストフィールドの送信:<input type="text" name="fText">
<input type="submit" name="Submit" value="送信">
</form>
</body>
</html>
<!doctype html> <html>4)ラジオボタンのデータを受け取る方法
<head>
<meta charset="utf-8">
<title>テキストフィールドのデータの受信</title>
</head>
<body>
<?php
if($_POST['fText']==NULL){
echo "テキストフィールドに何も入力されていません。\n";
}
else{
echo "テキストフィールドに{$_POST['fText']}が入力されました。\n";
}
?>
</body>
</html>
<!doctype html> <html>ファイル名:radioForm.php
<head>
<meta charset="utf-8">
<title>ラジオボタンのデータの送信</title>
</head>
<body>
<form name="form1" method="post" action="radioForm.php">
ラジオボタンの送信:
<input type="radio" name="fRadio" value="男">男
<input type="radio" name="fRadio" value="女">女
<input type="submit" name="submit" value="送信">
</form>
</body>
</html>
<!doctype html> <html>5)チェックボックスのデータを受け取る方法(チェックボックスの数が少ない場合)
<head>
<meta charset="utf-8">
<title>ラジオボタンのデータの受信</title>
</head>
<body>
<?php
if(isset($_POST['fRadio'])==false){
echo "ラジオボタンが選択されていません。\n";
}
else{
echo ラジオボタン"{$_POST['fRadio']}が選択されました。\n";
}
?>
</body>
</html>
<!doctype html> <html>ファイル名:checkForm.php
<head>
<meta charset="utf-8">
<title>チェックボックスのデータの送信</title>
</head>
<body>
<form name="form1" method="post" action="checkForm.php">
チェックボックスの送信:
<input name="fCheck1" type="checkbox" value="男">男
<input name="fCheck2" type="checkbox" value="女">女
<input type="submit" name="Submit" value="送信">
</form>
</body>
</html>
<!doctype html> <html>6)メニューボックスのデータを受け取る方法
<head>
<meta charset="utf-8">
<title>チェックボックスのデータの受信</title>
</head>
<body>
<?php
if(isset($_POST['fCheck1'])) $sCheck1=$_POST['fCheck1']; else $sCheck1="";
if(isset($_POST['fCheck2'])) $sCheck2=$_POST['fCheck2']; else $sCheck2="";
if($sCheck1=="男" && $sCheck2==""){
echo "あなたは、{$sCheck1}ですね。\n";
}
if($sCheck1=="" && $sCheck2=="女"){
echo "あなたは、{$sCheck2}ですね。\n";
}
if($sCheck1=="男" && $sCheck2=="女"){
echo "あなたは、????ですね。\n";
}
if($sCheck1=="" && $sCheck2==""){
echo "チェックされていません。\n";
}
?>
</body>
</html>
<!doctype html> <html>ファイル名:menuForm.php
<head>
<meta charset="utf-8">
<title>メニューボックスのデータの送信</title>
</head>
<body>
<form name="form1" method="post" action="menuForm.php"> メニューボックスのデータ送信
<select name="fSelect">
<option value="">選択してください</option>
<option value="大阪府">大阪府</option>
<option value="京都府">京都府</option>
<option value="滋賀県">滋賀県</option>
<option value="奈良県">奈良県</option>
<option value="和歌山県">和歌山県</option>
<option value="兵庫県">兵庫県</option>
</select>
<input type="submit" name="button" value="送信">
</form>
</body>
</html>
<!doctype html> <html>7)リストボックスのデータを受け取る方法
<head>
<meta charset="utf-8">
<title>メニューボックスのデータを受け取る</title>
</head>
<body>
<?php
if($_POST['fSelect']!=NULL){ //ヌルは、「NULL」、「null」、「""」でOKです。 echo "メニューボックスの{$_POST['fSelect']}が選択されました。\n";
} else{ echo "メニューボックスの項目が選択されていません。\n"; ?>
</body>
</html>
<!doctype html> <html>ファイル名:listForm.php
<head>
<meta charset="utf-8">
<title>リストボックスのデータの送信</title>
</head>
<body>
<form name="form1" method="post" action="listForm.php">
リストボックスのデータの送信
<select name="fSelect[]" size="3" multiple="multiple">
<option value="大阪府">大阪府</option>
<option value="京都府">京都府</option>
<option value="滋賀県">滋賀県</option>
<option value="奈良県">奈良県</option>
<option value="和歌山県">和歌山県</option>
<option value="兵庫県">兵庫県</option>
</select>
<input type="submit" name="button" value="送信">
</form>
</body>
</html>
<!doctype html> <html>②for()を使って選択され項目をすべて処理できるようにします。
<head>
<meta charset="utf-8">
<title>リストボックスのデータを連想配列の2次元配列で受け取る</title>
</head>
<body>
<?php
if(isset($_POST["fSelect"])){
echo $_POST["fSelect"][0]."<br>\n";
echo $_POST["fSelect"][1];
}
else{
echo "選択されていません。";
}
?>
</body>
</html>
この方法では、選択が2つまでしか処理できない。
<!doctype html> <html>③foreach()を使って選択され項目をすべて処理できるようにします。
<head>
<meta charset="utf-8">
<title>リストボックスのデータを受け取る(for())</title>
</head>
<body>
<?php
if(isset($_POST["fSelect"])){
//echo $_POST["fSelect"][0];
//echo $_POST["fSelect"][1];
for($i=0;$i<count($_POST["fSelect"]);$i++){
echo $_POST["fSelect"][$i]."<br>\n";
}
}
else{
echo "選択されていません。";
}
?>
</body>
</html>
<!doctype html> <html>
<head>
<meta charset="utf-8">
<title>リストボックスのデータを受け取る(foreach())</title>
</head>
<body>
<?php
if(isset($_POST["fSelect"])){
//echo $_POST["fSelect"][0];
// echo $_POST["fSelect"][1];
//for($i=0;$i<count($_POST["fSelect"]);$i++){
//echo $_POST["fSelect"][$i]."<br>\n";
//}
foreach($_POST["fSelect"] as $chk){
echo $chk."<br>";
}
}
else{
echo "選択されていません。";
}
?>
</body>
</html>
<!doctype html> <html>ファイル名: textareaForm.php
<head>
<meta charset="utf-8">
<title>複数行のテキストを送信する</title>
</head>
<body>
複数行のテキストを送信する。<br>
<form name="form1" method="post" action="textareaForm.php">
<textarea name="textarea" cols="30" rows="5" wrap="soft"></textarea>
<input type="submit" name="Submit" value="送信">
<input type="reset" name="Submit2" value="リセット">
</form>
</body>
</html>
<!doctype html> <html>上記プログラムのnl2br()関数は 、テキストの改行コードをHTML言語の「<br />」に変換しています。
<head>
<meta charset="utf-8">
<title>複数行のデータを受け取る</title>
</head>
<body>
複数行のデータを受け取る。<br>
<?php
if($_POST["textarea"]!=NULL){
$text=$_POST["textarea"];
echo nl2br($text); //nl2br()関数は、改行コードを<br />に変換します。
}
else{
echo "テキストエリアに何も入力されていません。";
}
?>
</body>
</html>
<!doctype html> <html>ファイル名:checkbox01.php
<head>
<meta charset="utf-8">
<title>チェックボックスのデータを送信する</title>
</head>
<body>
チェックボックスのデータを送信する。<br>
<form name="form1" method="post" action="checkbox01.php">
<input type="checkbox" name="checkbox[]" value="鈴木">あみ
<input type="checkbox" name="checkbox[]" value="浜崎">あゆみ
<input type="checkbox" name="checkbox[]" value="倖田">來未
<input type="checkbox" name="checkbox[]" value="安倍">なつみ
<input type="submit" name="Submit" value="送信">
<input type="reset" name="Submit2" value="リセット">
</form>
</body>
</html>
<!doctype html> <html>②foreachを使って配列変数に代入する方法
<head>
<meta charset="utf-8">
<title>チェックボックスのデータを受け取る。</title>
</head>
<body>
チェックボックスのデータを受け取る。<br>
<?php
if(isset($_POST['checkbox'])){
foreach($_POST['checkbox'] as $chk){
echo $chk."<br>\n";
}
}
else{
echo "チェックされていません。";
}
?>
</body>
</html>
<!doctype html> <html>ファイル名:checkbox02.php
<head>
<meta charset="utf-8">
<title>チェックボックスのデータを送信する</title>
</head>
<body>
チェックボックスのデータを送信する。<br>
<form name="form1" method="post" action="checkbox02.php">
<input type="checkbox" name="checkbox[]" value="鈴木">あみ
<input type="checkbox" name="checkbox[]" value="浜崎">あゆみ
<input type="checkbox" name="checkbox[]" value="倖田">來未
<input type="checkbox" name="checkbox[]" value="安倍">なつみ
<input type="submit" name="Submit" value="送信">
<input type="reset" name="Submit2" value="リセット">
</form>
</body>
</html>
<!doctype html> <html>
<head>
<meta charset="utf-8">
<title>チェックボックスのデータを受け取る。</title>
</head>
<body>
チェックボックスのデータを受け取る。<br>
<?php
if(isset($_POST['checkbox'])){
$i=0;
foreach($_POST['checkbox'] as $chk[]){
echo $chk[$i]."<br>\n";
$i++;
}
}
else{
echo "チェックされていません。";
}
?>
</body>
</html>