2017-07-26 2 views
1

Immer wenn ich auf die Schaltfläche klickte, wurde die Seite aktualisiert und die vorherigen Werte in Variablen verloren. Wenn ich die Funktion mt_rand verwende, werden die abgerufenen Zeilen manchmal dupliziert. Was ist zu tun, um bei jedem Klick auf die nächste Reihe zu kommen?So holen Sie die nächste Zeile aus der Datenbank auf jeder Schaltfläche klicken Sie in PHP

Fetch zufällige Zeile ist nicht notwendig, zumindest möchte ich die nächste Zeile in der Reihenfolge zu bekommen.

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

Antwort

0

Zunächst einmal, dass onclick="<?php $number=$number+1;?>" nichts tut. Sie können keinen js-Ereignishandler verwenden, um PHP-Code auszuführen.

Was Sie tun können, und Sie sind tatsächlich sehr nahe an der Lösung, ist dies:

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

und dergleichen diese php Teil ändern:

$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

Verwenden Sie AJAX und anhängen Antwort in Variable und Show.

+0

Geben Sie bitte den Code an? Es ist ein Notfall –

0

Um den vorherigen zu erhalten oder nächste Zeile (Nummer) in der Datenbank Sie diese Abfrage tun können:

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

Und für die vorherigen seine gleich, aber verwenden kleiner als (<);

Ein weiterer Tipp, den ich Ihnen geben möchte ist, Variablen nicht direkt in die Abfrage zu injizieren. Aber wenn Sie müssen, zumindest wenn Sie wissen, dass der Wert eine Zahl sein wird, können Sie es in Int umwandeln $ number = (int) $ number; Weitere Funktionen, die Sie untersuchen können, sind is_numeric und $ number> 0 usw.

Vermeiden Sie es vielmehr, diese Variablen direkt in die Abfrage zu platzieren. Schauen Sie sich vorbereitete Anweisungen an, PDO funktioniert sofort und ist viel sicherer als mysqli_ *.

Verwandte Themen