การส่งค่า Array ผ่านแบบฟอร์มของ PHP
โจทย์:
ต้องการส่งรายชื่อบุคคลซึ่งเก็บอยู่ในตัวแปร Array ของ PHP โดยส่งผ่านฟอร์ม จะทำอย่างไร
ตัวแปรที่มีรายชื่อบุคคลคือ $nameArray = array("ประสงค์","ประสิทธิ์","ประสาท");
หลักการ
นำค่าที่อยู่ใน Array ไปใส่ในลง form element โดยให้อยู่ในรูปของ PHP Array แล้วส่งออกไปยังไฟล์ PHP ที่รับค่า
วิธีการ
ไฟล์แบบฟอร์ม
(ไฟล์ myform.php)
<html><body>
<form method="POST" action="showarray.php">
<?php
$nameArray = array("ประสงค์","ประสิทธิ์","ประสาท");
foreach($nameArray as $names){ //นำค่าไปใส่ form element
echo '<input type="hidden" name="members[]" value="'. $names. '">';
}
?>
คลิกเพื่อส่งข้อมูล<br>
<input type="submit" value=" ส่ง ">
</body></html>
แสดงผล
ในกรณีที่เราสร้างแบบฟอร์มสำหรับกรอกข้อมูล ก็สามารถรับค่าเข้ามาเป็น Array และส่งออกได้ทันที เช่น
(ไฟล์ myform.html)
<HTML><BODY>
<form method="POST" action="showarray.php">
สมาชิกคนที่ 1:<input type="text" name="members[]"/><br/>
สมาชิกคนที่ 2:<input type="text" name="members[]"/><br/>
สมาชิกคนที่ 3:<input type="text" name="members[]"/><br/><br>
คลิกปุ่มเพื่อส่งรายชื่อ<br><br>
<input type="submit" name="sendNames" value=" ส่ง ">
</form>
</BODY></HTML>
แสดงผล
ไฟล์ที่รับค่า
(ไฟล์ showarray.php)
<?php
//$memberNames รับค่าเข้ามาและมีสถานะเป็น Array
$memberNames=$_POST['members'];
//นับจำนวนสมาชิกที่ส่งมา
$numOfPeople = sizeof($memberNames);
echo $numOfPeople . "<br>"; //3
//แสดงชื่อสมาชิก คนที่ 2
$secondPerson=$memberNames[1];
echo $memberNames[1]; //ประสิทธิ์ (ส่งมาจาก myform.php)
?>
แสดงผล
การประยุกต์ใช้งาน
ตัวอย่างการส่งเฉลยคำตอบจากข้อสอบ และนำไปตรวจด้วย PHP
ไฟล์ข้อสอบ (myTest.php)
<?php
$subjectName = "ข้อสอบออนไลน์";
$correctAns=array("ข","ก"); //เฉลยข้อที่ถูก -- ไม่จำกัดจำนวนข้อ
?>
<HTML><BODY>
<form method="POST" action="checkAns.php">
1) อำเภอบางแพ อยู่ในจังหวัดอะไร<br>
<input type="radio" value="ก" name="question1">ก) กรุงเทพ<br>
<input type="radio" value="ข" name="question1">ข) ราชบุรี<br>
<br>
2) แม่น้ำอะไรไหลผ่านกรุงเทพ<br>
<input type="radio" value="ก" name="question2">ก) เจ้าพระยา<br>
<input type="radio" value="ข" name="question2">ข) แม่กลอง<br>
<?php
foreach($correctAns as $value){
echo '<input type="hidden" name="correct[]" value="'. $value. '">';
}
echo "<input type = hidden name = \"subjName\" value='$subjectName'>";
?>
<BR><BR>
<input type="submit" value="ส่งข้อมูล" name="ok">
<INPUT TYPE="RESET" VALUE="ยกเลิก">
</FORM>
</BODY></HTML>
แสดงผล
ไฟล์ตรวจคำตอบ (checkAns.php)
<?php
$subjName = $_POST["subjName"];
$correctAns = $_POST["correct"]; // $correctAns เป็น Array ประกอบด้วย คำตอบที่ถูก ที่ส่งมาจากตัวข้อสอบ
$numOfQstns = sizeof($correctAns);
$score = 0;
// รับคำตอบ และเก็บไว้ในตัวแปร Array ชื่อ $stAns
for ($i=1; $i<=$numOfQstns; $i++)
{
$stAns[$i-1] = trim($_POST["question" . $i]);
}
// ตรวจคำตอบ
for ($i=0; $i<=($numOfQstns-1); $i++)
{
$correct = $correctAns[$i];
$stAnswer = $stAns[$i];
if($stAnswer == $correct) {
$score++;
};
};
echo "ท่านทำข้อสอบวิชา$subjName ถูก จำนวน $score ข้อ";
?>
แสดงผล
ข้อดีของวิธีการนี้คือ ไฟล์ตรวจคำตอบใช้ไฟล์เดียว แต่สามารถตรวจข้อสอบได้หลายฉบับ แต่ละฉบับสามารถมีความยาวได้ไม่เท่ากัน และไม่จำกัดจำนวนข้อ
ต้องการส่งรายชื่อบุคคลซึ่งเก็บอยู่ในตัวแปร Array ของ PHP โดยส่งผ่านฟอร์ม จะทำอย่างไร
ตัวแปรที่มีรายชื่อบุคคลคือ $nameArray = array("ประสงค์","ประสิทธิ์","ประสาท");
หลักการ
นำค่าที่อยู่ใน Array ไปใส่ในลง form element โดยให้อยู่ในรูปของ PHP Array แล้วส่งออกไปยังไฟล์ PHP ที่รับค่า
วิธีการ
ไฟล์แบบฟอร์ม
(ไฟล์ myform.php)
<html><body>
<form method="POST" action="showarray.php">
<?php
$nameArray = array("ประสงค์","ประสิทธิ์","ประสาท");
foreach($nameArray as $names){ //นำค่าไปใส่ form element
echo '<input type="hidden" name="members[]" value="'. $names. '">';
}
?>
คลิกเพื่อส่งข้อมูล<br>
<input type="submit" value=" ส่ง ">
</body></html>
แสดงผล
(ไฟล์ myform.html)
<HTML><BODY>
<form method="POST" action="showarray.php">
สมาชิกคนที่ 1:<input type="text" name="members[]"/><br/>
สมาชิกคนที่ 2:<input type="text" name="members[]"/><br/>
สมาชิกคนที่ 3:<input type="text" name="members[]"/><br/><br>
คลิกปุ่มเพื่อส่งรายชื่อ<br><br>
<input type="submit" name="sendNames" value=" ส่ง ">
</form>
</BODY></HTML>
แสดงผล
ไฟล์ที่รับค่า
(ไฟล์ showarray.php)
<?php
//$memberNames รับค่าเข้ามาและมีสถานะเป็น Array
$memberNames=$_POST['members'];
//นับจำนวนสมาชิกที่ส่งมา
$numOfPeople = sizeof($memberNames);
echo $numOfPeople . "<br>"; //3
//แสดงชื่อสมาชิก คนที่ 2
$secondPerson=$memberNames[1];
echo $memberNames[1]; //ประสิทธิ์ (ส่งมาจาก myform.php)
?>
แสดงผล
ตัวอย่างการส่งเฉลยคำตอบจากข้อสอบ และนำไปตรวจด้วย PHP
ไฟล์ข้อสอบ (myTest.php)
<?php
$subjectName = "ข้อสอบออนไลน์";
$correctAns=array("ข","ก"); //เฉลยข้อที่ถูก -- ไม่จำกัดจำนวนข้อ
?>
<HTML><BODY>
<form method="POST" action="checkAns.php">
1) อำเภอบางแพ อยู่ในจังหวัดอะไร<br>
<input type="radio" value="ก" name="question1">ก) กรุงเทพ<br>
<input type="radio" value="ข" name="question1">ข) ราชบุรี<br>
<br>
2) แม่น้ำอะไรไหลผ่านกรุงเทพ<br>
<input type="radio" value="ก" name="question2">ก) เจ้าพระยา<br>
<input type="radio" value="ข" name="question2">ข) แม่กลอง<br>
<?php
foreach($correctAns as $value){
echo '<input type="hidden" name="correct[]" value="'. $value. '">';
}
echo "<input type = hidden name = \"subjName\" value='$subjectName'>";
?>
<BR><BR>
<input type="submit" value="ส่งข้อมูล" name="ok">
<INPUT TYPE="RESET" VALUE="ยกเลิก">
</FORM>
</BODY></HTML>
แสดงผล
ไฟล์ตรวจคำตอบ (checkAns.php)
<?php
$subjName = $_POST["subjName"];
$correctAns = $_POST["correct"]; // $correctAns เป็น Array ประกอบด้วย คำตอบที่ถูก ที่ส่งมาจากตัวข้อสอบ
$numOfQstns = sizeof($correctAns);
$score = 0;
// รับคำตอบ และเก็บไว้ในตัวแปร Array ชื่อ $stAns
for ($i=1; $i<=$numOfQstns; $i++)
{
$stAns[$i-1] = trim($_POST["question" . $i]);
}
// ตรวจคำตอบ
for ($i=0; $i<=($numOfQstns-1); $i++)
{
$correct = $correctAns[$i];
$stAnswer = $stAns[$i];
if($stAnswer == $correct) {
$score++;
};
};
echo "ท่านทำข้อสอบวิชา$subjName ถูก จำนวน $score ข้อ";
?>
แสดงผล
ข้อดีของวิธีการนี้คือ ไฟล์ตรวจคำตอบใช้ไฟล์เดียว แต่สามารถตรวจข้อสอบได้หลายฉบับ แต่ละฉบับสามารถมีความยาวได้ไม่เท่ากัน และไม่จำกัดจำนวนข้อ
ความคิดเห็น
แสดงความคิดเห็น