MySQL Suche!

Status
Nicht offen für weitere Antworten.
soweit komm ich fast mit - doch wie wird das suchergebnis ausgegeben? row...
Ne antwort wäre cool :-)

grüße
 
ja so wie du es auch sonst machst, das weißt du doch hoffentlich :)

ansonsten bin ich ma so frei:

PHP:
 $sql = "...";
 $res = mysql_query($sql) or die(mysql_error());
 
 while($weed = mysql_fetch_assoc($res)) {
 	 print_r($weed);
 }

gruß :)
 
Laduros hat gesagt.:
soweit komm ich fast mit - doch wie wird das suchergebnis ausgegeben? row...
Ne antwort wäre cool :-)

grüße
Etwas mehr Gross- und Kleinschreibung waere auch ganz cool. ;)

Nach der Abfrage kann dann ganz normal mittels mysql_fetch_assoc oder einen aehnlichen Funktion ein Element nach dem anderen ausgegeben werden.
 
firstlord18 hat gesagt.:
Ah mir ist grad was aufgefallen:

ich hatte das vorhin falsch getestet! Wenn ich die jeweiligen Namen richtig eingebe, dann klapp es wunderbar. Wenn ich jedoch in der Tabelle vielen Nachname á la nachname1, nachnam2, nachname3, nachname4, ..., nachname 20 habe, und als Suchstring nachname eingebe, es leider nicht!

Kann man da eventuell diese IN Abfrage mit einer Like Abrfage verknüpfen?
Dennis Wronka: hast du das eventuell überlesen?

Edit: nero: ok, ich versuche das mal!

Edit2: so geht es nicht:

PHP:
  $name = "Vorname Nachname Björn Han";
  $suchtext = str_replace(" ","%','%",$name);  
  $suchtext = "%".$suchtext."%";

da er das % dann als Bestandteil der Zeichnkette ansieht :(


Edit²: hm, habe nun ne kleine Funktion gefunden, und sie für mich abgewandelt.
Diese klappt wirklich super, aber eine Frage: Ist es zu viel, wenn die Query Anzahl schonmal auf 15 Querys kommen kann, je nachdem wie viel Namen eingegeben werden!
Die Query Anzahl kann man sich wie folgt errechnen:

"zu durchsuchende Spalten" * "eingegebene Namen"

da ich ja eigentlich immer 2 Spalten durchsuche, und der User schätzungsweiße 2 - 3 Namen eingibt, werden also 4 - 6 Querys durchgeführt.
Ist das zu viel, oder ist das ok?
 
Zuletzt bearbeitet:
Dennis reicht voll und ganz. Und auf reptiler hoer ich auch weiterhin. ;)

Nein, ueberlesen hab ich es nicht. Ich weiss nur leider keine Antwort auf die Frage.
 
was hälst Du davon (gibt wirklich perfekte Suchergebnisse, nur eben viel Querys):

PHP:
 function teilweise_suche ($table, $find, $spalten) {
 	// Fields:
 	$fields = array();
 	$e = explode(",", $spalten);
 	foreach( $e as $spalte ){
 		$fields[] = trim($spalte);
 	}
 
 	$namen = array();
 	$e = explode(" ", str_replace(",", " ", str_replace("-", " ", str_replace(";", " ", $find))));
 	
 	
 	foreach($e as $name) {
 		if(trim($name) == "")
 			continue;
 			
 		$namen[] = addslashes(trim($name));
 	}	
 
 
 	// jede Spalte in einer eigenen Query abfragen wg. Perfomance
 	$result = array();
 	for($j = 0; $j < count($namen); $j++) {
 		$find_this = $namen[$j];
 		
 		for ($i = 0; $i < count($fields); $i++) {
 			$col = $fields[$i];
 			$query = "select id, nachname, vorname, geschlecht, mss_stufen_id
 		    		  from $table where $col like '%$find_this%'";
 			$q = mysql_query($query)
 		    	or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
 				$_POST["querys"]++;
 			if($q) {
 				while($row = mysql_fetch_assoc($q)) {
 					if(isset($row["id"])) {
 		    			$result[] = $row;
 					}	
 				}	
 			}	
 		}
 	}	
 	ksort ($result);
 	return ($result);
 }  
 $string = "name1; nachname4,   björn - hans, vornam";
 $suchergebnisse = teilweise_suche("users", $string, "vorname, nachname");
 
Wenn's funktioniert ist ja soweit okay.
Ich bin nur der Meinung, dass das je nach Anzahl der Suchworte im String durchaus zu einer SQL-Orgie ausarten kann.
 
Dennis Wronka hat gesagt.:
Wenn's funktioniert ist ja soweit okay.
Ich bin nur der Meinung, dass das je nach Anzahl der Suchworte im String durchaus zu einer SQL-Orgie ausarten kann.
ja stimmt schon, aber ich denke eh, dass kaum jmd mehr als 3 Wörter eingibt!
 
Und wenn man die Anzahl der Wörte begrenzt! Zum Beispiel ab 5 Wörter riegelt das Script ab und gibt dem User die Anweisung weniger Wörter zu nehmen! Dann kanns nicht Passieren, dass irgendein Idiot sich einen Spass daraus macht dir deine Datenbank mit Query's zu bombardieren! ;-)
 
Status
Nicht offen für weitere Antworten.
Zurück