【Step10】フォームからデータを受け取る 

 

フォームのデータを受け取る 

フォームからPOST送信されたデータを受け取るには、「$_POST["text1"]」のように項目を指定します。
現在のページに表示する場合、「$_SERVER["PHP_SELF"]」(あらかじめ定義されている変数で、 現在実行中のスクリプト名を取得)を使います。

《ソース》

<form method="post" action="<?=$_SERVER["PHP_SELF"]?>">
  <table>
<tr>
<td><input type="text" name="text1"></td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
< /form>
< ?php
echo "<p>入力内容 ".@$_POST["text1"];
?>

フォームのデータを受け取る(配列) 

フォームからのデータを配列にセットするとまとめて処理をすることができます。

<h4>チェックボックスをオンにし[送信]をクリックしてください。</h4>
< form method="post" action="<?=$_SERVER["PHP_SELF"]?>">
  <table>
<tr>
<td>
  <input type="checkbox" name="check1[]" value="Dog">Dog
  <input type="checkbox" name="check1[]" value="Cat">Cat
  <input type="checkbox" name="check1[]" value="Cow">Cow
  <input type="checkbox" name="check1[]" value="Monkey">Monkey
</td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
< /form>

<?php
 for ($i = 0; $i < count(@$_POST["check1"]); $i++) {
 echo $_POST["check1"][$i]."<br>";
 }
?>

 

POST送信されたデータを受け取る 

フォームから method="post" を使ってPOST送信することができます。
このデータを取得するには、「$HTTP_POST_VARS」や「$_POST」を使います。

<h4>テキストボックスに文字を入力し[送信]をクリックしてください。</h4>
< form method="post" action="<?=$_SERVER["PHP_SELF"]?>">
<table>
 <tr>
  <td><input type="text" name="text1"></td>
  <td><input type="submit" value="送信" name="sub1"></td>
 </tr>
</table>
< /form>

<?php
  //入力内容を表示
  echo "入力内容 (\$HTTP_POST_VARS) : → ".@$HTTP_POST_VARS["text1"]."<br>";
  echo "入力内容 (\$_POST) : → ".@$_POST["text1"];
?>

 

GET送信されたデータを受け取る 

method="GET" を使ってフォームからGET送信することができます。
このデータを取得するには 「$HTTP_GET_VARS」や「$_GET」を使います。GET送信されたデータはURLの一部として送信されます。
例えば、「namae」という項目に「chie」というデータを入力した場合、「http://localhost/sample.php?namae=chie」のようなURLになります。

<h4>テキストボックスに文字を入力し[送信]をクリックしてください。</h4>
< form method="get" action="<?=$_SERVER["PHP_SELF"]?>">
<table>
 <tr> 
  <td><input type="text" name="namae"></td>
  <td><input type="submit" value="送信" name="sub1"></td>
 </tr>
</table>
< /form>

<?php
  echo "入力内容 (\$HTTP_GET_VARS) → ".@$HTTP_GET_VARS["namae"]."<br>";
  echo "入力内容 (\$_GET) → ".@$_GET["namae"];
?>

 

リンクからデータを受け取る 

リンクするページから含まれるパラメータを受け取る場合、「$_GET["key"]」のように、パラメータの項目を指定すると、参照可能になります。

<a href ="<?=$_SERVER["PHP_SELF"]?>?key=Access">Access</a><br>
< a href ="<?=$_SERVER["PHP_SELF"]?>?key=Excel">Excel</a><br>
< a href ="<?=$_SERVER["PHP_SELF"]?>?key=Word">Word</a><br>

< ?php
  echo "<p>リンクからのパラメータ → ".@$_GET["key"];
?>

 

フォームのデータをまとめて処理する 

POST送信されたデータは、配列 $_POST に格納されています。foreach文を使うと、まとめて処理することができます。

<form method=post action="<?=$_SERVER["PHP_SELF"]?>">
< table>
< tr><td>お名前<td><INPUT SIZE="50" TYPE="text" NAME="namae"></tr>

<tr><td>Email<td><INPUT SIZE="50" TYPE="text" NAME="email"></tr>
< /table>
< center>
< table>
< tr><td>職種<td><input type="radio" NAME="janre" value="WP">ワープロ・入力
  <input type="radio" NAME="janre" value="DTP">DTP
  <input type="radio" NAME="janre" value="CAD">CAD
  <input type="radio" NAME="janre" value="PROG">プログラム
  <input type="radio" NAME="janre" value="OTHER">その他
< /tr>
< tr><td align="center">コメント<br><br><td><TEXTAREA NAME="comment" ROWS="10"    COLS="60"></TEXTAREA><p></tr>
< tr><td>URL<td><INPUT size="60" TYPE="text" NAME="url"></tr>
< /table>

  <INPUT TYPE="submit" VALUE="送信">
  < INPUT TYPE="reset" VALUE="リセット">
< /FORM>
< /center>
< hr>

< p>送信データの表示</p>

<?php
  foreach($_POST as $idx => $val){
  echo "<br>$idx = $val";
}
?>

 

フォームのデータを変数に格納する 

extract()関数は、配列のインデックス名と同じ変数名に配列の値をセットする関数です。
フォームから受け取ったデータを、フォーム要素と同じ名前の変数に格納することができます。

<form method=post action="<?=$_SERVER["PHP_SELF"]?>">
< table>
< tr><td>お名前<td><INPUT SIZE="50" TYPE="text" NAME="namae"></tr>

<tr><td>Email<td><INPUT SIZE="50" TYPE="text" NAME="email"></tr>
< /table>

<table>
< tr><td>職種<td><input type="radio" NAME="janre" value="WP">ワープロ・入力
  <input type="radio" NAME="janre" value="DTP">DTP
  <input type="radio" NAME="janre" value="CAD">CAD
  <input type="radio" NAME="janre" value="PROG">プログラム
  <input type="radio" NAME="janre" value="OTHER">その他
< /tr>
< tr><td align="center">コメント<br><br><td><TEXTAREA NAME="comment" ROWS="10" COLS="60"></TEXTAREA><p></tr>
< tr><td>URL<td><INPUT size="60" TYPE="text" NAME="url"></tr>
< /table>

<INPUT TYPE="submit" VALUE="送信">
< INPUT TYPE="reset" VALUE="リセット">
< /FORM>

< p>送信データの表示</p>

<?php
  extract($_POST);
  echo "名前:".@$namae."<br>";
  echo "メール:".@$email."<br>";
  echo "種別:".@$janre."<br>";
  echo "コメント:".@$comment;
?>