2016-11-03 5 views
0

EDIT 私はまだ文を準備していません。最初に機能をダウンさせたい。
フォーム提出でMySQLアップデートが表示されません(ただし、更新は正常に実行されます)

私は、ユーザーがデータベースから質問を表示して同時に更新できるページを作成しています。質問はテキストボックスにエコーされます。各質問/選択肢について、私はフォームと送信ボタンをエコーし​​ています。変更が行われると、サブミット時にクエリが正常に実行され、ブラウザでリフレッシュすると変更が更新されます。ただし、更新ボタンを押すと、更新するのではなく古い結果が表示されます。私はここで何ができますか?フォームの送信後にヘッダーを更新するように設定しても動作しないようです。

コード

<?php include 'database.php'; include 'authenticate.php'; ?>  
<?php 
    $questionText = $_POST['question']; 
    $qNum = $_POST['question_number']; 
    $query = "SELECT * FROM `questions`"; 
    $result = $mysqli->query($query); 
?> 
<?php 
    if (isset($_POST['update'])) { 
    $questionQuery = "UPDATE `questions` SET text = '$questionText' WHERE question_number = '$qNum'"; 
    $mysqli->query($questionQuery) or die("Query failed: " . $mysqli->error.__LINE__); 
    } 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Update</title> 
</head> 
<body> 
<?php while($row = $result->fetch_assoc()): ?> 
<?php $questionNumber = $row['question_number']; ?> 
    <?php echo "<form action='update.php' method='post'>"; ?> 
     <?php echo $questionNumber; ?> <input type="text" name="question" value="<?php echo $row['text']; ?>" style="width: 75%" /> 
     <input type="hidden" name="question_number" value="<?php echo $row['question_number']; ?>" /><br> 
     <?php 
      $query1 = "SELECT * FROM `choices` WHERE question_number = '$questionNumber'"; 
      $result1 = $mysqli->query($query1); 

      //echo out choices right under each question 
      while ($row1 = $result1->fetch_assoc()) { 
       $text = $row1['text']; 
       if ($row1['is_correct'] == 1) { 
        echo "<input type='text' name='choice' value='$text' style='border: 4px solid lightgreen' />" . "<br>";          
       } else { 
        echo "<input type='text' name='choice' value='$text' style='border: 4px solid red' />" . "<br>";           
       } 
      } 
     ?> 
     <input type="submit" name="update" value="Update" /> 
    <?php echo "</form>"; ?> 
    <?php echo "<br>"; ?> 
<?php endwhile; ?>   

+0

データは更新されていますが、ウェブページは更新されていない場合は、キャッシュに問題がある可能性があります。 –

+0

[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php)*** [MySQLi](http://php.net/manual)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)ステートメントについて学びます。 /en/mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! [それを信じていない?](http://stackoverflow.com/q/38297105/1011527) –

+0

私はこれで多くのChromeを実行します。私のハック/解決策は、URLの最後に何かを置くことで、ブラウザにキャッシュされたコピーを無視させることです。 '<?php echo"

答えて

0

あなたが更新前の選択を実行するためですので、あなたは、保存された古い値が表示されます。

移動更新ブロックの後に、このライン

$result = $mysqli->query($query); 

。 :)

+0

それはそうしました。おかげでm8! –

関連する問題