Hallo,
$sql="SELECT DATE_FORMAT(Datum, '%d.%m.%Y') AS Changedatum, TIME_FORMAT(Uhrzeit, '%H.%i') AS Changezeit, Heim, Aus FROM $tabellenname WHERE Heim = 'Herren 2' OR Aus = 'Herren 2' AND Datum>=NOW() LIMIT $limit";
Aber irgendwie haut das nicht hin,es werden auch Termine angezeigt,die nicht mehr aktuell sind.
Was ist der Fehler und wie kann ich ihn beheben?
Da ist ein Operator-Rangfolgen-Fehler. Die Operation AND ist höherwertiger als die Operation OR und wird deshalb zuerst ausgeführt, genau wie Multiplikation von Addition ausgeführt wird.
SELECT DATE_FORMAT(Datum, '%d.%m.%Y') AS Changedatum, TIME_FORMAT(Uhrzeit, '%H.%i') AS Changezeit, Heim, Aus FROM Tabelle
WHERE Heim = 'Herren 2' OR Aus = 'Herren 2' AND Datum>=NOW();
beinhaltet alle Datensätze, bei denen Heim = 'Herren 2' ODER für die gilt: Aus = 'Herren 2' AND Datum>=NOW(), also auch die Datensätze, bei denen Heim = 'Herren 2' und das Datum egal ist.
Du musst hier Klammern setzen:
SELECT DATE_FORMAT(Datum, '%d.%m.%Y') AS Changedatum, TIME_FORMAT(Uhrzeit, '%H.%i') AS Changezeit, Heim, Aus FROM Tabelle
WHERE (Heim = 'Herren 2' OR Aus = 'Herren 2') AND Datum>=NOW();
viele Grüße ;-))
Axel