tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
1168
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von supercat1510
    supercat1510 supercat1510 ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Ort
    Nähe Altötting (Bayern)
    Beiträge
    128
    Ich hab versucht Jquery Autocomplete einzubauen, wenn ich die PHP-Datei aufrufe funktioniert alles, und wenn ich das Script in seinem eingebauten Zustand aufrufe und beginne den suchbegriff zu schreiben sieht man, dass das script funktioniert (Firebug). <li></li> wird erstellt in der Anzahl wie häufig das Suchergebnis vorkommt, aber nichts angezeigt.

    jQuery-Funktion:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    $(function(){
        $("#user_name").autocomplete({
            source: "inc/autocomplete.inc.php",
            minLength: 2,
            select: function(event, ui) {
                $('#user_id').val(ui.item.user_id);
                $('#user_name').val(ui.item.user_name);
            }
        });
    });

    HTML-Datei:
    HTML-Code:
    <form action="index.php?link=ag_news&amp;job={$n_job}&amp;id={$n_id}" method="post" id="formgbook1">
    <input type="hidden" name="absenden" value="ja" />
    <table border="0" cellspacing="0" cellpadding="6">
    	<tr>
    		<td><label for="name">Name</label></td>
    		<td><input type="text" name="name" id="name" value="{$n_name}" /></td>
    	</tr>
    	<tr>
    		<td><label for="newskat_name">Kategorie</label></td>
    		<td><input type="text" name="newskat_name" id="newskat_name" value="{$n_newskat_name}" />{$n_newskat_change}</td>
    	</tr>
    	<tr>
    		<td><label for="user_name">User</label></td>
    		<td><p class="ui-widget"><input type="text" name="user_name" id="user_name" value="{$n_user_name}" /><input type="hidden" id="user_id" name="user_id" /></p></td>
    	</tr>
    	<tr>
    		<td><label for="quelle">Quelle</label></td>
    		<td><input type="text" name="quelle" id="quelle" value="{$n_quelle}" /></td>
    	</tr>
    	<tr>
    		<td><label for="quelle_link">Quelle Link</label></td>
    		<td><input type="text" name="quelle_link" id="quelle_link" value="{$n_quelle_link}" /></td>
    	</tr>
    	<tr>
    		<td><label for="text">Nachricht</label></td>
    		<td><textarea rows="6" cols="20" name="text" id="text" class="gbooktextarea">{$n_text}</textarea></td>
    	</tr>
    	<tr>
    		<td>&nbsp;</td>
    		<td><input type="submit" value="{$n_submit}" /></td>
    	</tr>
    </table>
    </form>
    {php}
    if (isset($_POST['submit'])) {
    echo "<p>";
    	while (list($user_id,$user_name	) = each($_POST)){
    	echo "<strong>" . $user_id . "</strong> = ".$user_name."<br />";
    	}
    echo "</p>";
    }
    {/php}
    autocomplete.inc.php:
    PHP-Code:
    $return_arr = array();

    $dbhost 'localhost';
    $dbuser 'ccccc';
    $dbpass 'ccccc';
    $dbname 'ccccc';

    $conn mysql_connect($dbhost$dbuser$dbpass) or die ('Error connecting to mysql');
    mysql_select_db($dbname);

    /* If connection to database, run sql statement. */
    if ($conn){
        
    $fetch mysql_query("SELECT * FROM ag_user where name like '%".$_GET['term']."%'");

        
    /* Retrieve and store in array the results of the query.*/

        
    while ($row mysql_fetch_array($fetchMYSQL_ASSOC)){
            
    $row_array['user_id'] = $row['user_id'];
            
    $row_array['user_name'] = $row['name'];

            
    array_push($return_arr,$row_array);
        }

    }

    /* Free connection resources. */
    mysql_close($conn);

    /* Toss back results as json encoded array. */
    echo json_encode($return_arr); 
    Geändert von supercat1510 (13.01.11 um 10:00 Uhr)
     
    ^-_-^Mata ne
    Supercat1510

  2. #2
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Deine Antwort sieht etwa so aus:

    Code :
    1
    
    [{"user_id":"17","user_name":"Alex"},{"user_id":"13","user_name":"Peter"}]

    Die Dokumentation sieht entweder eine String-Array vor

    Code :
    1
    
    ["Alex", "Peter"]

    Oder ein Objekt-Array mit den Attributen "label" und "value".

    Code :
    1
    
    [{"value":"13","label":"Alex"},{"value":"13","label":"Alex"}

    Also musst du nur die zwei Zeilen im PHP code ändern.

    PHP-Code:
    $row_array['value'] = $row['user_id'];
    $row_array['label'] = $row['name']; 
    Das JQuery Plugin kann ja schlecht auf magische weise feststellen, was es anzeigen soll. Wenn du mehr Kontrolle über die Darstellung willst musst du als "source" eine Funktion übergeben.
    Geändert von CPoly (13.01.11 um 12:34 Uhr)
     

  3. #3
    Avatar von supercat1510
    supercat1510 supercat1510 ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Ort
    Nähe Altötting (Bayern)
    Beiträge
    128
    Danke - das klappt.

    Im Orginal stand das auch so - aber wusste nicht das die gleich lauten müssen.
     
    ^-_-^Mata ne
    Supercat1510

Ähnliche Themen

  1. Problem mit jQuery Autocomplete
    Von Sirakov im Forum Javascript & Ajax
    Antworten: 24
    Letzter Beitrag: 28.08.10, 22:19
  2. [jQuery] Autocomplete
    Von ropueh im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 29.06.10, 01:13
  3. [jQuery] Probleme mit dem Autocomplete
    Von newwarrior im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 20.03.10, 19:40
  4. jquery autocomplete - Feldinhalt übergeben
    Von NobodyBody im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 20.01.10, 09:04
  5. jquery autocomplete soll intern verlinken
    Von Axel1971 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 23.12.09, 21:26

Stichworte