2013-06-27 4 views
0

мне нужно знать, как я могу сделать мой живой поиск работы найти полное имя, если у меня есть 3 строки для каждого user..like:живой поиск в 3 ряда в то же время

таблицы pacientes

имя, фамилия, LastName

Jhon ----- Erick -------- лань

и когда я делаю поиск по примеру JHON самку или Erick самку или Jhon Erick лань показать мне Результаты

Jhon Erick лань

вот мой живой поиск:

<? 
$dbhost = "localhost"; 
$dbname = ""; 
$dbuser = ""; 
$dbpass = ""; 
global $db; 
$db = new mysqli(); 
$db->connect($dbhost, $dbuser, $dbpass, $dbname); 
$db->set_charset("utf8"); 
if ($db->connect_errno) { 
    printf("Connect failed: %s\n", $db->connect_error); 
    exit(); 
} 
$html = ''; 
$html .= '<li class="result">'; 
$html .= '<a target="_self" href="urlString">'; 
$html .= '<h3>nombreString apellidoString de_casadaString</h3>'; 
$html .= '<h4>Expediente # : id_pacienteString</h4>'; 
$html .= '</a>'; 
$html .= '</li>'; 
$search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']); 
$search_string = $db->real_escape_string($search_string); 
if (strlen($search_string) >= 1 && $search_string !== ' ') { 
    $query = 'SELECT id_paciente,nombre,apellido,de_casada FROM PACIENTES WHERE id_paciente LIKE "%'.$search_string.'%" OR nombre LIKE "%'.$search_string.'%" OR apellido LIKE "%'.$search_string.'%" OR de_casada LIKE "%'.$search_string.'%"'; 
    $result = $db->query($query); 
    while($results = $result->fetch_array()) { 
     $result_array[] = $results; 
    } 
    if (isset($result_array)) { 
     foreach ($result_array as $result) { 
      $display_id_paciente = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['id_paciente']); 
      $display_name = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['nombre']); 
      $display_apell = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['apellido']); 
      $display_casada = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['de_casada']); 
      $display_url = 'paciente_personal_profile.php?id_paciente='.urlencode($result['id_paciente']); 
      $output = str_replace('nombreString', $display_name, $html); 
      $output = str_replace('apellidoString', $display_apell, $output); 
      $output = str_replace('de_casadaString', $display_casada, $output); 
      $output = str_replace('id_pacienteString', $display_id_paciente, $output); 
      $output = str_replace('urlString', $display_url, $output); 
      echo($output); 
     } 
    }else{ 
     $output = str_replace('urlString', 'javascript:void(0);', $html); 
     $output = str_replace('nombreString apellidoString de_casadaString', '<b>Sin coincidencias.</b>', $output); 
     $output = str_replace('id_pacienteString', 'No hay expediente', $output); 
     echo($output); 
    } 
} 
?> 

на странице показать результат:

<div id="main"> 
<h4 id="results-text">Mostrando resultados para: <b id="search-string">Array</b></h4> 
<ul id="results"></ul> 
</div> 
+0

Вы уверены, что у вас есть 3 строки, а не столбцы? –

+0

, кстати, ваш живой поиск пойдет мертвым, когда у вас будет 10000 человек. –

+0

@ Ваш общий смысл Хорошо, мой стол pacientes имеет 17000 pacientes .... и все еще работает –

ответ

-1

Вы можете сделать вид, как это:

CREATE VIEW MyView as 
SELECT id_paciente,nombre,apellido,de_casada, nombre+' '+apellido+' '+de_casada as complete_name FROM PACIENTES 

и затем сделать запрос на виде:

SELECT id_paciente,nombre,apellido,de_casada,complete_name FROM MyView 
WHERE id_paciente LIKE "%'.$search_string.'%" OR complete_name LIKE "%'.$search_string.'%" OR nombre LIKE "%'.$search_string.'%" OR apellido LIKE "%'.$search_string.'%" OR de_casada LIKE "%'.$search_string.'%"