如何在PHP中的每个按钮上从数据库中获取下一行

时间:2017-07-26 07:56:52

标签: php html

每当我单击按钮时,页面都会刷新并丢失变量中的先前值。当我使用<!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> 函数时,获取的行有时会重复。如何在每个按钮上单击下一行?

获取随机行不是必需的,至少我想按顺序获取下一行。

var initialiserTag;

initialiserTag = function(tag){
  ReactDOM.render(<MyApp />, document.getElementById(tag));
}

export default initialiserTag;

3 个答案:

答案 0 :(得分:0)

使用AJAX并在变量中附加响应并显示。

答案 1 :(得分: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="";

答案 2 :(得分:0)

要获取数据库中的上一行或下一行(数字),您可以执行以下查询:

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

对于之前的相同但使用小于(&lt;);

我想给你的另一个提示是不直接将变量注入查询。但是如果你必须这样做,至少如果你知道这个值是一个数字,你可以通过这样做把它转换为int $ number =(int)$ number; 您可以查看的其他功能是is_numeric和$ number&gt; 0等。

而是避免将这些变量直接放入查询中。查看准备好的语句,PDO开箱即用,比使用mysqli _ *。

更安全