Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2004 Teil von Februar

SELFHTML Forumsarchiv
Problem mit Datenbankabfrage

Informationsseite
  1. Seite (DATENBANK) Problem mit Datenbankabfrage von Alex, 29. 02. 2004, 21:01
nach unten

Problem mit Datenbankabfrage

Die folgende Nachricht zum Thema stammt von: Alex, 29. 02. 2004, 21:01

Hallo Leute,ich habe folgendes Problem:

Ich würde gerne für eine Seite meiner Mannschaft immer die zwei aktuellsten folgenden Termine für Spiele anzeigen lassen.

In der Tabelle habe ich einmal "Auswärts" für die Auswärtsmannschaft und "Heim" für das Heimteam.

Da ich ja jetzt sowohl nach dem Heim- als auch nach dem Auswärtsteam filtern will (Beide Male wäre es bspw. "Herren 2") und gleichzeitig nach dem Datum,d.h. es soll kein Termin dastehen,der schon vorbei ist,habe ich folgende Abfrage geschrieben:

$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";

wobei limit=2

ist.

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?

Vielen Dank im vorraus

nach obennach unten

Problem mit Datenbankabfrage

Die folgende Nachricht zum Thema stammt von: Götz, 29. 02. 2004, 23:43

Hallo Alex!

»» $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.

Also, probiers dochmal, indem Du für den Datumsvergleich ein konkretes Datum einsetzt, vielleicht klappt ja was mit dem Datumsvergleich zwischen gespeichertem Wert und NOW() nicht.

Ansonsten wäre es vielleicht noch sinnvoll, die Datensätze mit ORDER BY Datum ASC zu sortieren, damit auch sicher die beiden nächsten spiele angezeigt werden.

MfG
Götz
--
Losung und Lehrtext für Sonntag, 29. Februar 2004
Des Herrn Augen schauen alle Lande, dass er stärke, die mit ganzem Herzen bei ihm sind. (2.Chronik 16,9)
Wie überschwänglich groß ist seine Kraft an uns, die wir glauben, weil die Macht seiner Stärke bei uns wirksam wurde, mit der er in Christus gewirkt hat. (Epheser 1,19-20)
(http://www.losungen.de/heute.php3)

nach obennach unten

Problem mit Datenbankabfrage

Die folgende Nachricht zum Thema stammt von: Alex, 01. 03. 2004, 02:13

»»
»» »» $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";

wie schon gesagt,haut nicht hin.mache ich hier einen fehler??
»»
»» Also, probiers dochmal, indem Du für den Datumsvergleich ein konkretes Datum einsetzt, vielleicht klappt ja was mit dem Datumsvergleich zwischen gespeichertem Wert und NOW() nicht.
»»

hab ich auch versucht,haut auch nicht hin,ich habe den eindruck er sucht sich die daten willkürlich raus

»» Ansonsten wäre es vielleicht noch sinnvoll, die Datensätze mit ORDER BY Datum ASC zu sortieren, damit auch sicher die beiden nächsten spiele angezeigt werden.

auch net geklappt.

hilfe

nach obennach unten

Problem mit Datenbankabfrage

Die folgende Nachricht zum Thema stammt von: Ilja, 01. 03. 2004, 08:21

yo,

»» Aber irgendwie haut das nicht hin,es werden auch Termine angezeigt,die nicht mehr aktuell sind.

erst einmal fehlt ein ORDER BY nach datum sortiert, was dir aber schon gesagt wurde. das andere ist, was zeigt den die funktion NOW() für ein datum an. lass es dir doch mal ausgeben.

Ilja

nach obennach unten

Problem mit Datenbankabfrage

Die folgende Nachricht zum Thema stammt von: Axel Richter, 01. 03. 2004, 10:41

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

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2004 Teil von Februar

© 1998-2008 Seite Impressum, Software: Classic Forum