mysql >und oder<

Zero2000

Erfahrenes Mitglied
Hallo

Ich komme bei einer, ich denke mal für euch einfachen, Abfrage nicht weiter.
Ich habe ein Suchfeld und ein Dropdown. In das Suchfeld gebe ich z.B. einen Interpreten ein und im Dropdown wähle ich dann ein Musikgenre aus.

Wenn ich nur ein Genre auswähle, soll er mir alle Datensätze mit diesem Genre anzeigen.
Wenn ich einen Interpreten oder nur den Anfangsbuchstaben eingebe und kein Genre soll er mir alle Interpreten die mit diesem Buchstaben beginnen anzeigen.
Oder eben beides wenn ich einen Interpreten oder Anfangsbuchstaben eingebe und ein Genre soll er mir natürlich alle passenden Datensätze anzeigen.

Ich habe es jetzt so.
mysql_query("SELECT * FROM musik WHERE name LIKE '$name%' OR genre = '$genre'");

Hier ist aber der Fehler, dass wenn ich ein genre eingebe er mir alle Datensätze anzeigt weil ich bei $name den Platzhalter % angebe.

Habt Ihr irgendeine Idee

MfG Maik
 
Wenn beide Bedingungen das Ergebnis einschränken sollen, musst Du and verwenden. Willst Du auch Ergebnisse erhalten, die nur einer der Bedingungen genügen, so liegst Du mit or richtig. Allerdings musst Du in dem Fall prüfen, ob auch beide Bedingungen oder nur eine der Bedingungen gefordert sind, z.B. mit [phpf]empty[/phpf], angewendet auf die Variable, mit der Du die Inhalte der Bedingungen übergibst und entsprechend verschiedene Queries absetzen.

Gruß hpvw
 
Ich sehe keine Möglichkeit deine Anforderungen nur mit einem SQL Statement gerecht zu werden.

PHP:
if ($name != "" && $genre != "") { // Wenn Name oder Genre gesetzt sind... 

  $query = "SELECT * FROM musik WHERE"; // Bereite Query vor. Das wird sowieso ausgeführt
  if ($name != "") { // Wenn der Name gegeben ist.
    $query .= " name LIKE '$name%' AND";
  }

  if ($genre != "") { // Wenn Genre gegeben ist.
    $query .= " genre = '$genre' AND";
  }

  $query .= " 1";

} else { // Wenn Name & Genre nicht gesetzt sind
  // do something...
}

Bringt dich das weiter?

;)
 
SUPER

Ich danke Dir.
Meine Abfrage hat sich nun um 3 if-Schleifen erweitert, funktioniert aber.
So sieht es aus:
PHP:
if(empty($name))
{
mysql_query("SELECT * FROM musik WHERE genre = '$genre'");
}elseif(empty($genre)){
mysql_query("SELECT * FROM musik WHERE name LIKE '$name%' ");
}else{
mysql_query("SELECT * FROM musik WHERE name LIKE '$name%' OR genre = '$genre'");
}

MfG Maik
 
Zurück