PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   WHERE mit zwei Bedingungen (http://www.selfphp.de/forum/showthread.php?t=13484)

Heinrich 14.05.2006 15:05:39

WHERE mit zwei Bedingungen
 
Hi,

ich lese eine Liste von Buchtiteln aus der Datenbank aus. Mit zwei (später vielleicht mehr) Select-Menüs (Land, Genre) setze ich Bedingungen:
PHP-Code:

$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t1.land = '$ausw' AND t2.genre = '$genre' ORDER BY t1.nachname ASC;"); 

Klappt auch, wenn jemand Land und Genre auswählt. Wenn aber jemand nur Land (oder nur Genre) auswählt, kommt natürlich nichts, weil ja die jeweils andere Bedingungen nicht erfüllt ist.

Ich möchte aber, dass - wenn jemand nur das Land wählt - die Buchtitel aller Genres aus diesem Land angezeigt werden (und andersrum). Habe schon mit if und isset probiert, krieg's aber nicht hin.

Wie mache ich's, dass eine Bedingung, deren Wert nicht gesetzt ist, ignoriert wird? Danke für die Tipps.

Gruß
Heinrich

Franzx 14.05.2006 15:26:13

AW: WHERE mit zwei Bedingungen
 
Ich könnte mir eine Lösung dieser Art vorstellen:
PHP-Code:

if (isset($_POST['genre']) && isset($_POST['land'])) {
$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre 
FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t1.land = '$ausw' AND t2.genre = '$genre' ORDER BY t1.nachname ASC;"
);

if (!isset(
$_POST['genre']) && isset($_POST['land'])) {
$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre 
FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t1.land = '$ausw' ORDER BY t1.nachname ASC;"
);
}
if (isset(
$_POST['genre']) && !isset($_POST['land'])) {
$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre 
FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t2.genre = '$genre' ORDER BY t1.nachname ASC;"
);


cu,
Franzx

Heinrich 14.05.2006 17:19:11

AW: WHERE mit zwei Bedingungen
 
Hi Franzx,

danke für die schnelle und ausührliche Antwort. Es funktioniert zwar nicht, hat mich aber weiter gebracht. Im Select-Menü ist nämlich, wie mir jetzt klar wurde, immer was gesetzt (hier der Hinweis "Land (oder Genre) auswählen. Deshalb klappt die if-Bedingung nicht. Aber so geht es jetzt:
PHP-Code:

if (isset($_POST['genre']) && isset($_POST['ausw'])) {
$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t1.land = '$ausw' AND t2.genre = '$genre' ORDER BY t1.nachname ASC;");

if (
$_POST['genre']=="Genre auswählen") {
$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t1.land = '$ausw' ORDER BY t1.nachname ASC;");
}
if (
$_POST['ausw']=="Land auswählen") {
$data mysql_query ("SELECT t1.land, t1.vorname, t1.nachname, t2.titel, t2.verlag, t2.verlagsort, t2.jahr, t2.seiten, t2.genre FROM autor AS t1 JOIN buecher AS t2 ON t1.ID = t2.autor_ID WHERE t2.genre = '$genre' ORDER BY t1.nachname ASC;");


Gruß
Heinrich


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:59:13 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.