我有一组问题,当用户按钮点击其中一个单选按钮时,取决于值[0或1],表格会更新。现在发生的事情是,当用户单击问题的单选按钮时,该值将插入到数据库中,但当另一个用户单击该问题的单选按钮时,将插入另一行而不是更新该行。
以下代码设置问题和单选按钮。
$sql1 = mysqli_query($connection,"SELECT * FROM list WHERE id='$data' LIMIT 1");
while($row = mysqli_fetch_array($sql1)){
$id = $row['id'];
$a = $row['data'];
$data_id = $row['data_id'];
$first = '<h2>'.$a.'</h2>';
$sql2 = mysqli_query($connection,"SELECT * FROM replies WHERE d_id='$data'");
while($row2 = mysqli_fetch_array($sql2)){
$ch = $row2['reply'];
$val = $row2['val'];
$replies .= '<label><input type="radio" name="radio" onclick = "vote()" value="'.$val.'">'.$ch.'</label>
<input type="hidden" id="did" value="'.$id.'" name="did">
';
}
$displ = ''.$first.','.$answers.',<input type = "submit" name = "submit" value="submit" onClick = "post_reply()">';
echo $displ;
}
这是在用户单击单选按钮后将值添加到数据库中的方式:
$q = intval($_GET['rads']);
$con = mysqli_connect('localhost','root','','poll');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"");
if($q == 1){
$sql="INSERT INTO stats (correct,wrong) VALUES (1,0)";
} else {
$sql="INSERT INTO stats (correct,wrong) VALUES (0,1)";
//$sql = "UPDATE stats SET correct = correct + 0, wrong = wrong + 4 WHERE id = 1 LIMIT 1";
}
$result = mysqli_query($con,$sql);
$lastId = mysqli_insert_id($con);
mysqli_query($con, "UPDATE stats SET question_id='$lastId' WHERE id='$lastId' LIMIT 1");
mysqli_close($con);
该表可能看起来像这样。所以第二行也是与第一行相同的问题。
id----|----question_id----|----corect---|---wrong---
1 1 1 0
2 2 0 1
所以我想避免的是为同一个问题插入另一行,而我想更新它,所以它看起来像这样:
id----|----question_id----|----corect---|---wrong---
1 1 3 1
2 2 2 2
可以为下一个问题插入另一行。在上表中,第二行是一个不同的问题。
修改 这就是问题表的样子
id----|----question_id----|----question-------|---type--------
1 1 ...a.. tf
2 2 ....b... tf
答案表
-------id----|----question_id----|----answer-------|---correct--------
1 1 False 0
2 1 True 1
3 2 False 1
4 2 True 0
0/1表示答案是对还是错。
答案 0 :(得分:0)
删除此部分:
if($q == 1){
$sql="INSERT INTO stats (correct,wrong) VALUES (1,0)";
} else {
$sql="INSERT INTO stats (correct,wrong) VALUES (0,1)";
//$sql = "UPDATE stats SET correct = correct + 0, wrong = wrong + 4 WHERE id = 1 LIMIT 1";
}
然后找到一种方法来获取该问题的统计数据(以及用户?)(因为我无法看到表格,所以可以提供更多帮助),以及 - 从连接到您的条件的统计表中选择ID(无法查看所需的代码部分)。将正确的id返回到$ lastId变量而不是新插入的结果 - 如果该问题的统计数据不存在(选择结果为空,fetch语句返回false / null,$ lastId为false / null等),则对stats表进行插入,设置正确和错误答案为零
同时将最后一行之前的行替换为以plus:
开头的行-mysqli_query($con, "UPDATE stats SET question_id='$lastId' WHERE id='$lastId' LIMIT 1");
+if ($q == 1) {
+ mysqli_query($con, "UPDATE stats SET correct += 1 WHERE id='$lastId'");
+} else {
mysqli_query($con, "UPDATE stats SET wrong += 1 WHERE id='$lastId'");
+}