gpt4 book ai didi

php - 使用分页搜索 PHP/MySQL

转载 作者:行者123 更新时间:2023-11-29 18:33:21 26 4
gpt4 key购买 nike

我编写了以下代码来搜索表的行:

<div class="container mx-auto">
<!--Add class table-responsive for responsive table -->
<div class="row">
<div class="col-md-6">
<form method="post">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search for..." name="searchValue">
<span class="input-group-btn">
<button class="btn btn-secondary" name='search' type="submit"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>

<table class="table mx-auto" id="'table">
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Phone</th>
<th>Company</th>
<th>More</th>

</tr>
</thead>
<tbody>
<?php
$page_max = 8;
if (isset($_POST['search'])){
$search = $_POST['searchValue'];

$entriesInDatabase = $database->getData("SELECT count(id) FROM customers WHERE name LIKE '%$search%'");
$numberOfPages = ceil($entriesInDatabase['count(id)']/$page_max);
$numberOfRecords = $page_max;
if(isset($_GET['page'])) {
$page = $_GET['page'];
$start = $page * $page_max;
}
else{
$page = 0;
$start = $page * $page_max;

}
$customers = $database->getUsers("SELECT * FROM customers WHERE name LIKE '%$search%' LIMIT $start, $numberOfRecords");
}
else{
$entriesInDatabase = $database->getData("SELECT count(id) FROM customers");
$numberOfPages = ceil($entriesInDatabase['count(id)']/$page_max);
$numberOfRecords = $page_max;
if(isset($_GET['page'])) {
$page = $_GET['page'];
$start = $page * $page_max;
}
else{
$page = 0;
$start = $page * $page_max;

}
$customers = $database->getUsers("SELECT * FROM customers LIMIT $start, $numberOfRecords");
}





foreach($customers as $customer){
$name = $customer ['name'];
$surname = $customer['surname'];
$email = $customer['email'];
$phone = $customer['phone'];
$company = $customer['company'];
$id = $customer['id'];
echo "<tr>
<td>$name</td>
<td>$surname</td>
<td>$email</td>
<td>$phone</td>
<td>$company</td>
<td><a href='customerInfo.php?id=$id' class='btn btn-sm btn-info'><i class='fa fa-info'></i></a></td>



</tr>";
}
?>
</tbody>
</table>
<ul class="pagination">
<?php

if(isset($_GET['page']) && $_GET['page'] > 0){
$previous = $_GET['page'] - 1;
echo '<li class="page-item"><a class="page-link" href="?page='. $previous.'">Previous</a></li>';
}


for($i = 0; $i < $numberOfPages; $i++){
echo '<li class="page-item"><a class="page-link" href="?page='. $i . '">'. $i. '</a></li>';
}
if(isset($_GET['page']) && $_GET['page'] < $numberOfPages - 1){
$page = $_GET['page'];
$next = $page + 1;
echo '<li class="page-item"><a class="page-link" href="?page='.$next.'">Next</a></li> ';
}
elseif(!isset($_GET['page'])){
echo '<li class="page-item"><a class="page-link" href="?page=1">Next</a></li> ';
}
?>



</ul>
</div>

当我在第 0 页时,搜索工作正常,但是当我在第 2 页时,我只能搜索该页面上的记录(我认为这是因为我的查询的限制),除此之外,当我搜索“A”它返回 7 页,但如果我单击第二页,它不会加载搜索结果,而是加载第 2 页上包含客户的主列表。

有人可以帮我解决这些问题吗?

最佳答案

首先:清理您的输入。在数据库查询中使用 POST 或 GET 可能非常非常危险。

第二个:DRY ,您可能可以用您正在使用的一半代码来完成此操作。

您“丢失”搜索的原因是您的分页没有保留搜索词。

将其添加到分页中的链接并从 POST 切换到 GET:

<?php
$searchString = '';
if($_GET['searchValue']){
$searchString = '&searchValue=' . $_GET['searchValue'];
}

if(isset($_GET['page']) && $_GET['page'] > 0){
$previous = $_GET['page'] - 1;
echo '<li class="page-item"><a class="page-link" href="?page='. $previous.$searchString.'">Previous</a></li>';
}
// more code
'... href="?page='.$i.$searchString'" ...'

'... href="?page='.$next.$searchString'" ...'

请注意,我使用 $_GET['searchValue'] 而不是 POST。在大多数情况下,使用 POST 进行搜索没有任何优势(恰恰相反,如果您使用 GET,您可以在 Google Analytics f.ex 中跟踪它)。因此,请确保将表单方法更改为 get,并将 if (isset($_POST['search'])){ 更改为 $_GET['searchValue']。如果您坚持使用 POST,则可以使用 $_REQUEST,它保存来自 GET 和 POST 的值。

关于php - 使用分页搜索 PHP/MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45512658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com