我正在构建一个代码,每次刷新页面或在屏幕上回答问题时都会显示一个随机问题。这是我在conexao.php文件中的代码,用于选择随机问题:
$research = mysqli_query ($connection, "SELECT * FROM enquete ORDER BY RAND() LIMIT 1");
$result = mysqli_fetch_array($research);
$info = $result;
上面的代码可以很好地从我的" enquete"中选择一个随机问题。表
我遇到的问题是问题得到解答。这是我显示问题的代码,并显示2个提交按钮(是/否):
<?php
include 'conexao.php';
$contador = 0;
do{
echo $info['pergunta'];
if(isset($_POST['sim'])){
mysqli_query($connection,"UPDATE enquete SET sim = sim + 1 WHERE pergunta = '".$info['pergunta']."'") ;
echo "<br/>".$info['sim']."people who answered YES <br/>";
echo $info['nao']." people who answered NO <br/>";
}
$contador++;
} while ($contador < 1);
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="estilo.css">
<link async href="http://fonts.googleapis.com/css?family=Aclonica"
rel="stylesheet" type="text/css"/>
</head>
<div class="wrapper">
<form action="" method="post">
<input type="submit" class="botao-css" value="Sim" name="sim"/><br/>
<input type="submit" class="botao-css" value="Não" name="votarnao"/><br/>
</form>
</div>
</html>
我遇到的问题如下:上面的代码似乎可以将1添加到已回答的问题中(上例中的“是”),但不是在屏幕上显示的当前随机问题上添加1而是添加1下一个问题将会显示出来。
例如:
当然,我打算做的是让系统添加1到&#34;是&#34;当前问题的一行,而不是下一个问题。
如果有人可以帮我提供相关提示,我会非常高兴。
答案 0 :(得分:4)
首先,我认为您需要在表单中添加一个字段,以确定哪个问题与提交相关:
<form action="" method="post">
<input type="hidden" name="pergunta" value="<?= $info['pergunta'] ?>" />
<input type="submit" class="botao-css" value="Sim" name="sim"/><br/>
<input type="submit" class="botao-css" value="Não" name="votarnao"/><br/>
</form>
然后你需要使用它,但为了防止SQL注入,你应该确保它只能是一个整数:
mysqli_query($connection,"UPDATE enquete SET sim = sim + 1 WHERE pergunta = ".(int) $_POST['pergunta']) ;
$info
将是有关从conexao.php
获得的下一个问题的信息。 $_POST
将是上次提交的数据。因此,如果您指的是最后一个问题,那么根本不使用$info
是有道理的。
注意:如果pergunta不是整数,则应使用预准备语句来防止SQL注入。 (在这种情况下,可以用id代替pergunta)
答案 1 :(得分:0)
谢谢你的工作。我使用了post和一个int值(建议的行ID)。这是我如何使代码工作。
根据建议添加此行的更新表单:
`<input type="hidden" name="pergunta" value="<?= $info['id'] ?>" />`
并将查询更新为:
`mysqli_query($connection,"UPDATE enquete SET sim = sim + 1 WHERE id = ".(int) $_POST['pergunta']) ;`
现在它在屏幕上更新问题。谢谢。