#php #html #mysql #search
#php #HTML #mysql #Поиск
Вопрос:
Я пытаюсь выполнить поиск по имени и отобразить результаты на той же странице. Мой php-код и html-код находятся в 2 отдельных файлах. Ниже приведен мой search.php код.
<?php
include_once '../connection.php';
include_once '../session.php';
$output = '';
if(isset($_POST['search'])){
$searchquery=$_POST['search'];
$result = mysqli_query($conn,"SELECT * FROM details where customername LIKE '%$searchquery'");
$count = mysqli_num_rows($result);
if($count == 0) {
$output = 'There was no search result!';
}else{
while($row = mysqli_fetch_array($result)) {
$ID = $row['id'];
$Name= $row['customername'];
$Type = $row['type'];
$Phone = $row['phoneno'];
$Email = $row['email'];
$output .= '<div>' .$Name.' '.$Type.' '.$Phone.' '.$Email.'<div>';
}
}
}
?>
<?php print("$output");?>
Ниже приведен html-код для моей формы.
<form action="search.php" method="POST" >
<center><input type="text" name="search" placeholder="Search by name" >
<input type="submit" value="Search"></center>
<br>
<table id="myTable">
<tr>
<th>ID</th>
<th>Name</th>
<th>Type</th>
<th>Telephone Number</th>
<th>Email</th>
<th>Edit</th>
<th>Delete</th>
</tr>
<?php
$i=0;
while($row = mysqli_fetch_array($result)) {
?>
<tr>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["customername"]; ?></td>
<td><?php echo $row["type"]; ?></td>
<td><?php echo $row["phoneno"]; ?></td>
<td><?php echo $row["email"]; ?></td>
Когда я выполняю поиск, результаты отображаются на совершенно новой странице. Но я хочу, чтобы результаты отображались на той же странице со всем существующим макетом страницы, верхними и нижними колонтитулами.
Как я могу этого добиться?
Заранее благодарю!
Комментарии:
1. 1- для макета можно просмотреть новую страницу, но включить макет с
include('header.php")
помощью 2- используйтеajax
, чтобы увидеть результат на той же странице, если вы знаете, что такоеajax
2. Создайте
function
и верните значение из вашей функции. Наконец, используйтеfunction
на своей HTML-странице внутриphp
.
Ответ №1:
Предполагая, что ваше первое имя файла index.php . Затем нужно вызвать этот файл в форме action amp; немного переработать файл. Теперь у него есть пустой массив $output. Если он содержит параметр поиска, он заполнит данные в $output array, а затем в html-части проверяет, есть ли в $output array данные для его отображения.
<?php
include_once '../connection.php';
include_once '../session.php';
$output = array();
if(isset($_POST['search'])){
$searchquery=$_POST['search'];
$result = mysqli_query($conn,"SELECT * FROM details where customername LIKE '%$searchquery'");
$count = mysqli_num_rows($result);
while($row = mysqli_fetch_array($result)) {
$output[] = $row;
}
}
?>
<!DOCTYPE html>
<html>
<body>
<form action="index.php" method="POST" >
<center><input type="text" name="search" placeholder="Search by name" >
<input type="submit" value="Search"></center>
<br>
<?php if(count($output) > 0): ?>
<table id="myTable">
<tr>
<th>ID</th>
<th>Name</th>
<th>Type</th>
<th>Telephone Number</th>
<th>Email</th>
<th>Edit</th>
<th>Delete</th>
</tr>
<?php foreach($output as $row): ?>
<tr>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["customername"]; ?></td>
<td><?php echo $row["type"]; ?></td>
<td><?php echo $row["phoneno"]; ?></td>
<td><?php echo $row["email"]; ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
</form>
</body>
</html>