การรับตัวแปรจากแบบฟอร์ม

การรับค่าจากแบบฟอร์มนั้น PHP จะใช้ตัวแปรอยู่ 3 แบบด้วยกันคือ $_GET, $_POST, $_REQUEST ซึ่งแต่ละแบบจะมีการส่งค่าดังนี้

1. $_GET จะส่งค่าผ่าน URL เราจะเห็นพารามิเตอร์ที่ส่งไปต่อท้าย URL ของหน้านั้นๆ
2. $_POST จะส่งแบบไม่แสดงพารามิเตอร์ให้เห็น 
3. $_REQUEST จะเป็นตัวแปรที่ใช้รับค่าทั้งที่ส่งมาแบบ $_GET และ $_POST


สำหรับขั้นตอนการค้นหาข้อมูลเพื่อนำมาทดสอบ เราจะใช้คีย์เวิร์ดดังนี้ 
เข้าไปที่เว็บไซต์ www.google.co.th แล้วค้นหาคำว่า "php การรับค่า ฟอร์ม"


จากนั้นก็ลองนำซอร์สโค๊ดตัวอย่างมาทดลองดูว่าได้ผลอย่างไรบ้างและแตกต่างกันอย่างไร

form.html
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
   <head>
       <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
       <title>ทดสอบ การรับค่าผ่านฟอร์ม คำนวณพื้นที่สี่เหลี่ยม</title>
   </head>
   <body>
  <form action="test.php?id=5" method="post" name="frm_data">
    <table width="500">
   <caption><h3>ทดสอบ การรับ-ส่งค่าผ่านฟอร์ม</h3></caption>
   <tr>
    <td align="right">ชื่อเล่น :</td><td><input name="nickname" type="text"/></td>
   </tr>
     <tr>
    <td align="right"> เบอร์โทร :</td><td><input name="telephone"type="text" /></td>
   </tr>
   <tr>
    </td><td><td><input name="but_submit" type="submit" value="ส่งค่า" /></td>
   </tr>
   </form>
</body>
</html>
test.php 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
echo '<div style="font-size:14px">';
 
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร  id</b>'"\n";
echo '$_GET[\'id\'] = '$_GET['id'], "\n";
echo '$_POST[\'id\'] = '$_POST['id'], "\n";
echo '$_REQUEST[\'id\'] = '$_REQUEST['id'], "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
 
echo '<pre>';
echo '<b>แสดงค่าตัวแปร  nickname</b>'"\n";
echo '$_GET[\'nickname\'] = '$_GET['nickname'], "\n";
echo '$_POST[\'nickname\'] = '$_POST['nickname'], "\n";
echo '$_REQUEST[\'nickname\'] = '$_REQUEST['nickname'], "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
 
echo '<pre>';
echo '<b>แสดงค่าตัวแปร  telephone</b>'"\n";
echo '$_GET[\'telephone\'] = '$_GET['telephone'], "\n";
echo '$_POST[\'telephone\'] = '$_POST['telephone'], "\n";
echo '$_REQUEST[\'telephone\'] = '$_REQUEST['telephone'], "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
 
echo '</div>';
?>



1. สังเกตว่า test.php?id=5 มีการส่งค่าแปร id ที่อยู่ต่อท้ายเครื่องหมาย ? มาด้วย ซึ่งข้อมูลหลังเครื่องหมายนี้จะรับค่าเป็นตัวแปร $_GET

2. ส่วนข้อมูลในแบบฟอร์มที่ให้กรอก เรากำหนดให้ METHOD ของ FORM เป็นแบบ POST ดังนั้นค่าที่ส่งมาจึงไม่ปรากฏใน URL ด้านหลัง ?

3. สำหรับตัวแปรที่ 3 $_REQUEST สามารถรับค่าได้ทั้งแบบส่งมาแบบ GET และ POST