2016-05-30 56 views
0

我试图创建一个即时搜索来从我的数据库中提取数据。 我希望它能够从2个不同的表中搜索2个字段。到目前为止,我的工作是,如果您选择任意一个表的特定字段,它目前可以正常工作;它正在提取数据并显示它,但我希望搜索具体。例如,假设我有2个表格,一个是艺术家,另一个是他们的纪录;当你输入艺术家的名字时,它会显示艺术家的所有记录,但是如果你在名字旁边键入发布日期,它会给你那个特定的记录,并且它不会显示其他人。这就是我想要它工作的方式。php jquery json即时搜索

这里是我到目前为止有:

include 'conn.php'; 

$query = $_POST['query']; 

$like = "'%$query%'"; 
$sql = mysqli_query($db, "SELECT * FROM users JOIN tshift ON users.id=tshift.uid WHERE name LIKE {$like} 
    LIMIT 6"); 

$arr = array(); 
while ($r = mysqli_fetch_assoc($sql)) 
{ 
    $results= array(); 

    foreach($r as $key => $val){ 
     if(is_string($key)) 
      $results[$key] = $val; 
    } 
    array_push($arr, $results); 
} 
echo json_encode(array("artist" => $arr,"album" => $arr,"release" =>$arr)); 

回答

0

对于那些不知道或会想1天如何做这样的事情,这是我如何得到它的工作我不知道是最好的方式,但它现在会做。

include 'conn.php'; 

$query = $_POST['query']; 

    $newQuery = explode("+", $query); 
    $name = "'%{$newQuery[0]}%'"; 

    if(!empty($newQuery[1])){ 
     $date = "'%{$newQuery[1]}%'"; 
    } 

    if(empty($date)) 
    { 
     $select = "SELECT * FROM users JOIN tshift ON users.id=tshift.uid WHERE name LIKE {$name}"; 

    } 
    else 
    { 
     $select = "SELECT * FROM users JOIN tshift ON users.id=tshift.uid WHERE name LIKE {$name} AND udate LIKE {$date} "; 

    } 



    $sql = mysqli_query($db,$select); 
$arr = array(); 
while ($r = mysqli_fetch_assoc($sql)) 
{ 
    $results= array(); 

    foreach($r as $key => $val){ 
     if(is_string($key)) 
      $results[$key] = $val; 
    } 
    array_push($arr, $results); 
} 
echo json_encode(array("artist" => $arr,"album" => $arr,"release" =>$arr));