Мгновенный поиск с использованием PHP

У меня есть запрос, который работает и работает хорошо, но я хочу показать все свои элементы, прежде чем искать конкретный. Когда я щелкаю поиск btn без ввода чего-либо, в нем отображаются все мои элементы, я хочу показать их, не нажимая кнопку поиска btn.

include_once('includes/db_connect.inc.php');
$output = '';
if (isset($_POST['search'])) {
    $searchq = $_POST['search'];
    $searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
    $sql_search = "SELECT * FROM teams WHERE teamnum LIKE '%$searchq%'";
    $query = mysqli_query($con, $sql_search) or die("Could not search!");
    $count = mysqli_num_rows($query);
    if ($count == 0) {
        $output = 'No search results';

    } else {
        while ($row = mysqli_fetch_array($query)) {

            $output .= "<a href='view-team.php?id={$row['id']}'><div class='match-child'>
            <div class='flex-inside-list'>
                <div class='alliance-vs'>
                <span>" . $row["teamnum"] ."</span>
                </div>
            </div></a>";
        }
    }
}

3 ответа

Если это та же страница, просто удалите if(isset($_POST['search'])) потому что приведенный ниже код, очевидно, выполняется только тогда, когда оператор if равен true.

Но тогда вам придется создать обходной путь для кнопки, чтобы снова работать.

Я рекомендую использовать ajax, если что-то должно быть напечатано на одной и той же странице снова и снова.

Вы можете сделать это с помощью конкатенации запросов. Сначала извлеките все записи, а затем проверьте, пуст ли $search или нет? если нет, то завершите предыдущий запрос. Наконец отправьте данные для просмотра / файла HTML.

Во-первых, если вы хотите создать приложение, пожалуйста, прочитайте о MVC.

Во-вторых, лучше использовать подготовленные операторы PDO по соображениям безопасности. И это наверное удобнее и веселее.

В-третьих, попробуйте разделить PHP и HTML. Всегда разделяйте задачи на подзадачи, потому что таким образом легче понять, что делать дальше. По вашему вопросу:

Вы всегда можете создать отдельную функцию или метод (если хотите), в котором вы можете ВЫБРАТЬ все элементы из своей таблицы 'teamnum', а затем вывести их список в виде страницы. Итак, в итоге у вас может быть 2 массива:

первый массив данных: SELECT * FROM teams WHERE teamnum LIKE '%$searchq%'

второй массив данных, который вы выведете на страницу: SELECT fieldname FROM teamnum

Просто получите массив со всеми данными, которые вы хотите, и выведите его на страницу рядом или под кнопкой отправки. Надеюсь, это поможет вам.

Другие вопросы по тегам