Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 07-11-2011, 15:04
fabio
 Registrierter Benutzer
Links : Onlinestatus : fabio ist offline
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 408
fabio ist zur Zeit noch ein unbeschriebenes Blatt
Standard Suchalgorithmus für MySQL Tabelle

Hallo zusammen

Ich habe eine Tabelle die etwa so ausschaut:

SID, PID sind eineindeutig, Vor- und Nachname natürlich nicht, geschlecht ist 1=männlich, 2=weiblich

Das Skript bekommt einen String (und Key) und gibt eine JSON Antwort zurück welche PID, Vor- und Nachname enthält.

Der String kann allerdings etwas komplexer sein, zB so:
"Fab,Math,Andre" oder "männlich", "Ma Must, Han Müll", "Mustermann" oder "123" (suche via PID).

Das Script funktioniert bis jetzt teilweise, und zwar wird einfach das "oder" genommen, aber nicht das "und", also "Fab oder Math oder Andre" geht, aber nicht "Ma und Must".

Code:
$filter = mysql_real_escape_string($_GET['filter']);
//$filter = "fab pi, seb bo, tun";
//$filter = "pigagn,bock,tunay";
$abfragesegment = "(vor LIKE '%XXX%' OR nach LIKE '%XXX%' OR pid LIKE '%XXX%')";



$t1 = explode(",",$filter);
while(list($key,$value)=each($t1)){
	$value = trim($value);
	if($value=="männer"){
		$t2[] = "(geschlecht=1)";
	}elseif($value=="frauen"){
		$t2[] = "(geschlecht=2)";
	}elseif(strlen($value)>=3){
		$t2[] = str_replace("XXX",$value,$abfragesegment);
	}
}
//print_r($t2);



$wherequery = "(".implode(" OR ",$t2).")";

$query = "SELECT sid,pid,vor,nach,geschlecht FROM students WHERE pid!=0 AND 
(
	".$wherequery."
)
LIMIT 0,300";
$res = mysql_query($query)OR DIE(mysql_error());
while($row=mysql_fetch_array($res)){
	$resultate[]=array($row['pid'],$row['sid'], $row['vor']." ".$row['nach']);
}
echo json_encode($resultate);
Wenn ich das jetzt noch erweitern würde gäbe das schnell einen recht langen Query.

Gibt es ein Framework oder so was, womit ich einfacher solche Suchquerys machen kann?
Mit Zitat antworten