javascript — автозаполнение поисковой формы с множественным вводом php mysql

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

Вот HTML ФОРМА

<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<input type="text" id="searchThis" name="searchThis"  placeholder="search" value="" size="14" />
<select name="searchItems" id="searchItems">
<optgroup value="Vehicles" label="Vehicles">Vehicles
<option value="vehicles.Make">Make</option>
<option value="vehicles.model">Model</option>
<option value="vehicles.RegNumber">Registration Number</option>
<option value="vehicles.licenseExpireDate">License Expire Date</option>
</optgroup>
<optgroup value="Owners" label="Owners">Clients
<option value="owners.OwnerName" label="" >Name</option>
<option value="owners.mobile">Mobile Number</option>
</optgroup>
</select>

<input type="submit" id="doSearch" name="Search" value="Search" />
</form>
<ul id="result">
</ul>

Есть JS

<script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
var $j = jQuery.noConflict();

(function($j){

$j(document).ready(function (){

$j("#searchThis").keyup(function()
{
var searchThis = $j('#searchThis').val();
var searchItems = $j('#searchItems').val();
var dataString = {'searchThis': searchThis,'searchItems':searchItems};
if(searchThis!='')
{
$j.ajax({
type: "POST",
url: "doAutocomplete_search.php",
data: dataString,
dataType: "html",
cache: false,
success: function(data)
{
$j("#result").html(data).show();
}
});
}return false;
});

$j("#result").live("click",function(e){
var clicked = $j(e.target);
var name = clicked.find('.name').html();
var decoded = $j("<div/>").html(name).text();
$j('#searchThis').val(decoded);
});

$j(document).live("click", function(e) {
var clicked = $j(e.target);
if (! clicked.hasClass("search")){
$j("#result").fadeOut();
}
});

$j('#searchid').click(function(){
$j("#result").fadeIn();
});

});

})($j);

И PHP

function implement($cxn,$searchThis, $field) {
$show = "";

//Item to be searched
$srchThis = strip_tags(trim($searchThis));
//[0]= table , [1]=field    to search

$srchStack = explode('.',$field);
$gtData = "SELECT * FROM ".$srchStack[0]." WHERE ".$srchStack[1]." like '%|{$srchThis}|%'";
//or die(mysqli_error($cxn))
if($selectc = mysqli_query($cxn,"SELECT * FROM {$srchStack[0]} WHERE {$srchStack[1]} LIKE '{$srchThis}%' OR {$srchStack[1]} LIKE '%{$srchThis}%'")) {
$srchData = array();
$rows = mysqli_fetch_row($selectc);
echo $rows;
//if() {, MYSQL_ASSOC
//echo var_dump($srchData);
$show .= '
<table style="border:2px solid #0000">';
//foreach($srchData as $fields=>$data) {
for($s=0; $s < $rows && $srchData = mysqli_fetch_assoc($selectc);$s++) {
if($srchStack[0] == 'vehicles' && $fields == 'RegNumber') {
$dataItem = $data;
$editTbl = 'Vehicles';
$link = 'href="index.php?list=vehicles&&tbl='.$srchStack[0].'&&item='.$dataItem.'"';
} elseif($srchStack[0] == 'vehicles' && $fields == 'Make') {
$dataItem = $data;
$editTbl = 'vehicles';
$link = 'href="index.php?list=vehicles&&tbl='.$srchStack[0].'&&item='.$dataItem.'"';
}

$show .= '<tr><td><a '.$link.'>'.$data.'</a></td></tr>
';
}
$show .= '</table>';

return $show;
} else {
$show .= "There are no entries in the database...<br>".mysqli_error($cxn);

return $show;
}
//}

}

echo implement($cxn, $_POST['searchThis'], $_POST['searchItems']);$cxn->close();

2

Решение

Привет, ребята, так что мне пришлось сделать некоторый рефакторинг, понял, что это был больше код PHP MySQL.

Вот переработанный код PHP

//Item to be searched
$srchThis = strip_tags(trim($searchThis));
//[0]= table , [1]=field    to search

$srchStack = explode('.',$field);
$gtData = "SELECT * FROM ".$srchStack[0]." WHERE ".$srchStack[1]." like '%|{$srchThis}|%'";
//or die(mysqli_error($cxn))
if($selectc = mysqli_query($cxn,"SELECT * FROM {$srchStack[0]} WHERE {$srchStack[1]} LIKE '{$srchThis}%' OR {$srchStack[1]} LIKE '%{$srchThis}%'")) {
//$srchData = array();

$rows = mysqli_num_rows(@$selectc) or die(mysqli_error($cxn).'<br>No Rows returned...');
if($rows > 0) {//, MYSQL_ASSOC

//$link = ''; $l_c = 0;
$show .= '<table style="border:2px solid #0000">';
for($c = NULL;$c != $rows && $srchData = mysqli_fetch_assoc($selectc); $c++) {

foreach($srchData as $fields=>$data) {
if($fields == $srchStack[1]) {
$dataItem = $data;
$editTbl = $srchStack[0];
$show .= '<tr><td><a href="index.php?list='.$srchStack[0].'&&tbl='.$srchStack[0].'&&'.$srchStack[1].'='.$dataItem.'">'.$dataItem.'</a></td></tr>';//$a_json_row($dataItem);

//$show .= $link[$c];$link[$c]
}

}
}

$show .= '</table>';
return $show;
} else {
$show .= "There are no entries in the database...<br>".mysqli_error($cxn);

return $show;
}

Конечно, JS-код все еще нуждается в доработке, но это значительно улучшило результаты …
Надеюсь, это поможет кому-то …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]