2012-06-23 4 views
0

MySQL 데이터베이스에 질문 목록이 있으며 임의로 승인 된 질문을 사용자에게 표시하려고합니다. 임의 버튼을 클릭하면 다른 임의의 질문이 표시되지만 사용자가 이미 본 것은 없습니다.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>"; 
} 

?> 
+0

무엇이 질문입니까? –

+0

여기에 누락 된 관련 정보가 있습니다. 사용자가 본 것을 어떻게 추적합니까? 당신의 질문에 대해 어떤 것이 효과가 있습니까? 어떤 도움이 필요 하신가요? –

+0

새 질문을 볼 때마다 각 사용자가 이미 본 질문 목록을 저장하고 목록을 업데이트해야합니다. –

답변

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); 

?> 

이와 비슷한 내용일까요?

편집 :

다시 이렇게 resreshing 후 이러한 값을 검색 할 때 이제 쿠키 또는 세션

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

와 함께 할 수있는 방법입니다.

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

는 영구 저장 사용 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 :

내가 가지고, 새로운 코드로 첫 번째 코드 블록 업데이트 이 테스트를 거치지는 않았지만 그렇게 작동해야합니다.

+0

네, 지금까지는 좋은 것 같습니다. 페이지를 다시로드 할 때 테스트 해보고 문제가 해결되는지 확인할 것입니다. – user1476925

+0

나는 그것을 시험해 보았다. 페이지가 비어 있습니다. – user1476925

+0

아니요 페이지를 새로 고침하면 답변이 저장되지 않습니다. js 플러그인/라이브러리를 사용하여 영구 값을 저장하거나 영구 값을 쿠키에 수동으로 저장할 수 있습니다. – furier

관련 문제