การส่งข้อมูลแบบอาร์เรย์ โดย method POST และ GET ใน PHP

22 ก.พ.

การส่งข้อมูลแบบอาร์เรย์ โดย 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[‘ชื่ออินพุต’];