# Ajax Live Suche mit mind. 3 Zeichen



## xxxmike (20. Februar 2010)

Hallo,
ich würde gerne bei mir eine Live Suche mit Ajax einbauen, was auch soweit funktioniert, nur ich möchte das die Suche erst beginnt wenn zum Beispiel mind. 3 Zeichen eingetragen sind. Denn es macht meiner Meinung keinen Sinn wenn die Suche bereits nach einem Buchstaben beginnt.


hier der ajax teil


```
<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>
```


das formular

```
<input type="text" onkeyup="searchFor(this.value);"/>
```

und der php code

```
if ($_POST["suchbegriff"] ){
	

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

Wie erwähnt, möchte ich, dass die Suche erst beginnt wenn mind. 3 Zeichen eingegeben worden sind.

DANKE schon mal für jede Hilfe und jeden TIPP

D A N K E


----------



## rd4eva (20. Februar 2010)

Die Anzahl von Zeichen kriegst du über length raus.

Also suchbegriff.length oder im input this.value.length

Du könntest vor die searchFor funktion noch eine andere funktion setzen die erstmal auf length prüft und die searchFor funktion erst aufruft wenn length >= 3.

Oder du baust es halt direkt in deine searchfor funktion ein.


----------



## xxxmike (20. Februar 2010)

ja das hört sich alles cool an, aber wie genau baue ich das ein?
Java_script_, Ajax ist leider nicht so meine Stärke:

Danke schon mal, finde ich immer super wenn man hier hilfe bekommt

DANKE


----------



## rd4eva (20. Februar 2010)

Zum Beispiel so

```
<input type="text" onkeyup="(this.value.length >= 3) ? searchFor(this.value) : '';">
```

oder so

```
function preSearch(suchwort){
	if(suchwort.length>=3){
 		searchFor(suchwort);
	}else{
		return false;
	}
}
```


```
<input type="text" onkeyup="preSearch(this.value);">
```

oder so

```
function searchFor(suchwort){
	if(suchwort.length<3){
		return false;
	}
	/*
	....dein code
	*/
}
```


```
<input type="text" onkeyup="searchFor(this.value);">
```


----------



## xxxmike (20. Februar 2010)

DANKE,
dass ist ja total SUPER, und klappt.

DANKE - DANKE


----------

