【问题标题】:While loop and for statementWhile 循环和 for 语句
【发布时间】:2012-09-21 01:59:30
【问题描述】:

我正在尝试为我的学生构建在线阅读测试。我的数据库中目前有两个表:“学生”和“问题”。在“学生”中,我为每个学生设置了一行,其中包含其姓名、组号和问题的答案。问题列称为问题[1]、问题[2],依此类推。

在“问题”中,我有 4 个列:ID、“第一”、“章节”和“问题”。 'first' 是一个真/假字段,如果它是一章的第一个问题,它的值为 1。我用 while 循环调用那些。

echo '<ol>';
$query = mysql_query("SELECT * FROM `question`");
while($row_q = mysql_fetch_assoc($query)) {
if($row_q['first']==1){
echo '<h2>Chapter '.$row_q['chapter'].'</h2><br>';
}
echo '<li>';
echo $row_q['question'];
echo '</li>';
echo '<br>';
}
echo '</ol>';

它的回声优美。现在,我尝试在每个问题下放置一个输入字段,以便学生可以给出答案并在页面末尾提交。我怎样才能做到这一点?我尝试使用 for($i=1;$i

我愿意接受所有建议。谢谢!

【问题讨论】:

  • 另外,您不需要echo '&lt;br&gt;';&lt;li&gt; 标签显示为块,如果你想要更多的填充,你应该用 css 做到这一点:&lt;style&gt; li {padding:5px 0px;}&lt;/style&gt;
  • @sarah 好的,我想问 2 件事,第一,您想对一个问题提交多个答案(例如问题 1 的 4 个答案)或只对一个问题提交一个答案并关闭答案用户字段?第二,您是否使用 ajax 提交表单?谢谢

标签: php for-loop while-loop


【解决方案1】:

没有必要做一个 for 循环,你已经在一个循环中了 :) 只需设置一个名为 question number 的变量并在 while 循环中递增它。

$question_number =1;

echo '<ol>';
$query = mysql_query("SELECT * FROM `question`");
while($row_q = mysql_fetch_assoc($query)) {
    if($row_q['first']==1){
        echo '<h2>Chapter '.$row_q['chapter'].'</h2><br>';
    }
    echo '<li>';
    echo "<label>$question_number".$row_q['question']."</label>";
    echo "<input type='text' name='$row_q[\'ID\']'></input>";
    echo '</li>';
    echo '<br>';

    $question_number++; 
}
echo '</ol>';

【讨论】:

  • 没想到我可以直接在我的循环中添加它...谢谢!
【解决方案2】:

echo '';

在问题文本下...然后在PHP var_dump($_REQUEST) 中查看答案...

编辑:

为了显示保存的答案,您需要执行以下操作:

echo '<input name="answer_' . $idx . '" type="text" ' .
  value="' . htmlspecialchars($student_row["answer_$idx"]) . '" />';

并在循环时维护一个计数器 $idx...

如果您的答案按照您的描述平铺在学生表中,并且答案值列被命名为“answer_1”等。

如果答案在单独的表格中标准化,您可以将表格连接在一起:

select * from question q left join answer a on a.question_id = q.question_id and
  a.student_id = <current student id>

【讨论】:

  • 像魅力一样工作,谢谢!现在,我希望该值是该特定问题的数据库中的值,因此学生可以在某个时候返回表格并更改他的答案。在我的数据库中,答案列显示为 answer[1], answer[2]... $result = mysql_query("SELECT * FROM eleve"); $row = mysql_fetch_assoc($result); echo '' ; 我知道有问题,但我想不通。
  • 我在解析 answer[1]、answer[2] 的字段时遇到问题... 看起来我缺少报价或其他内容。 value="' . $row['answer'][$idx]. '" 我收到此通知。注意:未定义索引:答案
  • 试试$row["answer[$idx]"]。你可以 var_dump($row) 来查看列名是什么
  • 双引号就是答案。再次感谢!
猜你喜欢
  • 2017-03-08
  • 1970-01-01
  • 2013-06-09
  • 2013-12-20
  • 2016-01-12
  • 1970-01-01
  • 2012-06-18
  • 2017-06-08
  • 1970-01-01
相关资源
最近更新 更多