带有“下一步”按钮的php限制查询pdo

带有“下一步”按钮的php限制查询pdo,php,sql,pdo,pagination,limit,Php,Sql,Pdo,Pagination,Limit,我的代码出了什么问题。。我尝试单击“下一步”按钮以显示数据库中的下一条记录。。但当我点击时什么也没发生 这是我获取记录的功能 public function getBooks() { $limit = 1; $start=0; //SELECT loginUser.username, Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser

我的代码出了什么问题。。我尝试单击“下一步”按钮以显示数据库中的下一条记录。。但当我点击时什么也没发生

这是我获取记录的功能

public function getBooks()
{
     $limit = 1;
     $start=0;

    //SELECT loginUser.username, Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username="loay";
    $query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $start, $limit";
    $statment = $this->db->prepare($query);
    $statment->execute([
        ':username' => $this->username
        //,':start' => $start, ':limit' => $limit
    ]);
    $result = $statment->fetchAll();

   echo "<table border='1'>
    <tr>
    <th>Books</th>
    </tr>";
    foreach($result as $row){
        echo "<tr>";
        echo "<td>" . $row['nameOfBook'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
这是我的表格代码


控制器中的代码:


Index.php
中,您没有正确设置$start值。下面的代码设置了
$\u POST['start']
中的
$start
值,如果该值不存在,则默认为0

而且你也没有正确地接受表单提交。我修改了代码,通过对它们的$\u POST变量进行isset()检查来接受这两种提交类型(next和login)

使用:

<?php
include_once('User.php');

if(isset($_POST['submit']) OR isset($_POST['next'])){
    $username = $_POST["user"];
    $password = $_POST["pass"];

    $object = new User();
    $object->username= $username;
    $object->Password=$password;
    if( $object->isAuthenticated() ){

      echo "User Verified . <br><br>";

      $start = 0;
      if(isset($_POST['start'])){
         $start = $_POST['start'];
      }

      $object->getBooks($start);

    }
}
else{
  echo "Wrong User Name Or Password . <br>";
}


?>
<form method="post" action="">
  Name: <input type="text" name="user" value="<?php echo $user;?>">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  password: <input type="password" name="pass" value="<?php echo $password;?>" >
  <span class="error">* <?php echo $passwordErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Login">
  <br><br>

  <input type="hidden" value="<?php echo (intval(isset($_POST['start'])?$_POST['start']:0)+1);?>" name="start"/>
  <button type="button" name="button" onclick="window.location.href='/ooRigester.php'">SignUp</button>
  <br><br>
  <input type='submit' name='next' value='next' method="post"><br>
</form>
public function getBooks($start = 0)
{
     $limit = 1;

    //SELECT loginUser.username, Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username="loay";
    $query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $start, $limit";
    $statment = $this->db->prepare($query);
    $statment->execute([
        ':username' => $this->username
        //,':start' => $start, ':limit' => $limit
    ]);
    $result = $statment->fetchAll();

   echo "<table border='1'>
    <tr>
    <th>Books</th>
    </tr>";
    foreach($result as $row){
        echo "<tr>";
        echo "<td>" . $row['nameOfBook'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}

您必须将新值
$start
传递给
getBooks()
,以便下一步工作。如何。。。请解释!向公共函数getBooks($start=0)
添加一个参数,如下所示。删除
$start=0
from
getBooks(){..here…}
POST['next']btw的值是多少?你能发布你的表单代码吗?它不起作用。。请检查一下我的表格代码,告诉我有什么错。。。但是关于if(isset($_POST['next']){}我需要这个过程,当我点击next submit时,它是不需要的,但我还是添加了它。检查第一个代码块是否有更新。很好,先生。顺便说一句,我刚刚再次更新了第一个代码块。当我点击下一个提交时,就像我重新加载页面一样。。。我应该什么时候把这个代码放进去。内部if(isset($u POST['submit']){$username=$u POST[“user”];$password=$u POST[“pass”]???谢谢你,Blue先生,这是我的工作,但它并不完全像我想要的那样,有一些错误我不知道他在哪里…想象一下,当我应该添加时,我想添加上一个按钮,我有if(isset($u POST['submit'])或isset($POST['next']){)
<?php
include_once('User.php');

if(isset($_POST['submit']) OR isset($_POST['next'])){
    $username = $_POST["user"];
    $password = $_POST["pass"];

    $object = new User();
    $object->username= $username;
    $object->Password=$password;
    if( $object->isAuthenticated() ){

      echo "User Verified . <br><br>";

      $start = 0;
      if(isset($_POST['start'])){
         $start = $_POST['start'];
      }

      $object->getBooks($start);

    }
}
else{
  echo "Wrong User Name Or Password . <br>";
}


?>
<form method="post" action="">
  Name: <input type="text" name="user" value="<?php echo $user;?>">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  password: <input type="password" name="pass" value="<?php echo $password;?>" >
  <span class="error">* <?php echo $passwordErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Login">
  <br><br>

  <input type="hidden" value="<?php echo (intval(isset($_POST['start'])?$_POST['start']:0)+1);?>" name="start"/>
  <button type="button" name="button" onclick="window.location.href='/ooRigester.php'">SignUp</button>
  <br><br>
  <input type='submit' name='next' value='next' method="post"><br>
</form>
public function getBooks($start = 0)
{
     $limit = 1;

    //SELECT loginUser.username, Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username="loay";
    $query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $start, $limit";
    $statment = $this->db->prepare($query);
    $statment->execute([
        ':username' => $this->username
        //,':start' => $start, ':limit' => $limit
    ]);
    $result = $statment->fetchAll();

   echo "<table border='1'>
    <tr>
    <th>Books</th>
    </tr>";
    foreach($result as $row){
        echo "<tr>";
        echo "<td>" . $row['nameOfBook'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}