Php 在搜索栏中,当我搜索键的时候,它仍然会使整个页面并没有页面,无论表中是否有匹配项
当我在搜索栏中搜索时,它不会根据搜索键元素生成完全没有页面,这里是代码Php 在搜索栏中,当我搜索键的时候,它仍然会使整个页面并没有页面,无论表中是否有匹配项,php,html,mysql,Php,Html,Mysql,当我在搜索栏中搜索时,它不会根据搜索键元素生成完全没有页面,这里是代码 <?php $total_num_page=2; if (isset($_GET['page'])) { $page_id = $_GET['page']; } els
<?php
$total_num_page=2;
if (isset($_GET['page']))
{
$page_id = $_GET['page'];
}
else
{
$page_id = 1;
}
$search = '' ;
if( isset($_POST['search']) )
{
$search = urldecode($_POST['search']);
}
else if( isset($_GET['search']) )
{
$search = urldecode($_GET['search']);
}
if ( $search )
{
$all_post_query = "select * from files where recieved_by like '%" . $search . "%' or processed_by like '%" . $search . "%' or purpose like '%" . $search . "%' or file_name like '%" . $_SESSION["search"] . "%' order by date desc";
$all_post_run = mysqli_query($con, $all_post_query);
$all_post = mysqli_num_rows($all_post_run);
$total_page = ceil($all_post / $total_num_page);
$page_start_from = ($page_id - 1) * $total_num_page;
}
else {
$all_post_query = "select * from files order by date desc";
$all_post_run = mysqli_query($con, $all_post_query);
$all_post = mysqli_num_rows($all_post_run);
$total_page = ceil($all_post / $total_num_page);
$page_start_from = ($page_id - 1) * $total_num_page;
}
?>
这是分页代码
<ul class="pagination">
<?php
$search_str = '';
if ($search) {
$search_str = "&search=" . urlencode($search);
}
for ($i = 1; $i <= $total_page; $i++)
echo "<li class='" . ($page_id == $i ? 'active' : '') . "'><a href='index.php?page=" . $i . $search_str . "'>$i</a></li>";
?>
</ul>
发布时使用POST中的搜索字符串,单击页面链接时使用GET。如果不是,则使用空字符串
if (isset($_GET['page'])) {
$page_id = $_GET['page'];
} else {
$page_id = 1;
}
$search = '' ;
if( isset($_POST['search']) ) {
$search = urldecode($_POST['search']);
}
else if( isset($_GET['search']) ) {
$search = urldecode($_GET['search']);
}
这里我们在查询中使用该关键字
建议:将查询更改为使用COUNT(*)来查找总记录,而不是使用num_行
if ( $search ) {
$all_post_query = "select * from files where recieved_by like '%" . $search . "%' or processed_by like '%" . $search . "%' or purpose like '%" . $search . "%' or file_name like '%" . $search . "%' order by date desc";
$all_post_run = mysqli_query($con, $all_post_query);
$all_post = mysqli_num_rows($all_post_run);
$total_page = ceil($all_post / $total_num_page);
$page_start_from = ($page_id - 1) * $total_num_page;
} else {
$all_post_query = "select * from files order by date desc";
$all_post_run = mysqli_query($con, $all_post_query);
$all_post = mysqli_num_rows($all_post_run);
$total_page = ceil($all_post / $total_num_page);
$page_start_from = ($page_id - 1) * $total_num_page;
}
也在这里
<?php
if ( $search ) {
$p_query = "select * from files where recieved_by like '%$search%' or processed_by like '%$search%' or purpose like '%$search%' or file_name like '%$search%' order by date desc limit $page_start_from, $total_num_page";
} else {
$p_query = "select * from files order by date desc limit $page_start_from, $total_num_page";
}
我建议您保留url中的页码作为参数,而不是会话。请检查会话是否未设置。使用isset(session['key'])函数。@VimukthiGuruge,请告诉我在单击任何其他链接时在何处放置unset,以便它应该离开搜索会话或何时刷新it@tan先生,告诉我如何使用它,在哪里?@tan,现在代码运行正确,在表中搜索代码时有一个简单的错误,我删除了它,工作正常,非常感谢,先生,一切正常,但它仍然显示总页数,如果没有匹配,我看不到任何显示总“页数”的内容(我可以看到锚1、2、3…等的代码),我不明白“没有匹配”是什么意思。在搜索栏中,当我搜索键时,它仍然会使整个页面没有页面,表中是否有匹配项。例如:如果表中有100条记录,每页10条,则会看到10个分页链接,即使您的搜索关键字也只匹配20条记录。在这种情况下,您只能看到2个分页链接。这就是你的意思吗?对不起,我不小心错过了你查询中的一个$_会话['search']。请将其替换为$search。编辑了我的答案。
<?php
if ( $search ) {
$p_query = "select * from files where recieved_by like '%$search%' or processed_by like '%$search%' or purpose like '%$search%' or file_name like '%$search%' order by date desc limit $page_start_from, $total_num_page";
} else {
$p_query = "select * from files order by date desc limit $page_start_from, $total_num_page";
}
<ul class="pagination">
<?php
$search_str = '';
if ($search) {
$search_str = "&search=" . urlencode($search);
}
for ($i = 1; $i <= $total_page; $i++)
echo "<li class='" . ($page_id == $i ? 'active' : '') . "'><a href='index.php?page=" . $i . $search_str . "'>$i</a></li>";
?>
</ul>