Jireh Capao Ответов: 2

Как создать таблицу поиска / фильтрации и добавить разбиение на страницы?


Всем привет! - мне нужна ваша помощь. У меня ошибка в коде, мой компилятор говорит "mysq_query() эксперты параметр 1, чтобы быть строка, ресурс дали test.php строка 21" и "mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, нуль дается в test.php по строке 72" и я не могу выяснить, как решить эти ошибки и я не знаю, как я буду добавлять пагинацию на мои коды, и я хотел бы знать, как я могу показать сообщение, когда нет результата от фильтров. . Пожалуйста, посмотрите и проверьте мои коды ниже. Заранее благодарю вас за вашу помощь. :)

Вот мои коды:
<?php

if(isset($_POST['search']))
{
    $valueToSearch = $_POST['valueToSearch'];
    // search in all table columns
    // using concat mysql function
    $query = "SELECT * FROM `dbcharity2016` WHERE CONCAT(`genNo`, `reliefNo`, `disas_date`, `area`, `city`, `type`, `surv_date`, `surv_date`, `surv_volunteers`, `vol_incharge`, `relief_date`, `volunteers`, `venue`, `T_Beneficiary`, `unit`, `individual`, `house`, `sacksNo`, `DRG`, `cost_set`, `cost_relief`, `DAI`, `CAG`, `TCA`) LIKE '%".$valueToSearch."%'";
    $search_result = filterTable($query);
    
}
 else {
    $query = "SELECT * FROM `dbcharity2016`";
    $search_result = filterTable($query);
}

// function to connect and execute the query
function filterTable($query)
{
    $con = mysql_connect("localhost","test_webdev","e7#_AZ*9we_^","test_WebBase");
    $filter_Result = mysql_query($con, $query);
    return $filter_Result;
}

?>
<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <style>
            table,tr,th,td
            {
                border: 1px solid black;
            }
        </style>
    </head>
    <body>
        
        <form action="test.php" method="post">
            <input type="text" name="valueToSearch" placeholder="Value To Search"><br><br>
            <input type="submit" name="search" value="Filter"><br><br>
            
            <table>
                <tr>
                    <th>General No.</th>
                    <th>Relief No.</th>
                    <th>Disaster Date</th>
                    <th>Area</th>
                    <th>City</th>
                    <th>Relief type</th>
                    <th>Survey Date</th>
                    <th>Survey Volunteers</th>
                    <th>Volunteer-in-Charge</th>
                    <th>Relief Date</th>
                    <th>Volunteers</th>
                    <th>Venue</th>
                    <th>Beneficiary</th>
                    <th>Unit</th>
                    <th>Individual</th>
                    <th>House</th>
                    <th>No. of Sacks</th>
                    <th>Details of Relief Goods</th>
                    <th>Cost per set</th>
                    <th>Cost of Relief Goods
                    <th>Death and Injuries</th>
                    <th>Cash Assistance</th>
                    <th>Total Cash Assistance</th>

                </tr>

      <!-- populate table from mysql database -->
                <?php while($row = mysql_fetch_array($search_result)):?>
                <tr>
                    <td><?php echo $row['genNo'];?></td>
                    <td><?php echo $row['reliefNo'];?></td>
                    <td><?php echo $row['disas_date'];?></td>
                    <td><?php echo $row['area'];?></td>
                    <td><?php echo $row['city'];?></td>
                    <td><?php echo $row['type'];?></td>
                    <td><?php echo $row['surv_date'];?></td>
                    <td><?php echo $row['surv_volunteers'];?></td>
                    <td><?php echo $row['vol_incharge'];?></td>
                    <td><?php echo $row['relief_date'];?></td>
                    <td><?php echo $row['volunteers'];?></td>
                    <td><?php echo $row['venue'];?></td>
                    <td><?php echo $row['T_Beneficiary'];?></td>
                    <td><?php echo $row['unit'];?></td>
                    <td><?php echo $row['individual'];?></td>
                    <td><?php echo $row['house'];?></td>
                    <td><?php echo $row ['sacksNo'];?></td>
                    <td><?php echo $row ['DRG'];?></td>
                    <td><?php echo $row ['cost_set'];?></td>
                    <td><?php echo $row ['cost_relief'];?></td>
                    <td><?php echo $row ['DAI'];?></td>
                    <td><?php echo $row ['CAG'];?></td>
                    <td><?php echo $row ['TCA'];?></td>
                </tr>
                <?php endwhile;?>
            </table>
        </form>
        
    </body>
</html>


Что я уже пробовал:

Я попытался изменить $connection на $con и mysqli_query на mysql_query, к сожалению, ошибка все еще существует и увеличилась еще больше. Я не знаю, как исправить этот беспорядок и как добавить разбиение на страницы тоже на каждой странице, когда таблица попадет в 10 строк автоматически, появится разбиение на страницы. и я тоже знаю, как показать сообщение "Нет результата", когда в фильтре нет результата.

[edit by Nelek] дополнительная информация скопирована из не ответа ниже
И я использую php версии 4.0.1 и Mysql версии 5.5.54

2 Ответов

Рейтинг:
17

Jochen Arndt

Читать документацию: PHP: mysql_query-руководство пользователя[^]
Первый параметр - это строка запроса, а второй-идентификатор ссылки. Так что вы должны использовать

$filter_Result = mysql_query($query, $con);

Для mysql_fetch_array(), вы проходите мимо $search_result Но эта переменная не была объявлена и инициализирована при ее использовании там. Сделайте эту переменную глобальной поверх вашего кода:
global $search_result;

Вы также должны проверить, установлена ли эта переменная перед ее использованием, и сообщить об ошибке, если нет или она ложна (например, когда произошла ошибка базы данных).

Чтобы получить количество совпадающих строк, используйте PHP: mysql_num_rows-руководство пользователя[^]. Когда это значение равно нулю, совпадающие строки не были найдены. Количество строк также может быть использовано для разбиения на страницы.


Рейтинг:
0

Jireh Capao

Ладно, Йохен Арндт. Спасибо!. :)