2012-03-29 8 views
0

Ich versuche, zwei der Felder in meiner Tabelle zu suchen. (Die Datenbanktabelle enthält Cocktailnamen mit Namen, Zutaten und Beschreibung) Wenn ein Benutzer seinen gewünschten Begriff in das Suchfeld eingibt, werden Autovervollständigungsergebnisse mit Ajax/jquery angegeben.Durchsuchen einer MySQL-Tabelle unter Verwendung von PHP für mehrere Felder in einem Auto-Vervollständigen-Feld

Ich habe es funktioniert suchen ein Feld (Name), aber kann nicht scheinen, es mehr als die eine zu tun (Name & Zutaten). Ein weiteres Problem ist, wenn die Ergebnisse angegeben werden (sie werden als Links angegeben). Wenn Sie sie auswählen, werden die Daten in das Eingabefeld eingefügt, anstatt Sie zur nächsten Seite zu bringen.

index.php:

<script> 
$(document).ready(function(){ 
$("#tag").autocomplete("autocomplete.php", { 
     selectFirst: true 
    }); 
}); 
</script> 

    <label>Tag:</label> 
    <input name="tag" type="text" id="tag" size="40"/> 

autocomplete.php:

<?php 
    $q=$_GET['q']; 
    $my_data=mysql_real_escape_string($q); 
    $mysqli=mysqli_connect('localhost','ignitet1','password','ignitet1_WhatCocktail') or die("Database Error"); 
    $sql="SELECT Name FROM tblCocktail WHERE Name LIKE '%$my_data%' ORDER BY Name"; 
    $result = mysqli_query($mysqli,$sql) or die(mysqli_error()); 

    if($result) 
    { 
     while($row=mysqli_fetch_array($result)) 
     { 
      echo "<a href=\"details.php\">"; 
      echo $row['Name']."," , "<br />"; 
      echo "</a>"; 
     } 
    } 
?> 

Jede Hilfe würde geschätzt.

+0

Nun eine Sache sicher, Sie suchen nur nach dem Valye "Name" in Ihrer Abfrage .. so ist alles, was Sie bekommen werden .. Wenn Sie zwei Felder Name und Zutaten haben, sollten Sie vielleicht in der Auswahl enthalten Anweisung und fixieren die where-Klausel, um eine OR-Klausel zu machen.WHOE NAME LIKE '% $ MY_DATA%' ODER INGREDIENTS WIE '% $ MY_DATA%' – user710502

Antwort

0

Ich bin mir nicht sicher, einen Link zu dieser Seite zu zwingen, aber für eine schnelle und schmutzige fix auf der Suche würde ich hinzufügen: OR Ingredients LIKE '%$my_dat%' vor der ORDER-Klausel.

Update:

user710502 korrekt über die Felder in der Abfrage ausgewählt werden. Was die Autocomplete betrifft, habe ich mir die documentation angesehen und es sieht so aus, als müssten Sie einen benutzerdefinierten Event-Handler für das AutocompleteSelect-Event erstellen. Dieses Ereignis wird ausgelöst, wenn der Benutzer eine Option aus der Dropdown-Liste auswählt. Das Standardverhalten (wie Sie wissen) besteht darin, das Feld mit dem Wert zu füllen. Ihr Mehr Code wird wie folgt aussehen:

$("#selector-for-field").bind('autocompleteselect',function(event,ui){ 
    event.preventDefault(); // this will stop the field from filling 
    // maybe make the value sent from the serverside a hyperlink, 
    // eg. http://www.wherever.com/you/want/the/item/to/link-to 
    // then in here do something like: 
    window.location(ui.item.value); 
}); 

Sie, dass ui.item.value Werke verdoppeln müssen überprüfen, weil ich es nicht kontrollieren.

+0

Ich habe versucht, "SELECT Name AND Zutaten FROM tblCocktail WHERE Name LIKE% $ my_data% 'ODER Zutaten LIKE'% $ my_data% '"; die Dropdown-Box erscheint jetzt die ganze Zeit, zeigt aber keine Ergebnisse – MattHeywood

+0

Die UND geht dort nicht Mann, es wäre etwas wie ** SELECT NAME, ZUTATEN VON tblCocktail WHERE Name Name LIKE% $ my_data% 'ODER Zutaten LIKE'% $ my_data% ' – user710502

+0

ah das hat das Problem nicht behoben Anzeige, nur Problem ist jetzt die Tatsache, dass, wenn geklickt wird der Code nur in den Texteingabefeld statt sich als ein Link – MattHeywood

Verwandte Themen