Как заставить панель поиска PHP искать только один аспект таблицы - PullRequest
0 голосов
/ 19 июня 2020

Я делаю базовую c работу за арахис, чтобы набраться опыта, и клиент попросил панель поиска. Достаточно просто, я использовал это:

</form>
        <form method="get" id="search_form">
            <input type="hidden" name="tblName" value="<?php echo $tableName; ?>" />
            <input type="hidden" name="pageno" value="1" />
            <button type="submit" class="btn btn-default pull-right"><span class="glyphicon glyphicon-search"></span></button>
            <div class="pull-right">
                <input type="text" class="form-control" name="search" placeholder="Search" value="<?php if(isset($_GET['search'])) echo $_GET['search']; ?>" />
            </div>
        </form>

Они хотят, чтобы он выполнял поиск их данных по городу, и это нормально, и это работает, но они хотят, чтобы он ТОЛЬКО выполнял поиск по городам. Например, если пользователь ищет «Чика go», он должен возвращать только объекты в Чика go, не обязательно людей с именем «Чика go» или объекты за пределами этого города с «Чика go» в их название. Как я могу изменить php для поиска только в одной таблице в базе данных?

EDIT: Я знаю, что это плохая практика, потому что единственные результаты поиска, которые я мог получить, были для людей, говорящих не делать этого , но клиент довольно настойчив, поэтому я полагаю, что должен сделать то, что они просят.

Код поиска, который они используют, следующий:

<div class="row mt-20 table_section">
        <table id="example" class="table table-striped table-bordered table-hover">
            <?php 
                $tableHtm = '';
                $pagenationui = '';

                $sql_getcolumn = "SELECT *
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE TABLE_NAME='".$tableName."'";
                $colResult = $conn->query($sql_getcolumn);

                if (isset($_GET['pageno'])) {
                    $pageno = $_GET['pageno'];
                } else {
                    $pageno = 1;
                }
                $no_of_records_per_page = 15;
                $offset = ($pageno-1) * $no_of_records_per_page;

                $total_pages_sql = "SELECT COUNT(*) FROM `".$tableName."`";
                $result = mysqli_query($conn,$total_pages_sql);
                if (isset($result->num_rows) && $result->num_rows > 0) {
                    $total_rows = mysqli_fetch_array($result)[0];
                    $total_pages = ceil($total_rows / $no_of_records_per_page);
                }

                // thead start-----------------------------
                $tableHtm .= '<thead></tr>';

                $columnAry = [];
                if ( isset($colResult->num_rows) && $colResult->num_rows > 0) {
                    $tableHtm .= '<th></th>';
                    while($columnrow = mysqli_fetch_assoc($colResult)) {
                        if( $columnrow['COLUMN_NAME'] != 'iid' ){
                            $tableHtm .= '<th>'. $columnrow['COLUMN_NAME'] .'</th>';
                            $columnAry[] = $columnrow['COLUMN_NAME'];
                        }
                    }
                    // $tableHtm .= '<th width="40px"><a href="javascript:;"><span class="glyphicon glyphicon-edit"></span></a></th>';
                }
                $tableHtm .= '</tr></thead>';
                // thead end-----------------------------


                $where = '';
                if( isset($_GET['search']) && !empty($_GET['search']) ){
                    if (count($columnAry) > 0) {
                        foreach ($columnAry as $key => $columnrow) {
                            if( $key == 0 ){
                                $where .= " WHERE `".$columnrow."` LIKE '%".$_GET['search']."%' "; 
                            }else {
                                $where .= " OR `".$columnrow."` LIKE '%".$_GET['search']."%' "; 
                            }
                        }
                    }
                }
                $sql = "SELECT * FROM `".$tableName ."`". $where ." LIMIT ".$offset.", ".$no_of_records_per_page."";
                $res_data = mysqli_query($conn,$sql);


                if (isset($res_data->num_rows) && $res_data->num_rows > 0) {
                    $kkk = 0;
                    while($row = mysqli_fetch_assoc($res_data)) {
                        $tableHtm .= '<tr rowid="'. $row['iid'] .'">';
                        if (count($columnAry) > 0) {
                            $tableHtm .= '<td><input type="checkbox" class="rowid" value="'.$row['iid'].'"></td>';
                            foreach ($columnAry as $key => $columnrow) {
                                $tableHtm .= '<td>'. $row[ $columnrow ] .'</td>';
                            }
                            // $tableHtm .= '<th><a href="javascript:;" title="edit" class="edited" rowid="'. $row['iid'] .'"><span class="glyphicon glyphicon-edit"></span></a></th>';
                        }
                        $kkk++;
                        $tableHtm .= '</tr>';
                    }

                    $st_nxt_cla = ''; 
                    $st_pre_cla = ''; 
                    $pagenum = '';
                    if($pageno <= 1){ 
                        $st_pre_cla = 'disabled'; 
                        $st_pre_link = '#'; 
                    } else { 
                        $st_pre_link = "?pageno=".($pageno - 1); }
                    if($pageno >= $total_pages){ 
                        $st_nxt_cla = 'disabled'; 
                        $st_nxt_link = '#'; 
                    } else { 
                        $st_nxt_link = "?pageno=".($pageno + 1); }

                    $pagenum .= '<li>
                            <a href="javascript:;" id="pageid_li"><input type="number" name="pageno" value="'. (isset($_GET['pageno'])?$_GET['pageno']:1) .'" /> of '. $total_pages .'</a>
                        </li>';

                    $pagenationui='<ul class="pagination">
                                    <li><a href="?pageno=1">First</a></li>
                                    <li class="'.$st_pre_cla.'">
                                        <a href="'.$st_pre_link.'">Prev</a>
                                    </li>'. $pagenum .'
                                    <li class="'.$st_nxt_cla.'">
                                        <a href="'.$st_nxt_link.'">Next</a>
                                    </li>
                                    <li><a href="?pageno='.$total_pages.'">Last</a></li>
                                </ul>';
                } else {
                  $tableHtm .= '<div style="width:100%; text-align:center;">No results</div>';
                }
                echo $tableHtm;
             ?>
        </table>
    </div>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...