Nach mehreren Daten filtern

EGJSoldier

Erfahrenes Mitglied
Hallo alle zusammen,
Code:
$sql = "SELECT G.Name AS geg, G.Beschreibung, G.Kaufjahr, G.Anzahl, K.Name AS kat, R.Nummer
        FROM tbl_gegenstand AS G
		INNER JOIN tbl_kategorie AS K ON G.id_Kategorie = K.Kategorie_id
		INNER JOIN tbl_regal AS R ON G.id_Regal = R.Regal_id
		WHERE G.Name='$gegenstand' AND K.Name='$kategorie' AND G.Anzahl='$anzahl' AND R.Nummer='$regalnummer' AND G.Kaufjahr='$kaufjahr'";

Wie kann ich hier nach nur z.B. zwei Sachen Filtern. Ich habe ein Formular, wo ich 5 Eingaben tätigen kann. Wenn ich jedoch nur zwei davon Benutze, dann Filtert er immer noch nach allen 5. Das heiß, ich bekomme im meinem Fall keine Ausgabe.

Danke schon mal im voraus.

MfG
EGJSoldier
 
Setze den SQL-String im PHP dynamisch zusammen

PHP:
$sql = "SELECT ..... WHERE ";
if ($gegenstand) $where[] .= G.Name='$gegenstand';
if ($kategorie)  $where[] .= K.Name='$kategorie';
....
$sql .= implode(' AND ', $where);
 
Parse error: syntax error, unexpected '=' in D:\xampp\htdocs\inventur\filter.php on line 42
Bekomme diese Fehlermeldung. In dieser Zeile steht das hier:
PHP:
if ($gegenstand) $where[] .= G.Name='$gegenstand';
Er hat irgendeinProblem mit dem Gleichheitszeichen. Woran liegt das

MfG
EGJSoldier
 
Moin EGJSoldier,

Parse error: syntax error, unexpected '=' in D:\xampp\htdocs\inventur\filter.php on line 42
Bekomme diese Fehlermeldung. In dieser Zeile steht das hier:
PHP:
if ($gegenstand) $where[] .= G.Name='$gegenstand';
Er hat irgendeinProblem mit dem Gleichheitszeichen. Woran liegt das
Hmm... vielleicht ein Syntaxfehler? *grübel*
Sorry, vielleicht bin ich da etwas altmodisch, aber..

Wenn es um eine einzige gottverdammte Halbzeile geht, bei der ich den Hinweis "Syntaxerror" bekomme, dann wäre vermutlich erst die fünfte oder sechste Maßnahme, in einem Forum nachzufragen, ob mir jemand Stützräder leihen könnte...

Egal ..versuch doch mal, der TEXT-Variablen $where einen TEXT-String zuzuweisen.
HINT: in vielen Programmiersprachen sind Textstrings in Anführungszeichen eingeschlossen..."in etwa so".

Kopfschüttelnd
Biber
 
Aber wenn er den Syntaxerror nunmal selber nicht entdeckt können wir ihn deshalb doch nicht im Stich lassen.

PHP:
$sql = "SELECT * FROM tabelle WHERE ";

if (@$gegenstand) $where[] .= "G.Name = '" .$gegenstand ."'";
if (@$kategorie)  $where[] .= "K.Name = '" .$kategorie ."'";
if (@$anzahl)  $where[] .= "G.Anzahl = '" .$anzahl ."'";
if (@$regalnummer)  $where[] .= "R.Nummer = '" .$regalnummer ."'";
if (@$kaufjahr)  $where[] .= "G.Kaufjahr = '" .$kaufjahr ."'";

$sql .= implode(' AND ', $where);

So müsste es klappen.

Gruß Thomas
 
Zuletzt bearbeitet:
[OffTopic]
Moin tombe,

Aber wenn er den Syntaxerror nunmal selber nicht entdeckt können wir ihn deshalb doch nicht im Stich lassen.

...ja, hast natürlich Recht.
Ich hab mich nur so aufgeplustert, weil ich nicht bemerkt hatte, dass er es überhaupt versucht hat...

Musste einfach mal raus... kann aber gerne auch komplett gelöscht werden (wie dieser Kommentar hier auch)

@EGJSoldier
Sorry, mein Kommentar war etwas überzogen und hätte auch konstruktiver sein können.
Werde mich bessern. Bzw. zu bessern versuchen.

Grüße
Biber
[/OffTopic]
 
Sorry, hab wieder mal bilnd beispiele geschrieben... Bei den if-Zeilen natürlich kein .= sondern nur ein =. '.=' braucht man um einen String zu erweitern. Also wie
PHP:
$string = 'a';
$string = $string.'b';
$string .= 'c';
//$String beinhaltet nun 'abc'
Das brauchen wir natürlich nicht, wenn wir im Array $where einen neuen Eintrag hinzufügen wollen...


Zudem ist mein String nicht in ". War wohl etwas müde....
Zu den {} kann ich noch volegendes empfehlen http://www.dynamic-webpages.de/php/language.types.string.php#language.types.string.parsing.complex

PHP:
$sql = "SELECT ..... WHERE ";
if ($gegenstand) $where[] = "G.Name='{$gegenstand}'";
if ($kategorie)  $where[] = "K.Name='{$kategorie}'";
....
$sql .= implode(' AND ', $where);
 
Zuletzt bearbeitet:
Zurück