การส่งข้อมูลแบบอาร์เรย์ โดย method POST และ GET ใน PHP
โดย method POST และ GET ใน PHP
ในการทำงานด้วยภาษา PHP พัฒนาเว็ปไซต์ พัฒนาเว็ปแอพลิเคชั่นนั้น มีลูกเล่นมากมายหลายอย่าง หนึ่งในนั้นคือการเล่นกับแบบฟอร์ม ที่เป็นการอินพุตกรอกแบบฟอร์มจากฝั่งเบราวเซอร์ และนำข้อมูลมาประมวลผลในฝั่งเซิฟเวอร์ ด้วยภาษา PHP และในกรณีที่ฟอร์มนั้นจะต้องมีอินพุตชนิดเดียวกันอยู่เป็นจำนวนมากๆแล้วนั้น เช่น เป็น checkbox จำนวน 5 อันแบบนี้ ถ้าเราต้องเขียนชุดคำสั่งเพื่ออ่านข้อมูลต่างๆจากอินพุตเหล่านี้ทีละตัว ก็คงเสียเวลาไม่น้อย และก็คงไม่สะดวกมากเท่าใดนัก ดังนั้นเพื่อความสะดวกสบายและแก้ข้อจำกัดนี้ เราจึงจะเปลี่ยนมาใช้การรับส่งข้อมูลแบบอาร์เรย์แทน ซึ่งสะดวกกว่ามาก ดังนี้
เราต้องเตรียมการทางด้านฟอร์มก่อนโดยการ กำหนด property name ของอินพุตชนิดเดียวกัน และอยู่ในกลุ่มเดียวกัน ให้เป็นชื่อเดียวกันโดยมีเครื่องหมาย [] ปิดท้าย เพื่อแปลงให้มันอยู่ในรูปแบบของอาร์เรย์ โดยสามารถใช้ได้กับ input ทุกประเภท ไม่ว่าจะเป็น checkbox, text, hidden, textarea หรือว่า select ก็ตาม โดยเฉพาะ select นั้น เราสามารถเลือกรายการพร้อมกันได้มากกว่า 1 ทำให้การใช้วิธีนี้เป็นสิ่งจำเป็นอย่างยิ่งที่สุด ลองศึกษาตามตัวอย่างนี้
ตัวอย่างข้อมูลทางด้านเบราว์เซอร์ การจัดการฟอร์ม
<form method=”post” action=”…”>
<input type=”text” name=”mytext[]” /><br>
<input type=”text” name=”mytext[]” /><br>
<input type=”text” name=”mytext[]” /><br>
</form>
ตัวอย่างการจัดการด้านเบราว์เซอร์
เราจะใช้การจัดการข้อมูลดังนี้ $_POST[‘ชื่ออินพุต’][เลขลำดับ]; หรือ $_GET[‘ชื่ออินพุต’][เลขลำดับ]; โดยที่เลขลำดับคือลำดับของข้อมูลที่ถูกส่งมายังเซิฟเวอร์นั่นเอง โดยเริ่มนับจากอันแรกเป็น 0 แล้วก็ไล่ไปเรื่อยๆ จนครบจำนวนอินพุต เช่นจากตัวอย่างด้านบน ก็จะเป็นแบบนี้
$text1 = $_POST[‘mytext’][0];
$text1 = $_POST[‘mytext’][1];
$text1 = $_POST[‘mytext’][2];
และเนื่องจากมันเป็นรูปแบบอาร์เรย์ จึงสามารถใช้ loop for หรือ foreach ทำงานดึงข้อมูลมาได้เลย
$count = count ($_POST[‘mytext’]); // นับจำนวนอินพุต
for($i = 0; $i < $count; $i++) {
echo $_POST[‘mytext’][$i].”<br>”;
}
หรือถ้าเขียนในรูป foreach
foreach ($_POST[‘mytext’] as $value){
echo $value.”<br>”;
}
บางครั้งเราอาจเจอปัญหา ส่งข้อมูลแบบอาร์เรย์แล้วต้องใช้ [] ต่อท้ายชื่อ แต่ว่าอาจเกิดข้อผิดพลาดเมื่อต้องเขียน Javascript อ้างถึงอินพุตนั้นในบางกรณี จึงต้องใช้ฟอร์มดังนี้ ชื่อฟอร์ม.elements[‘ชื่ออินพุต’];