如何将搜索到的字符串和pagenumber一起传递给ajax调用以实现分页

时间:2017-03-06 06:45:01

标签: php jquery html mysql ajax

这里我的目标是对book_search.php的搜索记录进行分页。当我给出“S”并且我在sql查询中使用limit时,每个页面中只显示4条记录,总共有16条记录。但是当我执行了第一次它将正确地给出前4个记录的下一个和上一个链接,但对于剩下的记录,当我点击下一个时它不会显示任何内容。这里有3个我用过的文件 1)book_search.php 2)ajax.php 3)script.js 这里我使用ajax调用来执行记录,以及如何在点击jquery按钮时将搜索到的字符串和页码传递给ajax调用,以便在重新记录中处理分页,请你帮忙解决问题。先感谢您。 book_search.php

<?php
include('assets/page_header.php');
?>


<div class="container">

<h1>SEARCHING THE BOOK</h1>

<form  id="search"  name="search" action="#" method="post">
Search : <input type="text" name="author" id="author">
<input id="submit" name="submit"  type="submit" value="Submit">

</form><div id="display">


</div>

</div>

</body>
</html>

ajax.php

<?php
include('db.php');
$page="";
if(isset($_GET['page']))
{
$page=$_GET['page'];
echo $page;
}
$num_rec_per_page = 5;
?>
<div id="navigation">
<input type="hidden" name="page" value="<?php if(isset($page)) echo $page;?>">
<?php

if(isset($_POST['author']))
{

    $author=mysql_real_escape_string($_POST['author']);
    if($author=="")
    {
        echo "Please Enter Title or Author or Publisher";
    }
    else
    {


        if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
        $start_from = ($page-1) * $num_rec_per_page; 

        $query1="select * from books  where  title LIKE '%$author%' OR author LIKE '%$author%' OR publisher LIKE '%$author%'  LIMIT $start_from, $num_rec_per_page  ";
        echo $query1;
        $rs_result=mysql_query("select * from books  where  title LIKE '%$author%' OR author LIKE '%$author%' OR publisher LIKE '%$author%'"); 


        $total_records = mysql_num_rows($rs_result);  
        echo $total_records;//count number of records
        $total_pages = ceil($total_records / $num_rec_per_page); 
        $phpself=$_SERVER['PHP_SELF'];
        if($page>1)
        {
        $pagenumber=$page-1;
        $prev="<a href=\"$phpself?page=$pagenumber\">[Back]</a>";
        $first="<a href=\"$phpself?page=1\">[FirstPage]</a>";
        }
        else
        {
        $prev='';
        $first='';
        }
        if($page<$total_pages)
        {
        $pagenumber=$page+1;
        $next="<a href=\"$phpself?page=$pagenumber\">[Next]</a>";
        $last="<a href=\"$phpself?page=$total_pages\">[LastPage]</a>";
        }
        else
        {

        $next="";
        $last="";
        /*$next='[next]';
        $last='[LastPage]';*/
        }
        //for ($i=1; $i<=$total_pages; $i++) { 
           // echo "<a href='members1.php?page=".$i."'> ".$i."</a> "; 

      //  };


        echo $first.$prev."Showing page<bold>$page</bold>of<bold>$total_pages</bold>pages".$next.$last;

        /*if($total_records > 0) {
            echo "<a href='members1.php?page=1'> ".'<'." </a> "; // Goto 1st page  
        }
         // echo "<a href='members1.php?page=1'> ".'<<'." </a> ";



        if($total_records > 0) {
            echo "<a href='members1.php?page=$total_pages'> ".'>'." </a> "; // Goto last page
        }*/


        $result1=mysql_query($query1) or  die(mysql_error());
        //print_r($result1);
        $count=mysql_num_rows($result1);
        //echo $count;
        $display= "<table align='center'>";
        $display.= "<tr><td>title</td>   <td>author</td>   <td>publisher</td>   <td>numcopies</td>    <td>status</td>    <td>number_of_copies_available</td> <td>Action</td> </tr>";
        while($row=mysql_fetch_array($result1)){
            $count=mysql_num_rows($result1);
            //print_r($row['bookid']);
            $r12=$row['bookid'];
            $query2=mysql_query("select bookid from bookrentalinfo where bookid=$r12");
            $num_copies_borrowed=mysql_num_rows($query2);   
            $num_copies_count=$row['numcopies'];
            $number_of_copies_available=$num_copies_count-$num_copies_borrowed;
            $display.= "<tr>";
            //echo "<td>".$row['bookid']."</td>";
        $display.="<td>".$row['title']."</td>";
            $display.= "<td>".$row['author']."</td>";
            $display.= "<td>".$row['publisher']."</td>";
            $display.= "<td>".$row['numcopies']."</td>";        
            $display.= "<td>".$row['status']."</td>";   
            $display.= "<td>".$number_of_copies_available."</td>";
            if($number_of_copies_available>0)
            {
                $display.= "<td><a href='borrow_search.php?book_id=".$row['bookid']."'>Rent</a></td>";      
            }
            else {
                $display.= "rent link is not activated";
                $display.="<td></td>";      
            }

            $display.= "</tr>";
        }
        $display.="</table>";
        echo $display;

    }
}
?>

    </div>

    </html>

的script.js

$(document).ready(function(){

$( "#renewaldate" ).datepicker({ minDate: 0});
    $("#submit").click(function(e){
    //console.log("div value"+$('#display').html());
    var author = $("#author").val();



    var dataString='author='+author;


        if(author=='')
        {
        alert("Please Enter Author or Title or Publisher Fields");
        }
        else
        {
            // AJAX Code To Submit Form.
            $.ajax({
            type: "POST",
            url: "db/ajax.php",
            data: dataString,
            cache: false,
            success: function(result){
            //alert("submitted"+result);
            $('#display').html(result);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                    alert(xhr.status);
                    alert(thrownError);
            }
            });
        }
        e.preventDefault(); 
        });
});

1 个答案:

答案 0 :(得分:0)

我认为问题可能在你的JavaScript部分,你没有通过你的pagenumber。 尝试将script.js编辑为:

编辑2 已添加&#39;&amp;&#39;在数据字符串

var author = $("#author").val();
var page   = $("#page").val();

var dataString='author='+author+'&page='+page;

并将一个带有pagenumber和ID&#34; page&#34;的inputfield添加到ajax.php的输出中。

移动结尾</form> - 标记在&#34;显示&#34; -Div。

后面

编辑你应该从第0页开始。将此添加到Ajax.php

编辑3 已更改为第1页

<input type="hidden" name="page" value="<?php echo isset($page)?$page:1;;?>">

顺便说一句......你ajax.php写的是</html>你应该删除它,因为你的页面已经有一个关闭的html标签。