while(list($key, $value) = each ไม่ทำงาน เปลี่ยนเป็น foreach($_POST[id2] as $key => $value)

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

goobot_com

while(list($key, $value) = each ไม่ทำงาน เปลี่ยนเป็น foreach($_POST[id2] as $key => $value)

โพสต์โดย goobot_com » 23/04/2018 10:14 pm

สอบถาม ตามภาพแบบ

1. ปัญหา คือ เปลี่ยน server ใหม่ PHP 7 (แต่เดิมแสดงผลปกติ ทุกประการ)
เดิม PHP(เก่า) while(list($key, $value) = each ($_POST['id2'])){ .....
ใหม่เปลี่ยนแล้วเป็น foreach($_POST['id2'] as $key => $value){ .....

2. กด radio เลือกแบบทดสอบ แล้ว ไม่ส่งค่า แสดงผล ตาม code ว่า คุณไม่ได้เลือกคำตอบ

ขอสอบถาม วิธีแก้ไข เกี่ยวกับ foreach($_POST['id2'] as $key => $value){ ..... ว่าต้องทำอย่าไรถึงจะรับค่าจาก การกด radio แบบทดสอบ

ขอขอบพระคุณล่วงหน้า

รูปภาพ


ผมลองลบ = ออก 1 ตัว คำตอบที่ถูกต้อง แสดงผลได้ปกติ (ตามภาพแนบ)
รูปภาพ


-------------------------------- code -------------------------------------------------
<?php

$sql[topic] = Mysql_Query("Select * From ".$table[quiz_topic]." where id='".$_GET[quiz]."' ");
$arr[topic] = Mysql_fetch_array($sql[topic]);
$sql[category] = Mysql_Query("Select * From ".$table[quiz_category]." where id='".$arr[topic][group_category]."' ");
$arr[category] = Mysql_fetch_array($sql[category]);

echo "<center><b>หมวดหมู่</b>&nbsp; ".$arr[category][category_name],"</center> ";
echo "<center><b>แบบทดสอบ</b>&nbsp;".$arr[topic][topic_name],"</center>";
echo "<br><center><b><font color='red'>&nbsp;".$arr[topic][remark],"<br>**************</font></b></center>";
echo "<br>";

$display = mysql_query("SELECT * FROM ".$table[quiz]." WHERE category='".$_GET[quiz]."' ORDER BY id");

$q_Pageview = "UPDATE ".$table[quiz_topic]." SET pageview = pageview+1 WHERE id = '".$_GET[quiz]."' ";
$sql_Pageview = mysql_query ( $q_Pageview ) or sql_error ( "db-query",mysql_error() );

if (!$_POST[submit]) {

$COUNT = 0 ;$j=1;


while ($row = mysql_fetch_array($display)) {
$COUNT ++ ;
$id[$j] = $row["id"];
$question[$j] = $row["question"];
$opt1[$j] = $row["opt1"];
$opt2[$j] = $row["opt2"];
$opt3[$j] = $row["opt3"];
$opt4[$j] = $row["opt4"];
$opt5[$j] = $row["opt5"];
$opt6[$j] = $row["opt6"];
$opt7[$j] = $row["opt7"];
$opt8[$j] = $row["opt8"];
$opt9[$j] = $row["opt9"];
$opt10[$j] = $row["opt10"];
$answer[$j] = $row["answer"];
$j++;
}

$Qurry = mysql_query("SELECT * FROM ".$table[quiz]." where category = '".$_GET[quiz]."' ");

$cntrec = Mysql_num_rows($Qurry);

for ($i=1 ; $i <= $cntrec;$i++) {
$q = rand(1,1000000) + rand(1,100000);
$v = ($q % $cntrec) + 1;
$found = 0;
for ($j=1 ; $j < $i;$j++) {
if ($r[$j] == $v) { $found = 1;}
}
if ($found == 1) { $i--; } else { $r[$i] = $v; }
}

$Qurry = mysql_query("SELECT * FROM ".$table[quiz_topic]." where id='".$_GET[quiz]."' ");
$tatal_ans = Mysql_fetch_array($Qurry);
if($tatal_ans[ramdom] == 0){$ans_total = $cntrec;}else{$ans_total = $tatal_ans[ramdom];}
if($ans_total > $cntrec ){$ans_total =$cntrec;}
for($i=1;$i<=$ans_total;$i++){

echo "<form method='post' action=?name=quiz&file=quiz&quiz=".$_GET[quiz].">";
echo "<table border=0 width=100%>";


echo "<tr><td ><br><b>",$i,". ".$question[$r[$i]]."</b></td></tr>";
if($opt1[$r[$i]] != "")
echo "<tr><td><input type='radio' name=q".$id[$r[$i]]." value=\"".$opt1[$r[$i]]."\"> ".$opt1[$r[$i]]."<BR>";
if($opt2[$r[$i]] != "")
echo "<input type='radio' name=q".$id[$r[$i]]." value=\"".$opt2[$r[$i]]."\"> ".$opt2[$r[$i]]."<BR>";
if($opt3[$r[$i]] != "")
echo " <input type='radio' name=q".$id[$r[$i]]." value=\"".$opt3[$r[$i]]."\"> ".$opt3[$r[$i]]."<BR>";
if($opt4[$r[$i]] != "")
echo "<input type='radio' name=q".$id[$r[$i]]." value=\"".$opt4[$r[$i]]."\"> ".$opt4[$r[$i]]."</td>";
if($opt5[$r[$i]] != "")
echo "<tr><td><input type='radio' name=q".$id[$r[$i]]." value=\"".$opt5[$r[$i]]."\"> ".$opt5[$r[$i]]."<BR>";
if($opt6[$r[$i]] != "")
echo "<input type='radio' name=q".$id[$r[$i]]." value=\"".$opt6[$r[$i]]."\"> ".$opt6[$r[$i]]."<BR>";
if($opt7[$r[$i]] != "")
echo " <input type='radio' name=q".$id[$r[$i]]." value=\"".$opt7[$r[$i]]."\"> ".$opt7[$r[$i]]."<BR>";
if($opt8[$r[$i]] != "")
echo "<input type='radio' name=q".$id[$r[$i]]." value=\"".$opt8[$r[$i]]."\"> ".$opt8[$r[$i]]."</td>";
if($opt9[$r[$i]] != "")
echo "<tr><td><input type='radio' name=q".$id[$r[$i]]." value=\"".$opt9[$r[$i]]."\"> ".$opt9[$r[$i]]."<BR>";
if($opt10[$r[$i]] != "")
echo "<input type='radio' name=q".$id[$r[$i]]." value=\"".$opt10[$r[$i]]."\"> ".$opt10[$r[$i]]."<BR>";

echo "</tr>";
echo "<INPUT TYPE='hidden' name='id[]' value='q".$id[$r[$i]]."'>";
echo "<INPUT TYPE='hidden' name='id2[]' value='q".$id[$r[$i]]."'>";
}

echo "</table><br><br>";
echo "<INPUT TYPE='hidden' name='total_id' value='".$ans_total."'>";
echo "<center><input class='art-button' type='submit' value='ส่งข้อมูล' name='submit'>&nbsp;&nbsp;<INPUT class='art-button' TYPE='reset' value='เริ่มใหม่ '></center>";
echo "</form>";

}

elseif ($_POST[submit])
{

$score = 0;
$total = mysqli_num_rows($display);
foreach($_POST['id'] as $key=>$value){
//while(list($key, $value) = each ($_POST['id']))

$display = mysql_query("SELECT * FROM ".$table[quiz]." WHERE category='".$_GET[quiz]."' and q='".$value."' ");
$result = mysql_fetch_array($display );
$answer = $result["answer"];
$points = $result["point"];
$q = $result["q"];

if ($$q == $answer)
{
$score++;
$total_point = $total_point + $points;
}
$sum_point = $sum_point + $points;

}
echo "<p align=center><b><font color =#339900> คุณตอบคำถามถูก ทั้งหมด</font> $score <font color =#339900>ข้อ</font> </b>";
echo " <b>จาก</b><b><font color =#339900 size=2> จำนวนคำถามทั้งหมด</font></b><b> $_POST[total_id] </b><font color =#339900> <b>ข้อ </font> </b> ";
echo "<p align=center><b> คุณได้คะแนนทั้งสิ้น ".$total_point." คะแนน จากคะแนนรวม ".$sum_point." คะแนน</b></p>";
echo "<hr>";
echo "<B><center><FONT COLOR=\"#FF0000\"><p>";
$q = "Select * From ".$table[between]." where id='".$_GET[quiz]."' and start_point <='".$total_point."' and end_pont>='".$total_point."'";
$sql = Mysql_Query($q);
$arr = Mysql_fetch_array($sql);
echo $arr[text];

echo "</p></FONT></B></center><BR><BR>";

echo "<p><B>การตอบคำถามของคุณ :</B>";

echo "<table border=0>";
$COUNT = 0;


foreach($_POST['id2'] as $key => $value){

//while(list($key, $value) = each ($_POST['id2'])){
$display = mysql_query("SELECT * FROM ".$table[quiz]." WHERE category='".$_GET[quiz]."' and q='".$value."' ");

$row = mysql_fetch_array($display ) ;
$COUNT ++ ;
$question = $row["question"];
$answer = $row["answer"];
$q = $row["q"];


echo "<tr><td><br><B>".$COUNT.". ".$question."</B></td></tr>";

if ($$q = $answer)
{
echo "<tr><td>&raquo; <B>คุณตอบ</B> : ${$q}, ถูกต้องค่ะ</td></tr>";
}
elseif ($$q == "") {
echo "<tr><td>&raquo;<B>คุณไม่ได้เลือกคำตอบ</B>. กรุณาเลือกคำตอบด้วยค่ะ <br> เฉลย $answer</td></tr>"; //************* ปัญหา คือ กดเลือกคำตอบแล้ว แต่ยังขึ้นว่า ... คุณไม่ได้เลือกคำตอบ
}
else {
echo "<tr><td>&raquo; <B>คุณตอบ</B> : ${$q}. คำตอบที่ถูกคือ : ???? (คุณตอบ ผิด ลองทำใหม่ ทดสอบตัวเองอีกครั้ง!)</td></tr>";
}
//$answer
}
echo "</table><br><br><center><a href='javascript:history.back();'>&lt;&lt;&lt;ย้อนกลับหน้าเดิม</a> </center></p>";
}
?>


--------------------- ----

** รวบกวนผู้รู้ แก้code ให้รัน คำตอบ จาก input type='radio' ด้วยนะครับ เบื้องต้น เห็นว่า q='".$value."' ไม่รับค่ามา หรือเปล่าครับ? แต่ไม่รู้จะแก้ไขอย่างไร **


ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 18925
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: while(list($key, $value) = each ไม่ทำงาน เปลี่ยนเป็น foreach($_POST[id2] as $key => $value)

โพสต์โดย mindphp » 25/04/2018 3:43 am

if ($$q = $answer)
ถ้าจะเช็คค่า ต้องใช้ == ไม่ใช่ =
ถ้าแบบ นี้ $$q = $answer คือการกำหนดค่าให้ตัวแปล $q
ถ้าอยู่ใน if ผลที่ได้จะเป็น True ทุกกรณี ยกเว้นไม่ได้กำหนดตัวแปล $answer มา
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 17 และ บุคคลทั่วไป 0 ท่าน