Hallo,
ich versuche gerade eine Benutzersuche zu realisieren. Jedoch habe ich ein Problem:
Es gibt 3 verschiedene Variablen nach denen gesucht werden können, wenn nur eine angegeben ist, soll auch nur nach dieser einen gesucht werden, wenn zwei angegeben sind sollen nach beiden gesucht werden mit 'and' usw.
Das funktioniert jetzt auch eigentlich mit meiner "version" ganz gut, jedoch finde ich sie unschön und die Abfrage dauert einfach zu lange, was zu späteren Problemen für den Server führen könnte(zu große Apache Prozesse). Hier mal meine Lösung:
ich hoffe irgendjemand weiß, wie man das um einiges Kürzer machen kann..
Danke schonmal im vorraus,
MfG
yami
ich versuche gerade eine Benutzersuche zu realisieren. Jedoch habe ich ein Problem:
Es gibt 3 verschiedene Variablen nach denen gesucht werden können, wenn nur eine angegeben ist, soll auch nur nach dieser einen gesucht werden, wenn zwei angegeben sind sollen nach beiden gesucht werden mit 'and' usw.
Das funktioniert jetzt auch eigentlich mit meiner "version" ganz gut, jedoch finde ich sie unschön und die Abfrage dauert einfach zu lange, was zu späteren Problemen für den Server führen könnte(zu große Apache Prozesse). Hier mal meine Lösung:
PHP:
function searchUser($class, $vorname, $nachname, $classzusatz) {
if ($classzusatz == "NO" && $vorname == "NO" && $nachname == "NO") {
$this->appendError("Bitte ueberpruefe deine Angaben!");
return false;
}
if ($class != "Klasse") {
$klike = "klasse like '".$class.strtolower($classzusatz)."'";
} else {
unset($klike);
}
if (!empty($vorname)) {
$vlike = "vorname like '%".$vorname."%'";
} else {
unset($vlike);
}
if (!empty($nachname)) {
$nlike = "nachname like '%".$nachname."%'";
} else {
unset($nlike);
}
if (isset($klike) && !isset($vlike) && !isset($nlike)) {
$searchcmd = $klike;
}
elseif (isset($vlike) && !isset($nlike) && !isset($klike)) {
$searchcmd = $vlike;
}
elseif (isset($nlike) && !isset($klike) && !isset($vlike)) {
$searchcmd = $nlike;
}
elseif (isset($klike) && isset($vlike) && !isset($nlike)) {
$searchcmd = "".$klike." and ".$vlike."";
}
elseif (!isset($klike) && isset($vlike) && isset($nlike)) {
$searchcmd = "".$vlike." and ".$nlike."";
}
elseif (isset($klike) && !isset($vlike) && isset($nlike)) {
$searchcmd = "".$klike." and ".$nlike."";
}
elseif (isset($klike) && isset($vlike) && isset($nlike)) {
$searchcmd = "".$klike." and ".$vlike." and ".$nlike."";
}
$searchtest = "SELECT username, vorname, nachname, klasse FROM ".$this->TABLES['users']." WHERE $searchcmd";
ich hoffe irgendjemand weiß, wie man das um einiges Kürzer machen kann..
Danke schonmal im vorraus,
MfG
yami