2017-07-26 8 views
1

ボタンをクリックするたびに、ページがリフレッシュされ、変数の前の値が失われました。 mt_rand関数を使用すると、フェッチされた行が重複することがあります。各ボタンの次の行をクリックするにはどうすればいいですか?各ボタンのデータベースから次の行を取り出す方法

フェッチランダム行は必要ありません。少なくとも、次の行を順番に取得したいと思います。

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

そして、前回のためにその同じが、より小さい使用:このクエリを行うことができ、データベース内の次の行(番号) (<);

もう1つのヒントは、変数に直接クエリに注入しないことです。しかし、あなたがする必要がある場合は、少なくとも値が数値になることがわかっている場合は、それをint型にキャストできます $ number =(int)$ number; 他の関数は、is_numeric、$ number> 0などです。

しかし、これらの変数を直接クエリに配置することは避けてください。準備されたステートメントを調べると、PDOはそのままの状態で動作し、mysqli_ *よりもはるかに安全です。

関連する問題