Как искать с помощью PHP / MySQL, используя разбиение на страницы

Я написал этот код:

    <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 size='14' 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
$pagination = new Pagination(7);

$page_max = $pagination->getPageMax();$start = $pagination->getStart();

if(!isset($_POST['search'])) {
$numberOfPages = $pagination->numberOfPages($database->getData("SELECT count(id) FROM customers"));
$customers = $database->getDataAsArray("SELECT * FROM customers LIMIT $start, $page_max");
}
else{
$searchValue = '%'. $_POST['searchValue'] . '%';
$numberOfPages = $pagination->numberOfPages($database->getData("SELECT count(id) FROM customers WHERE name LIKE '$searchValue' "));
$customers = $database->getDataAsArray("SELECT * FROM customers WHERE name LIKE '$searchValue' LIMIT $start, $page_max");
}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

echo $pagination->previous($numberOfPages);for($i = 0; $i < $numberOfPages; $i++){
echo '<li class="page-item"><a class="page-link" href="?page='. $i . '">'. $i. '</a></li>';
}

echo $pagination->next($numberOfPages);
?>

</ul>
</div>

Функция getDataAsArray выглядит следующим образом:

public function getDataAsArray($myQuery){
$this->connection = mysqli_connect($this->host, $this->dbUsername, $this->dbPassword, 'portal');
$query = mysqli_query($this->connection, $myQuery);
$results = array();
while($line = mysqli_fetch_array($query)){
$results[] = $line;
}
return $results;
}

Я знаю, что должен использовать: [имя] или что-то еще, чтобы установить параметр в своем запросе, вопрос не об этом, и, конечно же, я должен использовать подготовленную оценку. Сделаем это позже.

Вопрос:

Я написал код для поиска в записях БД. Я отлично работаю, но при поиске создается новая нумерация страниц со всеми новыми записями и при нажатии на вторую страницу. Страница строит пагинацию со всеми записями из базы данных, поэтому я больше не буду использовать ее searchValue.

Я думаю, что эта проблема будет решена с помощью параметра $ _GET, такого как поиск по URL или Ajax, но я не знаю как.

Кто-нибудь может мне помочь?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector