if, else if, else Problem

absyrtos

Mitglied
Hallo,

sehr wahrscheinlich handelt es sich bei mir nur um einen dummen Anfängerfehler, aber ich komme einfach nicht weiter. Ich habe zwei Dropdown Menüs (siehe Anhang). Nun möchte ich gerne, dass bei einer bestimmten Auswahl Bilder aus meiner Datenbank ausgelesen und angezeigt werden.

Wählt man also: Farbe blau und Art alle, dann sollen alle Arten in der Farbe blau ausgelesen und angezeigt werden. Bei Farbe alle und Art Golf soll der Golf in allen möglichen Farben ausgelesen und angezeigt werden. Der letzte Schritt wäre dann Farbe blau und Art Golf... Es soll dann der Golf in Farbe blau ausgelesen und angezeigt werden.

Und so bin ich vorgegangen:

PHP:
if($art == "" && $colour == "") {
$results = mysql_query("SELECT art, colour, url, UNIX_TIMESTAMP(dateonserver) AS dateonserver FROM testdb ORDER BY art");

$i=0;
while($showall = mysql_fetch_array($results))
  {
    $i++;
    images($showall['art'], $deutsch[$showall['colour']], $showall['colour'], $showall['url']);
    if ($i % 5 == 0) {echo '</tr><tr>';}
  }
}

else if($art == "") {
$results = mysql_query("SELECT art, colour, url, UNIX_TIMESTAMP(dateonserver) AS dateonserver, art FROM testdb WHERE colour = '".$colour."' ORDER BY art");

$i=0;
while($showart = mysql_fetch_array($results))
  {
    $i++;
    images($showart['art'], $deutsch[$showart['colour']], $showart['colour'], $showart['url']);
    if ($i % 5 == 0) {echo '</tr><tr>';}
  }
 }

else if($colour == "") {
$results = mysql_query("SELECT art, colour, url, UNIX_TIMESTAMP(dateonserver) AS dateonserver, colour FROM testdb WHERE art = '".$art."' ORDER BY colour");

$i=0;
while($showcolour = mysql_fetch_array($results))
  {
    $i++;
    images($showcolour['art'], $deutsch[$showcolour['colour']], $showcolour['colour'], $showcolour['url']);
    if ($i % 5 == 0) {echo '</tr><tr>';}
  }
}

else {
$results = mysql_query("SELECT art, colour, url, UNIX_TIMESTAMP(dateonserver) AS dateonserver, colour FROM testdb WHERE art = '".$art."' AND colour = '".$colour."'");

if(mysql_num_rows($results) == 0)
  {
    echo("<center><b>Keine Einträge in der Datenbank gefunden!</b></center><br />");
  } else {

$i=0;
while($showartcolour = mysql_fetch_array($results))
  {
    $i++;
    images($showartcolour['art'], $deutsch[$showartcolour['colour']], $showartcolour['colour'], $showartcolour['url']);
    if ($i % 5 == 0) {echo '</tr><tr>';}
  }
 }
}

Die Funktion dazu sieht so aus:

PHP:
function images($art, $colour, $colour2, $url)
{
    for($i = 0; $i < count($colour); $i++) {
    echo("<td><a href=\"db.php?art=".$art"\"><img src=\"http://images.domain.de/".$url."\" alt=\"".$colour." ".$art."\" /><br />".$colour." ".$art."</a></td>");
  }
}

Doch irgendwie will das ganze nicht so funktionieren wie es soll. Was mache ich falsch?
http://www.neocolours.de/beispiel.gif
 

Anhänge

  • 26103attachment.gif
    26103attachment.gif
    4,7 KB · Aufrufe: 4
Zuletzt bearbeitet:
Hallo

Leider sind wir keine Hellseher. Bitte genauer den Fehler einkreisen, was wird ausgegeben, kommt ein Fehler, evtl. Codeeingrenzung usw.
Fehlersensibilität hoch stellen: error_reporting(E_ALL);

mfg. Shadow
 
Ich hab am Ende eine } vergessen. Nun habe ich das Problem, dass nur die Ausgabe der Farbe funktioniert. Wenn ich z.B. nur Art auswähle wird nichts ausgegeben.
 
Zuletzt bearbeitet:
Teste mal dein Query in der Datenbank, evtl sind die Spaltennamen nicht richtig.

Dein code kann man aber noch optimieren z.B. so:
PHP:
// Query festelegen
if($art == "" && $colour == "") 
{
  $where = "ORDER BY art";
}
else if ($art == "") 
{
  $where = "WHERE colour = '$colour' ORDER BY art";
}
else if ($colour == "") 
{
  $where = "WHERE art = '$art' ORDER BY colour";
}
else {
         $where = "WHERE art = '$art' AND colour = '$colour'";
}
// Ausgabe 
$sql = "SELECT art, colour, url, UNIX_TIMESTAMP(dateonserver) AS dateonserver FROM testdb $where";
$erg = mysql_query($sql) OR die("Da stimmt was nicht !");
if(mysql_num_rows($erg))
{
  $i=0;
  while($showartcolour = mysql_fetch_array($results))
  {
    $i++;
    images($showartcolour['art'], $deutsch[$showartcolour['colour']], $showartcolour['colour'], $showartcolour['url']);
    if ($i % 5 == 0) {echo '</tr><tr>';}
  }
}else echo"<center><b>Keine Einträge in der Datenbank gefunden!</b></center><br />";

mfg
 
Zuletzt bearbeitet:
Du hast nur einen kleinen Fehler eingebaut, diesen hab ich verbessert. Sonst funktioniert es perfekt. Danke :)
 
Zuletzt bearbeitet:
Zurück