Live Suche Anpassung

affe2009

Grünschnabel
Hallo,

ich habe mir eine Live Suche programmiert, welche die zu suchenden Namen aus der Datenbank auslist. Dies hat auch wunderbar funktionert.
ich möchte gerne, dass wenn man etwas sucht, direkt darunter sich ein menü aufklappt mit dem ergebnis (wie z. b. bei fcebook suche). bei mir erscheint die suchergebnis unten.
ich habe alles schon probiert, ich bekomme es nicht hin.
es liegt nur an der formatierung wahrscheinlich.
hier mal der code.

Auszug start.php

PHP:
	<script type="text/javascript">
		function searchFor(suchbegriff){
			var xmlHttp = null;
			// Mozilla, Opera, Safari sowie Internet Explorer 7
			if (typeof XMLHttpRequest != 'undefined') {
				xmlHttp = new XMLHttpRequest();
			}
			if (!xmlHttp) {
				// Internet Explorer 6 und älter
				try {
					xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e) {
					try {
						xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
					} catch(e) {
						xmlHttp  = null;
					}
				}
			}
			// Wenn das Objekt erfolgreich erzeugt wurde			
			if (xmlHttp) {
				var url = "suche.php";
				var params = "suchbegriff="+suchbegriff;
				
				xmlHttp.open("POST", url, true);
				
				//Headerinformationen für den POST Request
				xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				xmlHttp.setRequestHeader("Content-length", params.length);
				xmlHttp.setRequestHeader("Connection", "close");					
			
				xmlHttp.onreadystatechange = function () {
					if (xmlHttp.readyState == 4) {
						// Zurückgeliefertes Ergebnis wird in den DIV "ergebnis" geschrieben
						document.getElementById("ergebnis").innerHTML = xmlHttp.responseText;
					}
				};				
				xmlHttp.send(params);
			}			
		}
  </script>


<input class="search" type="text" onKeyUp="(this.value.length >= 2) ? searchFor(this.value) : '';"><div id="ergebnis"></div>

suchen.php

PHP:
<?php
    // Verbindung
    $server = "xxxxxx";
    $benutzername = "xxxxxx";
    $passwort = "xxxxxx";    
    
    $datenbank = "xxxxxx";

    // Server Verbindung herstellen
    mysql_connect($server,$benutzername,$passwort) or 
    die ("Keine Verbindung moeglich");
    
    // Datenbank Verbidung
    mysql_select_db($datenbank) or
    die ("Die Datenbank existiert nicht");

    $tabelle = "mitglieder";
    
    if ($_POST["suchbegriff"]){
        // Mysql Abfrage wird gespeichert mit den Notwendigen Parameter
        $sql = "SELECT id, name FROM ".$tabelle." WHERE name LIKE ('%".mysql_real_escape_string(utf8_decode($_POST["suchbegriff"]))."%')";
        
        // Mysql Abfrage wird durchgeführt
        $result = mysql_query($sql);
        
        // Suchbegriff wird ausgegeben
        echo "Sie Suchten nach: ".$_POST["suchbegriff"]."<br/><br/>";
        
        // Ergebnis wird ausgegeben mit Zeilenumbruch
        //while($row = mysql_fetch_object($result)){
            //echo utf8_encode($row->Name);
            //echo "<br/>";
            

echo'<?xml version="1.0" encoding="UTF-8"?> <ergebnis>';
while($person = mysql_fetch_object($result)) {
echo "<a href=profil.php?user=$person->id>$person->name</a>";  
echo "<br>";
       
                
        }
    }
?>
 
Wenn es nur an der Formatierung liegt, können wir ohne CSS-Code nichts sagen.

Übrigens würde ich die Funktion encodeURIComponent() auf den Suchbegriff anwenden, so kannst du verhindern, dass Teile wie &test=a im Suchfeld als POST-Variablen interpretiert werden.

Übrigens gibst du in deiner suchen.php den Suchbegriff einfach so aus, sodass eventuell HTML ausgeführt werden könnte -> [phpf]htmlspecialchars[/phpf].
Lobenswert ist, dass du [phpf]mysql_real_escape_string[/phpf] benutzt, was viele einfach vergessen!
 
ja, ich habe ja nur das problem, dass es ein input feld (suchfeld) gibt und die ausgabe ist ja wo anders.
ich will dass es ein feld ist (suche + ausgabe), dass wenn man eine suche starte, direkt darunter die ausgabe folgt.
ich hab alles schno ausprobeirt und hat nicht funktioniert.
 
Du machst doch bereits einen Request per AJAX und speicherst den Inhalt im DIV "ergebnis".
Wo ist genau der Fehler?


Mir ist noch aufgefallen, dass du onkeyup im Input-Feld großgeschrieben hast, sollte klein sein.

Und achte bitte auf Groß- und Kleinschreibung!
 
Es geht ja nur um die ausgageformatierung, dass nach dem suchen die Ergebnisse direkt darunter in einem Menü geöffnet wird wie das suchfeld bei facebook
 

Neue Beiträge

Zurück