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