2017-07-26 41 views
1

每當我點擊按鈕,頁面被刷新並丟失了變量中的以前的值。當我使用mt_rand函數時,獲取的行有時會被複制。點擊每個按鈕上的下一行怎麼做?如何從每個按鈕中的數據庫獲取下一行點擊PHP

取出隨機行是沒有必要的,至少我想按順序得到下一行。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<?php 

//Database initialization 
$StudName =""; 
$Name=""; 
$Task=""; 
$connection=mysqli_connect("localhost","APB","12345678","apb"); 

$number=1; 
if(isset($_POST["button1"])) 
{ 
    $number = mt_rand(1,10); 
    $s="SELECT * FROM student_list WHERE NUM='$number'"; 
    $r= mysqli_query($connection,$s); 
    $row = mysqli_fetch_array($r); 

    $StudName = $row["NAME"]; 
    $Name=""; 
} 

if(isset($_POST["Submit5"])) 
{ 
    $numb = mt_rand(1,4); 

    $s="SELECT * FROM computer WHERE rn='$numb'"; 
    $r= mysqli_query($connection,$s); 
    $row=mysqli_fetch_array($r); 

    $Task = $row["task"]; 
    $StudName =""; 
    $Name =""; 
} 
?> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <body> 
     <form id="form" action="" name="form1" method="POST" > 
      <h1>MPTC FRESHER'S DAY CELEBRATION - 2017</h1> 
      <h5>This time the lucky one is ...</h5> 

      <p> 
       <input type="hidden" name="process" value="1";> 
       <input onclick="<?php $number=$number+1;?>" name="button1" type="submit" id="button1" value="GENERATE" /> 
       <br/> 
       <input id="t1" name="textfield" type="text" value="<?php echo $StudName; ?>" /> 
      </p> 

      <p> 
       <h5>Be Ready !! </h5> 

       <input type="submit" value="TASK" name="Submit5" value="COMPUTER" /> 
       <br/> 
       <input name="textfield3" type="text" value="<?php echo $Task; ?>" /> 
      </p> 
     </form> 
    </body> 
</html> 

回答

0

首先,onclick="<?php $number=$number+1;?>"什麼都不做。你不能使用js事件處理程序來執行php代碼。

你能做什麼,你實際上是非常接近的解決方案,是這樣的:

 <p> 
      <input type="hidden" name="process" value="<?php echo $number;?>";> 
      <input name="button1" type="submit" id="button1" value="GENERATE" /> 
      <br/> 
      <input id="t1" name="textfield" type="text" value="<?php echo $StudName; ?>" /> 
     </p> 

,改變PHP的一部分是這樣的:

$number= $_POST['process']; 
if(isset($_POST["button1"])) 
{ 
    $number = $number + 1; 
} 
$s="SELECT * FROM student_list WHERE NUM='$number'"; 
$r= mysqli_query($connection,$s); 
$row = mysqli_fetch_array($r); 

$StudName = $row["NAME"]; 
$Name=""; 
0

使用AJAX並在變量和顯示中附加響應。

+0

請問您提供的代碼?是緊急狀況 –

0

要獲得前一個或在數據庫中的下一行(數字)你可以做這個查詢:

SELECT * FROM student_list WHERE num = (SELECT min(num) FROM student_list WHERE num > '$number') LIMIT 1; 

而對於前一個它相同但使用小於(<);

我想給你的另一個技巧是不直接向查詢中注入變量。但是如果你必須的話,至少如果你知道值是一個數字,你可以通過執行 $ number =(int)$ number; 您可以查看的其他函數是數字型,$ number> 0等。

但是要避免將這些變量直接放入查詢中。查看準備好的語句,PDO開箱即用,比使用mysqli_ *更安全。

相關問題