MySQL Abfrage mit LIKE

wal

Erfahrenes Mitglied
Hallo,

ich habe eine Userdatenbank in der Vorname, Nachname, Position, Telefonnumer etc. enthalten sind. Nachname, Vorname sind normale Inputfelder. Position ist eine Optionsliste. Nun möchte ich über alle Felder suchen können.

Wenn ich mit unten stehender Abfrage auf die Felder Vorname und Nachnahme zugreife funktioniert dies auch problemlos und ich erhalte die richtigen Ergebnisse. Nehme ich in die Abfrage nun das Feld Position mit auf, erhalte ich keine Ergebnisse mehr. Beinhaltet das Optionsfeld aber einen Wert, der bekannt ist in der DB, funktioniert es. Das bedeutet, wenn keine Optionslisteneintrag ausgewählt wird, sehe ich auch keine Ergebnisse!

Ich denke, das Problem liegt daran, das ich auf den Defaultwert im Formular erst abfrage, ob eine Suchauswahl getroffen wurde. Wenn nicht wird der Defaultwert (Option auswaehlen) durch "" ersetzt und in die Suche mitaufgenommen - ist wohl ein falscher Weg:

Code:
...
if ($Position == "Option auswaehlen"){
   $Position = "";
}
...
$result = @mysql_query("SELECT * FROM telefonbuch WHERE (Vorname LIKE '%$Vorname%') AND (Nachname LIKE '%$Nachname%') AND (Position LIKE '%$Position%')");
...

Nochmals (verständlicher) zusammengefasst:
Vorname+Nachname+Position(ausgewählt) = bringt Ergebnis
Vorname+Nachname+Position(Defaultwert) = kein Ergebnis

Hat jemand eine Idee, wie ich die Abfrage hinbekommen kann?
Jeder Tipp ist natürlich herzlich willkommen! :)

Vielen Dank im Voraus...
 
Hi

Ich denke mal dass dein "Position-Feld" nicht wirklich leer ist.
Mach ein trim() drüber.

Oder aber noch besser, setze die Query schön Stück für Stück zusammen:
... ist auch gleich ein viel schönerer Programmierstil und wenn Du Dich daran gewöhnt hast auch viel übersichtlicher und leichter zu warten (wenn Du modifizierungen zu machen hast).

strSql = ""
strSql = strSql & " SELECT *"
strSql = strSql & " FROM telefonbuch"
strSql = strSql & " WHERE (Vorname LIKE '%$Vorname%')"
strSql = strSql & " AND (Nachname LIKE '%$Nachname%')"
if trim($Position) <> "" then
strSql = strSql & " AND (Position LIKE '%$Position%')"
end if
 
Hallo zephelon,

vielen Dank für Deine Hilfe.

So ist es viel Übersichtlicher und funktioniert sehr schön.

:)
 
Zurück