Я хочу, чтобы результаты php отображались на той же странице, а не на совершенно новой странице

#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>