0

MySQL データベースに質問のリストがあり、ランダムに承認された質問をユーザーに表示したいと考えています。[ランダム] ボタンをクリックすると、別のランダムな質問が表示されますが、ユーザーが既に見たものは表示されません。

現在、スクリプトは次のようになっています。

<?php

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("aldrig") or die(mysql_error());

$result = mysql_query("SELECT * FROM spg WHERE approved='1' ORDER BY RAND() LIMIT 1;") 
or die(mysql_error());    

while($row = mysql_fetch_array( $result )) {
    echo "<div class='contentTitle'><h1>";
    echo $row['text']; 
    echo "</h1></div>";
}

?>
4

1 に答える 1

1

すべての質問を取得することをお勧めします。代わりに、コードで既に表示されているものを結果リストから取り出し、破棄したくない場合は新しいリストに入れることをお勧めします。

    <?php

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("aldrig") or die(mysql_error());

$result = mysql_query("SELECT * FROM spg WHERE approved='1'") or die(mysql_error());
$answers = mysql_fetch_array($result);

start_session();

if (isset($_COOKIE["answers"]))
    $alreadyShownAnswers = json_decode($_COOKIE["answers"]);
else
    $alreadyShownAnswers = array();

$answerToShow = $answers[$randomIndex];
$alreadyShownAnswers[] = $answers[$randomIndex];
unset($answers[$randomIndex]);
$answers = array_values($answers);

echo "<div class='contentTitle'><h1>";
echo $answerToShow; 
echo "</h1></div>";

$_COOKIE["answers"] = json_encode(alreadyShownAnswers);

?>

このようなものでしょうか?

編集:

Cookieまたはセッションでそれを行う方法

start_session();
$_COOKIE["answer1"] = $answer1;
$_SESSION["answer2"] = $answer2;

resreshing 後にこれらの値を再度取得する場合は、これを実行します。

start_session();
$answer1 = $_COOKIE["answer1"];
$answer2 = $_SESSION["answer2"];

JavaScript を使用して永続的なストレージを使用するには Lawnchair: http://brian.io/lawnchair/

例:

var store = new lawnchair({name:'testing'}, function(store) {

    // create an object
    var me = {key:'brian'};

    // save it
    store.save(me);

    // access it later... yes even after a page refresh!
    store.get('brian', function(me) {
        console.log(me);
    });
});

EDIT2:

最初のコード ブロックを新しいコードで更新しました。これはテストしていませんが、動作するはずです。

于 2012-06-23T15:10:44.230 に答える