获取环路

获取环路

问题描述:

所有数组值

因此,这里是我对他/她想要多少问题(可多选),以获得来自用户的输入代码:获取环路

 Multiple choice: <input type = "text" name="MC"><br> 

     <input type = "submit" name = "confirm" value = "Confirm"> 

之后,这是代码有多少的问题,系统将会生成:

<?php 

if(isset($_POST['confirm'])){ 

$MC = $_POST['MC']; 
echo "<form method = 'POST' name = 'items' action ='createquestions.php'>"; 
$items = 1; 

    for ($x = 1; $x <= $MC; $x++) { 

     echo "Question Number $items:"; echo "<input type = 'text' name = 'questions[]' style='width: 500px'><br><br>"; 
     echo "A. "; echo "<input type = 'text' name = 'ans1[]'>"; 
     echo "B. "; echo "<input type = 'text' name = 'ans2[]'><br>"; 
     echo "C. "; echo "<input type = 'text' name = 'ans3[]'>"; 
     echo "D. "; echo "<input type = 'text' name = 'ans4[]'><br>"; 
     echo "Correct Answer: "; echo "<input type = 'text' name ='cans[]'><br><br>"; 
     $items++; 

    } 
     echo "<input type ='submit' name = 'save' value = 'Save'>"; 
     echo "</form>"; 
} 
?> 
<?php 

的问题是,它只会保存用户的最后输入。 例如,我已经输入在选择题:--textbox这里 - 此代码将产生2个问题,8种选择,2罐=正确的答案,但它只会保存第二个问题,答案和正确的答案。系统将不会得到第一个问题,答案和正确答案的记录。

下面是代码,我会插入它在数据库上:

<?php 

    if(isset($_POST['save'])){ 

     $user_id = $_SESSION['id']; 
     $questions = $_POST['questions']; 
     $ans1 = $_POST['ans1']; 
     $ans2 = $_POST['ans2']; 
     $ans3 = $_POST['ans3']; 
     $ans4 = $_POST['ans4']; 
     $cans = $_POST['cans']; 


     foreach($questions as $q){ 
      echo "<input type = 'hidden' value = '$q'>"; 
     } 

     require_once('xcon.php'); 

     $query = "INSERT INTO mcq (mc_id, user_id, questions, ans1, ans2, ans3, ans4, cans) 
       VALUES ('NULL','$user_id','$q','$ans1','$ans2','$ans3','$ans4','$cans')"; 
    $result = mysql_query($query); 

    if($result){ 
     echo 'Insert Success!'; 
    } 
    else{ 
     echo 'Error'; 
    } 

} 

?> 
+0

对我来说,它提供了两个问题的答案,如果我给两个。你能再详述一下你的问题吗? –

当你保存时,你应该再次运行一个循环。试试这可能吗?

<?php 

    if(isset($_POST['save'])){ 
     $user_id = $_SESSION['id']; 
     require_once('xcon.php'); 
     foreach ($_POST['questions'] as $key => $question){ 
      $ans1 = $_POST['ans1'][$key]; 
      $ans2 = $_POST['ans2'][$key]; 
      $ans3 = $_POST['ans3'][$key]; 
      $ans4 = $_POST['ans4'][$key]; 
      $cans = $_POST['cans'][$key]; 


      echo "<input type = 'hidden' value = '$question'>"; 

      $query = "INSERT INTO mcq (mc_id, user_id, questions, ans1, ans2, ans3, ans4, cans) 
        VALUES ('NULL','$user_id','$question','$ans1','$ans2','$ans3','$ans4','$cans')"; 
      $result = mysql_query($query); 

      if($result){ 
       echo 'Insert Success!<br>'; 
      }else{ 
       echo 'Error<br>'; 
      } 
     }  
    } 

?> 
+0

它工作!非常感谢 ! :) –

根据this post你应该使用:

echo "Question Number $items:"; echo "<input type = 'text' name = 'questions' style='width: 500px'><br><br>"; 
echo "A. "; echo "<input type = 'text' name = 'ans[]'>"; 
echo "B. "; echo "<input type = 'text' name = 'ans[]'><br>"; 
echo "C. "; echo "<input type = 'text' name = 'ans[]'>"; 
echo "D. "; echo "<input type = 'text' name = 'ans[]'><br>"; 
echo "Correct Answer: "; echo "<input type = 'text' name ='cans'><br><br>"; 

而且这样的:

$ans1 = $_POST['ans'][0]; 
$ans2 = $_POST['ans'][1]; 
$ans3 = $_POST['ans'][2]; 
$ans4 = $_POST['ans'][3]; 

说明

你只需要反复张贴ans[],而不是

ans1[], ans2[], ans3[]...为了得到这样

$_POST['ans'][0], $_POST['ans'][1]...

或阵列可以使用

ans1, ans2, ans3

(不含括号[] )阅读为

$_POST['ans1'], $_POST['ans2'], $_POST['ans3']...

+0

虽然他需要很多ans1,ans2,ans3和ans4。每个问题一个。命名他们ans []将创建四个每个问题,因为他目前的方式将有1个ans1,ans2,ans3和ans4每个问题。 – Christian

您正在以一种奇怪的方式使用元素命名,您使用的是数组,但仍然使用数字。尝试产生这样的:

for ($x = 0; $x <= $MC; $x++) { 
    echo "<input type = 'text' name = 'questions[$i]'>"; 
    echo "A. <input type = 'text' name = 'ans[$i][A]'>"; 
    echo "B. <input type = 'text' name = 'ans[$i][B]'><br>"; 
    echo "C. <input type = 'text' name = 'ans[$i][C]'>"; 
    echo "D. <input type = 'text' name = 'ans[$i][D]'><br>"; 
    echo "Correct Answer: <input type = 'text' name ='cans[$i]'><br><br>"; 
} 

然后你会得到下面的结果在您的$_POST

[ 
    "questions" => [ 
     0 => "question1", 
     ... 
    ] 
    "ans" => [ 
     0 => [ 
      "A" => "answer A", 
      "B" => "answer B", 
      "C" => "answer C", 
      "D" => "answer D", 
     ] 
     ... 
    ] 
    "cans" => [ 
     0 => "A", 
     .... 
    ] 
] 

这是很容易在foreach处理:

foreach ($_POST['questions'] as $key => $question) { 
    // $question == 'question1'; 
    $answers = $_POST['ans'][$key]; // array of answers 
    $solution = $_POST['cans'][$key]; 
}