Hi Tim!
Na, dann mal los. Also, bei mir geht’s um die Sterne (ist für
eine Bewertung), die können den Wert 1-7 haben. Wenn ich
danach suche klappt es auch, dann findet er alle Datensätze
z.B. mit 5 Sternen. Aber wenn ich dieses Suchkriterium frei
lasse, klappt’s nicht.
Der Code sihet so aus:
$anfrage = „SELECT * FROM msmm_spieletests WHERE autor LIKE
'%“.$_POST[„autorensuche“]."%’ AND titel LIKE
‚%".$_POST[„titel“]."%‘ AND verlag LIKE
‚%".$_POST[„verlagsuche“]."%‘ und viele weitere Kriterien";
if (’".$_POST[„gesamt“]."’ != „nix“) {
$anfrage = „$anfrage AND sterne_gesamt =
'“.$_POST[„gesamt“]."’ ";
} else {
$anfrage = "$anfrage AND sterne_gesamt = ‚%‘ ";
}
Statt % habe ich es auch schon mit >=1 probiert, aber auch
das führt nicht zum Erfolg.
Okay, ich versuche es mal:
Ich weiß nicht, wie tief du in PHP drin bist, aber ich kenne das so, dass der Punkt quasi das Verkettungszeichen ist. Also
„x“ . „y“
ergibt
„xy“
Dann würde bei der If-Abfrage ja reichen:
if ($_POST[„gesamt“] != „nix“) {
Ich weiß nicht genau, warum du auf „nix“ abfragst. Ich nehme an, wenn der Benutzer nicht nach einer Bewertung suchen will, bleibt das Feld frei, oder? Dann wäre es ja einfach != „“
Wenn der Benutzer jetzt sagt, such mir alle was auch immer, die 2 Sterne haben, hängst du an die Anfrage den Passus dran:
$anfrage = $anfrage . " AND sterne_gesamt = " . $_POST[„gesamt“];
Du verkettest also deine bestehende Anfrage mit "AND sterne_gesamt = " sowie schließlich mit dem Wert, nach dem der Benutzer suchen will. Sucht man in Zahlenfeldern, so brauchen diese nicht in Anführungszeichen geschrieben werden.
Im Else-Teil erfolgt keine Aktion, dann bleibt die SQL-Abfrage eben ohne. Ansonsten kriegt man Probleme, wenn du z.B. im Zahlenfeld nach % abfragen willst. Else-Teil brauchst du also gar nicht.
Also, da wo es geht, habe ich eine MySQL-Abfrage (suche alle
Spiele und zeige $row->spielename , §row->autor etc.).
Bei der Suche, schränke ich diese Ergebnisse durch die
Suchkriterien ein, so wie oben beschrieben und lasse das
Ergebnis genauso, mit $row->spielname anzeigen, aber da
kommt er mit Umlauten nicht klar. Es ist die selbe Datenbank.
Ich kann nicht ganz nachvollziehen, wieso es an dem Formular
liegen sollte, schließlich ändert sich dadurch ja nur die
Größe der angezeigten Ergebnisse, ansonsten ist ja eigentlich
alles gleich.
Das ist echt komisch. Ich hatte aber selbst schon mal den Fall, dass die Suche anders umgesetzt wurde, als ich es mit Formulardaten versuchte.
Spaßeshalber könntest du die Abfrage einmal durchführen und statt auf die Formulardaten abzufragen, reale Werte benutzen. Also
$anfrage = „SELECT * FROM msmm_spieletests WHERE autor LIKE ‘mueller’“
anstatt
$anfrage = „SELECT * FROM msmm_spieletests WHERE autor LIKE '%“ . $_POST[„autorensuche“] . „%’“ mit Eingabe von mueller
Sollte da ein anderes Ergebnis rauskommen, was die Umlaute betrifft, hat es was mit den Formulardaten zu tun.
Fehler bei Umlauten in der Datenbank? Was heißt das? Darf ich
in der DB keine Umlaute benutzen? Und wenn ja, warum klappt’s
dann einmal schon und beim anderen Mal nicht?
Nein, natürlich darfst du das. Hab es nur auch schon erlebt, dass es in der Datenbank schon falsch drin stand und man sich nachher wunderte, dass das falsche Ergebnis rauskam 
Viele Fragen, ich hoffe ich nerv Dich nicht.
Nein, gar nicht - ich finde es witzig, dass ich als blutiger Anfänger offensichtlich helfen kann 
Liebe Grüße,
Julia