2015-10-14 71 views
1

我正在構建一個代碼,每次刷新頁面或在屏幕上回答問題時都會顯示一個隨機問題。這是我對我的conexao.php文件中的代碼選擇隨機問題:更新隨機選擇的行

$research = mysqli_query ($connection, "SELECT * FROM enquete ORDER BY RAND() LIMIT 1"); 
$result = mysqli_fetch_array($research); 
$info = $result; 

上面的代碼工作正常選擇從我的「民意調查」表中的隨機問題。

我的問題是當問題得到解答。這是我有一個顯示的問題,並提出了2提交按鈕(YES/NO)的代碼:

<?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添加到一個回答問題(在上面的示例中爲YES),但是不是將1添加到屏幕上顯示的當前隨機問題,而是將下一個將顯示的問題加1。

例如:

  • 問題1:天空是藍色的? (如果YES被擊中,則它將下一個問題「sim」行加1而不是加到這一行上。)
  • 問題2:你喝水嗎? (它已經因爲之前的問題得到了1,如果我認爲是這一個它增加了1到下一個問題「是」行)

當然,我打算做的是讓系統將當前問題的「是」行添加1,而不是下一個。

如果有人可以幫助我提供這方面的提示,我會很高興。

回答

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)

0

謝謝你的工作。我使用了post和一個int值(建議的行的ID)。這是我如何讓代碼工作。

更新的形式加入這一行的建議:

`<input type="hidden" name="pergunta" value="<?= $info['id'] ?>" />` 

和更新,查詢到這一點:

現在更新屏幕上的問題。謝謝。