2013-08-11 4 views
0

를로드 내가 현재 사용하고 코드입니다 때 한 번만 작동해야하는 경우 :한 Statment 페이지는 여기

if (!isset($id)) { 
    $id = rand (1, 3); 
} 

$con = mysql_connect("localhost","root",""); 
if (!$con){ 
die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("mycompany", $con); 


$result = mysql_query("SELECT * FROM database WHERE id = '$id'"); 

if (!$result) { 
echo 'Could not run query: ' . mysql_error(); 
exit; 
} 

$row = mysql_fetch_array($result); 
echo "{$row['question']}" ; 

나는 페이지가로드 될 때 RAND 함수는 한 번만 작동합니다가. 누구나 페이지를 새로 고침하면 rand 기능이 작동하지 않아 방문자가 동일한 질문을 다시 받게됩니다.

저는 PHP의 초보자입니다. 누구든지 그것을 어떻게 도와주십시오. 어떤 종류의 도움이라도 대단히 감사합니다.

+0

세션 사용 .... – Mihai

+0

랜드 기능이 이미 작동 중입니다. 너 정확히 원하는거야? – Garry

+0

rand() 함수가 이전 페이지로드에서 선택된 항목을 알지 못하기 때문에 기대 한대로 얻을 수 있습니다. (1,3) 여러 번 사이에 하나의 숫자를 선택할 수 있으며, 다를 수도 있습니다.이를 방지하기 위해 $ '$ id'를 저장하고 더 나은 논리를 만들기위한 _SESSION –

답변

-1

mysql() - 함수가 사용되지 않으므로 코드도 수정했습니다. 이 메소드들을 mysqli() 메소드로 대체 할 것을 권장한다.

이제 문제는 임의의 범위가 너무 짧아서 같은 질문으로 돌아올 수 없다는 것입니다. 브라우저는 이전 질문 ID를 인식하지 못합니다. 세션을 사용하여 전달해야합니다.

// store current question id in the session 
session_start(); 
$id = 0; 

if (!isset($id)) { 
    $oldID = 0; 
    if(isset($_SESSION['questionID']) $oldID = $_SESSION['questionID']; 

    // loop random 
    do { 
     $id = rand (1, 3); 
    } while($id == $oldID); 
    // store new id to session 
    $_SESSION['questionID'] = $id; 
} 

$con = mysqli_connect("localhost","root","") or die ('Could not connect: ' . mysqli_error()); 
// when publishing i don't recommend to post the mysql error, don't forget to change it. 
mysqli_select_db("mycompany", $con); 

$result = mysqli_query("SELECT * FROM database WHERE id = '$id'"); 

if (!$result) { 
    echo 'Could not run query: ' . mysqli_error(); 
    exit(); 
} 


$row = mysqli_fetch_array($result); 
echo "{$row['question']}" ;