Where ketegorie=musterORmusterzweiOR...

Aser

Erfahrenes Mitglied
tag
(hab die Suchfunktion bereits um Hilfe gebeten)

Ich will, dass mir die Datenbank die Werte ausspuckt, die einen meiner Kreterien entsprechen.
Da habe ich dann z.B. musterkategorieeins, musterkategoriezwei, musterkategoriedrei und die Datenbank soll mir nun die Felder liefern, bei denen die Spalte "kategorie" mit einem dieser drei Muster identisch ist.

Also sowas in der Art: (weiss selbst, dass das OR falsch gesetzt ist, aber genau des ist ja meine Frage)

PHP:
if($auszulesenekategorie!='')
{
$abfragenews = mysql_query("SELECT * FROM newsbeitraege WHERE kategorie='$auszulesenekategorie' AND kommentar='' ORDER BY `timestamp` DESC");
}
else
{
$abfragenews = mysql_query("SELECT * FROM newsbeitraege WHERE kategorie='$musterkategorieeinsOR$musterkategoriezweiOR$musterkategoriedrei' AND kommentar='' ORDER BY `timestamp` DESC");
}

ich könnts so machen, dass die Datenbank einfach alle Werte ausspuckt und ich dann nachträglich mit einer if-Funktion überprüfe, ob es sich um eines dierser drei Musterwerte handelt (bedauerlicherweise ändern sich diese Musterwerte ständig und drei musterwerte aus einer sehr grossen Datenbank rauszufischen ist nicht so effektiv, als ob ichs gleich bei den Ausgabekreterien beeinflusse)

nun hätte ich dann noch eine weitere Frage

gibt es sowas wie...
WHERE kategorie!='x'
?

dann mal vielen Dank im Voraus
 
Korrekt wäre:
SQL:
SELECT * FROM `tabelle` WHERE `kategorie` = 'muster' OR `kategorie` = 'muster2';
Die von dir gewählte Syntax funktioniert glaub ich nicht. Das sollte allerdings auch auffallen, wenn man mysql_error() nutzt.
 
PHP:
if($auszulesenekategorie!=''){
	$abfragenews = mysql_query('SELECT * FROM `newsbeitraege`
								 WHERE
									`kategorie` = "'.$auszulesenekategorie.'" AND
									`kommentar` = "" ORDER BY `timestamp` DESC');
} else {
	$abfragenews = mysql_query('SELECT * FROM `newsbeitraege`
								 WHERE
									`kategorie` = "'.$musterkategorieeins.'" OR 
									`kategorie` = "'.$musterkategoriezwei.'" OR 
									`kategorie` <> "'.$musterkategoriedrei.'" AND 
									`kommentar` = "" ORDER BY `timestamp` DESC'); // <> steht in MySQL für 'ungleich'
}

Nachtrag: Da war doch glatt jemand schneller :)
 
Du könntest mit der IN-Klausel arbeiten, etwa:
PHP:
$query = '
	SELECT
	        *
	  FROM
	        `newsbeitraege`
	  WHERE
	        `kategorie` IN ("'.mysql_real_escape_string($musterkategorieeins).'", "'.mysql_real_escape_string($musterkategoriezwei).'", "'.mysql_real_escape_string($musterkategoriedrei).'"
	    AND `kommentar` = ''
	  ORDER BY
	        `timestamp` DESC
	';
 
Ich denke Gumbos Lösung wird die einfachste sein, da sie den geringsten Schreibaufwand erfordert. Kannte ich auch noch nicht, die IN-Klausel... Also wieder was gelernt :)
 
Zurück