Bei WHERE filtern (MySQL)
Robsen
- php
0 Rafael0 Robsen
0 Krueger0 Jigg the Rapper
Hi!
Wenn ich die Daten per Php aus meiner Datenbank auslese, mache ich das so...
$sql = "SELECT
titel, link, kategorie
FROM
links WHERE kategorie='buecher' ORDER BY titel ASC";
Wenn ich jetzt mehrere Kategorien habe, z.B. buecher, dvds und cds, aber nicht jedes mal
WHERE kategorie='buecher'
WHERE kategorie='dvds'
WHERE kategorie='cds'
in den Quelltext eintippen will, gibts dafür ne Lösung? Ich habe z.B. schon mal gesehen, dass die eine oder andere Seite in der Browserzeile &filter=sonstwas stehen hatte. Kann ich die WHERE-Geschichte über den Eintrag in der Browserzeile filtern und wenn ja, wie?
Vielen Dank!!
$sql = "SELECT
titel, link, kategorie
FROM
links WHERE kategorie='".mysql_real_escape_string($_GET['filter'])."' ORDER BY titel ASC";
Inwieweit bist du mit PHP vertraut soetwas nicht zu wissen. Der SQL-Query ist zuallererst mal ein String. Du musst nur auspassen, dass man dir in diesen keinen Schadcode einschmuggelt.
Im obigen Beispiel steht dir unter seite.php?filter=foo nun ein dynamischer Paramter zur Verfügung.
Danke für die Lösungen, dieser hier klappt wunderbar!
$sql = "SELECT
titel, link, kategorie
FROM
links WHERE kategorie='".mysql_real_escape_string($_GET['filter'])."' ORDER BY titel ASC";
> Inwieweit bist du mit PHP vertraut soetwas nicht zu wissen.
Es geht eben so, aber man wird ja jeden Tag ein bißchen schlauer! :-) Vielen Dank für Eure Hilfe!
Hallo
Kann ich die WHERE-Geschichte über den Eintrag in der Browserzeile filtern und wenn ja, wie?
Das könntest du z.B. so lösen:
$sql = "SELECT
titel, link, kategorie
FROM
links";
if(isset($_GET['filter'])){
switch($_GET['filter'])){
case "buecher":
$sql .= " WHERE kategorie='buecher'";
break;
case "dvds":
$sql .= " WHERE kategorie='dvds'";
break;
default:
/* die WHERE-KLausel, wenn $_GET['filter'] weder buecher noch dvds oder leer sein sollte */
}
}else{
/* die WHERE-Klausel, wenn kein filter über die URL übergeben wurde */
}
Gruß
Krueger
Wenn ich jetzt mehrere Kategorien habe, z.B. buecher, dvds und cds, aber nicht jedes mal
WHERE kategorie='buecher'
WHERE kategorie='dvds'
WHERE kategorie='cds'
Eventuell geht sowas:
~~~sql
WHERE
(kategorie IN ('buecher', 'dvds', 'cds')