2016-12-12 6 views
3

Ich habe ein Auto-Vervollständigen-Suchfeld, die als Benutzer einen Namen, werden ten Ergebnisse in der Dropdown-Liste angezeigt.PHP MySQL zum automatischen Vervollständigung

Das alles funktioniert gut, und zeigt die Daten, wie es sollte.

Ich warte jedes Ergebnis eine Verbindung jedoch zu machen, so dass, wenn die Ergebnisse der Benutzer kann auf dem richtigen Namen klicken angezeigt, und es wird sie zu ihrem Profil zu nehmen.

Siehe Skript unten:

<input type='text' id=employees class='form-control' size="80" placeholder="Search Employees by first or last name"> 

search.php

$searchTerm = $_GET['term']; 

    $sql = mysql_query ("SELECT name_first, employee_id, unique_id, name_last FROM hr_employees WHERE name_first LIKE '{$searchTerm}%' OR name_first LIKE '{$searchTerm}%' OR employee_id LIKE '{$searchTerm}%'"); 
    $array = array(); 
    while ($row = mysql_fetch_array($sql)) { 
     $array[] = array (

      'value' => $row['name_first'].' '.$row['name_last'].' ('.$row['employee_id'].')', 

     ); 
    } 
    //RETURN JSON ARRAY 
    echo json_encode ($array); 

Auf den richtigen Benutzer die Auswahl, möchte ich den Benutzer page.php gerichtet de id = $ employee_id

Ist das möglich?

JavaScript

<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 

JavaScript

<script> 
$(function() { 
$("#employees").autocomplete({ 
source: 'search.php' 
}); 
}); 
</script> 
+0

Verwenden $ row [ 'id'] als Array-Index anstelle von 'Wert'. Dann haben Sie diese Informationen auf der Client-Seite getrennt. Veröffentlichen Sie Ihren JavaScript-Code für weitere Anweisungen. – colburton

+2

Verwenden Sie nicht die veralteten mysql_ * '- Funktionen. Sie sind seit PHP 5.5 veraltet und wurden seit PHP 7 vollständig entfernt. Verwenden Sie stattdessen PDO oder MySQLi. Sie sind auch weit offen für SQL Injection-Angriffe und sollten Prepared Statements verwenden (die Sie mit PDO und MySQLi verwenden können). –

+0

@colburton - Danke, könntest du mir zeigen, wie ich das in einer Antwort machen würde? – Shane

Antwort

3

Wie gewünscht:

PHP:

$pdo  = new \PDO('mysql:host=localhost;dbname=test', $user, $pass); 
$searchTerm = $_GET['term']; 

$stmt = $pdo->prepare("SELECT name_first, employee_id, unique_id, name_last FROM hr_employees WHERE name_first LIKE :search OR name_first LIKE :search OR employee_id LIKE :search"); 
$stmt->execute([':search' => $searchTerm.'%']); 

$array = []; 
while (false !== ($row = $stmt->fetch())) { 
    $array[] = [ 
     'value' => $row['name_first'].' '.$row['name_last'].' ('.$row['employee_id'].')', 
     'id' => $row['id'], 
    ]; 
} 

echo json_encode($array); 

JavaScript:

<script> 
    $("#employees").autocomplete({ 
     source: 'search.php', 
     select: function(event, ui) { 
      window.location.href = 'page.php?id='+ui.item.id; 
     } 
    }); 
</script> 

Fiddle mit console.log statt Standortwechsel: https://jsfiddle.net/dLe4a83x/

+0

Danke, ich habe JavaScript auf die Frage hinzugefügt – Shane

+0

Ist das jQuery? – colburton

+0

Sorry ja seine JQuery. Aktualisierte Frage – Shane

Verwandte Themen