1

基本的にオンライン クイズである PHP/MSQL アプリケーションを作成しています。ユーザーはクイズを開始します。インスタンスの内部ではランダムに 30 の質問が db テーブルから取得され、セッションに保存されます。私のデータベース テーブルには、列としてqid、question、op1、op2、op3、op4、ans、categoryがあります (すべての質問には 4 つのオプションと 1 つの回答が必要なため)。特定のカテゴリのテーブルに保存されているすべての (インスタンス 30 の)質問を取得し、while()/for() などのループを使用して 2/3 次元の連想配列としてセッション変数に保存します。

私がまだ書いたスクリプトは、

session_start();
require 'connection.php';
$sql = "SELECT * FROM questions WHERE category='$category'";
$result = mysql_query($sql) or die(mysql_error());
$found=mysql_num_rows($result) or die(mysql_error());
if ($found!=0) {
    $i="1";
    $sql= "SELECT * FROM questions WHERE category='$category'";
    $result = mysql_query($sql) or die(mysql_error());
    while ($que= mysql_fetch_assoc($result) && $i<=$found) {
        $_SESSION["$i"]= array(
                                "question"=>$que['question'],
                                "op1"=>$que['op1'],
                                "op2"=>$que['op2'],
                                "op3"=>$que['op3'],
                                "op4"=>$que['op4'],
                                "ans"=>$que['ans']
                                );
                  $i++;
                 }
        echo $_SESSION["$i"]; // echo-ing some session variable
}
mysql_close($dbc);

以前に同じことを達成するために以下のスクリプトも使用しましたが、成功しませんでした-

session_start();
    require 'connection.php';
    $sql = "SELECT * FROM questions WHERE category='$category'";
    $result = mysql_query($sql) or die(mysql_error());
    $found=mysql_num_rows($result) or die(mysql_error());
    if ($found!=0) {
        $i="1";
        $result1 = mysql_query($sql) or die(mysql_error());
        $_SESSION['que'][][]=array();
        while ($que= mysql_fetch_assoc($result1) && $i<=$found) {
                $_SESSION['que'][$i]['question']=$que['question'];
                $_SESSION['que'][$i]['op1']=$que['op1'];
                $_SESSION['que'][$i]['op2']=$que['op2'];
                $_SESSION['que'][$i]['op3']=$que['op3'];
                $_SESSION['que'][$i]['op4']=$que['op4'];
                $_SESSION['que'][$i]['ans']=$que['ans'];
            $i++;
            }
            }
    mysql_close($dbc);

最後に、以下のコードを使用してこれを行うことができました-

session_start();
        require 'connection.php';
        $sql = "SELECT * FROM questions WHERE category='$category'";
        $result = mysql_query($sql) or die(mysql_error());
        $found=mysql_num_rows($result) or die(mysql_error());
        if ($found!=0) {
            $i="1";
            $result1 = mysql_query($sql) or die(mysql_error());
            while ($que= mysql_fetch_assoc($result1) && $i<=$found) {
                    $str="que".$i;
                    $_SESSION[$str]['qno']=$i;
                    $_SESSION[$str]['question']=$que['question'];
                    $_SESSION[$str]['op1']=$que['op1'];
                    $_SESSION[$str]['op2']=$que['op2'];
                    $_SESSION[$str]['op3']=$que['op3'];
                    $_SESSION[$str]['op4']=$que['op4'];
                    $_SESSION[$str]['ans']=$que['ans'];
                    $_SESSION[$str]['opt']="0";
                $i++;
                }
                }
        mysql_close($dbc);
4

1 に答える 1

1

これを試してみてください。

require 'connection.php';
session_start();
$sql = "SELECT * FROM questions WHERE category='$category'";
$result = mysql_query($sql) or die(mysql_error());
$found=mysql_num_rows($result) or die(mysql_error());
if ($found!=0) {
$i=1;
$sql= "SELECT * FROM questions WHERE category='$category'";
$result = mysql_query($sql) or die(mysql_error());
while ($que= mysql_fetch_assoc($result) && $i<=$found) {
    $_SESSION[$i]= array(
                            "question"=>$que['question'],
                            "op1"=>$que['op1'],
                            "op2"=>$que['op2'],
                            "op3"=>$que['op3'],
                            "op4"=>$que['op4'],
                            "ans"=>$que['ans']
                            );
    }
    print_r($_SESSION[$i]);
    $i++;
}
mysql_close($dbc);
于 2013-04-06T04:15:20.423 に答える