我在PHP方面遇到了一个大问题,我需要你的帮助。我正在用PHP创建问题和备选方案。每个问题将有4个备选方案。问题将被插入一个称为问题的表中,所有备选方案将被插入另一个名为备选方案的表中。每一个问题都有自己的本我,甚至每一个备选方案也会有自己的本我。但每一组备选方案都会有问题id,以知道哪个备选方案属于哪个问题。然后我会选择它们作为单选按钮。例如,如果我们有两个问题,比如
-
澳大利亚首都叫什么名字?(假设这个问题的id为1)
A) 西德尼
B) 新德里
C) 堪培拉
D) Maimi
上面的所有备选方案都有自己的id,在这种情况下,问题id为1 -
什么是89+(3*9)(假设这个问题有id nr 3)
A) 116
B) 117
C) 115
D) 112
上面所有的备选方案都有自己的id,在这种情况下,问题id为3
3.一个物体从100米高的塔顶坠落。t秒后,它的地面高度为100-4.9t2米。它坠落2秒后失败的速度有多快
A) 98m
B) 78m
C) 56m
D) 没有
等等
这是我的代码:
if (isset($_REQUEST['submit']) && $_REQUEST['submit'] != "") {
$questions = $_POST['questions'];
$alternatives = $_POST['alternatives'];
if(isset($_POST['questions']) && $_POST['questions'] != '')
{
foreach($questions as $q) {
if($q !='') {
$sql1 = " INSERT INTO questions (question) ".
" VALUES ('".$q."'); ";
if (!db_query($sql1))
$errors['err']='Unable to create question';
$question_id[] = mysql_insert_id();
}
}
foreach($question_id AS $q_id) { // I think here is the problem but I don't know how to solv'
foreach($alternatives as $alt){
if($alt !=''){
$sql = " INSERT INTO alternatives (alternative, question_id) ".
" VALUES ('".$alt."', ".$q_id."); ";
if (!db_query($sql))
$errors['err']='Unable to create alternatives';
}
}
}
}
}
<form action="test.php" method="POST" enctype="multipart/form-data"><br /><br /><br />
for($i=1; $i<=10; ++$i){
$i.") "?><input type="text" name="questions[]" value="" size="100"/><br />
<br /><p>Alternatives:</p><br />
for($j=1; $j<=4; ++$j){
<input type="text" name="alternatives[]" value="" /><br /> } }
<input type="submit" name="submit" value="Send"></input>
<input class="button" type="reset" value="Reset" />
</form>
抱歉我的代码。。在这里写作很困难。但现在的情况是:
所有12个备选方案都被插入三次,每次都得到相同的question_id。我的意思是,前12个备选方案得到question_id 1,然后再次插入这12个备选项目,它们得到question_id=2,依此类推……我想要的是前四个备选方案获得question_id1,第二个问题的备选方案将有question_idnr 2,依此依此类推。我不知道如何解决它。
为什么不在输入名称中添加问题编号作为关键字:
<form action="test.php" method="POST" enctype="multipart/form-data"><br /><br /><br />
<?php
for($i=1; $i<=10; ++$i){?>
<input type="text" name="questions[<?php echo $i;?>]" value="" size="100"/><br />
<br /><p>Alternatives:</p><br />
<?php for($j=1; $j<=4; ++$j){?>
<input type="text" name="alternatives[<?php echo $i;?>][]" value="" /><br />
<?php } } ?>
<input type="submit" name="submit" value="Send"></input>
<input class="button" type="reset" value="Reset" />
</form>
这样你就可以得到两个非常容易循环的数组,比如
["questions"]=>
array(10) {
[1]=>
string(4) "What's the name of Australian capital city?"
[2]=> ....
["alternatives"]=>
array(10) {
[1]=>
array(4) {
[0]=>
string(6) "Sidney"
[1]=>
string(4) " New Delhi"
[2]=>
string(4) " Canberra"
[3]=>
string(2) "Maimi"
}
[2]=>
array(4) {... and so on
foreach($question_id AS $q_id)
迭代您的问题列表。
在这个循环中,foreach($alternatives as $alt)
迭代您的答案列表。因此,你要浏览整个答案列表,每个问题一次。
相反,你需要将每个答案与它所适用的问题联系起来。最简单的方法可能是一次插入一个问题。有很多其他方法可以做到这一点,但很难说如果没有看到你用来提交这些内容的界面,什么会起作用。