0
<!DOCTYPE html>
<html>
<head>
<title>Talenquiz2</title>
</head>
<body>


<?php

if (isset($_GET["controleer"]))
  {
  $vraag = $_GET["vraag"];
  $juistantwoord = $_GET["juistantwoord"];
  $foutantwoord1 = $_GET["foutantwoord1"];
  $foutantwoord2 = $_GET["foutantwoord2"];
  $con = mysql_connect("localhost","root","");
  mysql_select_db("dbproject", $con);
  $result = mysql_query("SELECT * FROM tblquizvragen");
  while($row = mysql_fetch_array($result))
  {
  if ($row['vraag'] == $vraag)
    {
    if ($row['juistantwoord'] == $juistantwoord)
     {
     echo "Juist!<br />";
     }
    else
      {
      echo "Fout!<br />";
      }
    }
  }
  mysql_close($con);
  echo "\n<hr />\n";
  }

$aantalvragen=1;
$con = mysql_connect("localhost","root","");
mysql_select_db("dbproject", $con);
$result = mysql_query("SELECT * FROM tblquizvragen WHERE id='". $aantalvragen . "';");
$row = mysql_fetch_array($result);

プログラムはクイズで、3 つのチェックボックスで 5 つの質問を出題します。1 つが正解で 2 つが不正解です。

for ($aantalvragen=1; $aantalvragen<=5; $aantalvragen++)
 {
 $row = mysql_fetch_array($result);
 }

彼女のリン

$vraag = $row['vraag'];
$juistantwoord = $row['juistantwoord'];
$foutantwoord1 = $row['foutantwoord1'];
$foutantwoord2 = $row['foutantwoord2'];


mysql_close($con);
?>




<form>

私のブラウザには行の値が表示されず、開いているテキストと開いているチェックボックスのみが表示されます。

<input type="text" name="vraag" value="<?php echo $vraag; ?>" /><br />
<input type="checkbox" name="juistantwoord" value="<?php echo $juistantwoord; ?>" /><br     />
<input type="checkbox" name="foutantwoord1" value="<?php echo $foutantwoord1; ?>" /><br />
<input type="checkbox" name="foutantwoord2" value="<?php echo $foutantwoord2; ?>" /><br />

<input type="submit" value="Controleer je antwoord" name="controleer" />
</form>
</body>
</html>
4

1 に答える 1

1

データベースからフェッチするためのコードが正しくありません

for(...) {
   $row = mysql_fetch_array(...);
}

結果の数に関係なく、5 行の結果を単純にループし、行配列を $row に割り当てます...ただし、行を使用せずにすべての行に対してこれを行います。したがって、最初の行を破棄することになり、行だけが保存されn-1た状態でループから抜け出します。n

期待しているデータの行数が間違っている場合、5 項目のループで処理する必要があるのは 4 項目の結果セットだけである可能性があり、最終的な行$row1の値は、値がない場合に msyql_fetch が返すブール値の FALSE になります。より多くのデータ。

代わりに次のようにしてみてください。

while($row = mysql_fetch_assoc($result)) {
    echo ..... your stuff here ...
}

はるかに信頼性が高く、利用可能な既知の行数に依存せず、データがまったくない場合は何も出力しません。

于 2013-03-07T19:41:32.443 に答える