Datensatz auslesen Date formatieren

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM Events order by datum' at line 1
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... on line 13

hab ich mit echo msql_error(); vor der line 13 gemacht..
Linie 13:
PHP:
while($line = mysql_fetch_array($results))
 
PHP:
$link = mysql_connect("localhost","user","pw");
mysql_select_db("DB");

$query = "SELECT DATE_FORMAT(a.datum, '%d.%m.%Y') AS form_datum, a.* FROM Events a ORDER BY datum";
$results = mysql_query($query);

while($line = mysql_fetch_array($results)) 
{
echo $line['form_datum]."<br />";
}
 
hallo

ich wollte jetzt das ganze nach datum sortieren, also dass wenn das datum vorbei ist, dass der die nicht mehr anzeigt und das limit auf 4 setzen.

So habe ich das gemacht:

PHP:
$query = "SELECT DATE_FORMAT(a.datum, '%d.%m.%Y') AS form_datum, a.* FROM Events WHERE datum >= NOW() a ORDER BY datum DESC"; 
$results = mysql_query($query);

ich bekomme aber immer den fehler "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a ORDER BY datum DESC' at line 1"

Daraus kann ich leider nichts lesen :(
 
Wie bist du denn auf so ein Gewusel gekommen?


Also erstmal musst du wissen, ob das Datum als Timestamp oder als dmy vorhanden ist.

Beispiel mit Timestamp:


PHP:
$jetzt = time();

$query = "SELECT DATE_FORMAT(a.datum, '%d.%m.%Y') AS form_datum, a.* FROM Events WHERE datum >= '$jetzt' ORDER BY datum DESC"; 
$results = mysql_query($query);

Beispiel mit Datum:

PHP:
$timestamp = time();
$jetzt = date("d.m.Y",$timestamp);

$query = "SELECT DATE_FORMAT(a.datum, '%d.%m.%Y') AS form_datum, a.* FROM Events WHERE datum >= '$jetzt' ORDER BY datum DESC"; 
$results = mysql_query($query);

Das ganze sollte jetzt richtig sein... Habs selbst nicht getestet.
 
Ja warum steht denn da ein "a" so seelenallein mitten im Query rum?
mySQL will ihn anscheinend auch nich als Freund haben :P also weg damit!

Und wenn du von NOW() die Anzahl der Sekunden von 4 Tagen abziehs dann hast die letzten 4 Tage angezeigt. LIMIT weiste ja selbst wie stumpf das dahinter kommt.
 
Ja warum steht denn da ein "a" so seelenallein mitten im Query rum?
mySQL will ihn anscheinend auch nich als Freund haben :P also weg damit!

Und wenn du von NOW() die Anzahl der Sekunden von 4 Tagen abziehs dann hast die letzten 4 Tage angezeigt. LIMIT weiste ja selbst wie stumpf das dahinter kommt.

So weit habe ich es eben auch schon geschafft :D aber dann kommt dieser komische fehler:

Unknown table 'a'

PHP:
"SELECT DATE_FORMAT(a.datum, '%d.%m.%Y') AS form_datum, a.* FROM Events WHERE datum >= NOW() ORDER BY datum DESC LIMIT 4"

und wenn ichs so schreibe:

PHP:
"SELECT DATE_FORMAT(datum, '%d.%m.%Y') AS form_datum, * FROM Events WHERE datum >= NOW() ORDER BY datum DESC LIMIT 4"

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM Events WHERE datum >= NOW() ORDER BY datum DESC LIMIT 4' at line 1
 
Aliase werden mit dem Anweisungssyntax AS verwendet, das fehlt dir gänzlich:
Code:
Events AS a
Aber die hast ja wegfallen lassen.
Vielleicht kann man ja nicht erst ein Feld selektieren und dann nochmal "*" (alle Felder).
Habs so noch nie gesehen oder genutzt.
 
Aliase werden mit dem Anweisungssyntax AS verwendet, das fehlt dir gänzlich:
Code:
Events AS a
Aber die hast ja wegfallen lassen.
Vielleicht kann man ja nicht erst ein Feld selektieren und dann nochmal "*" (alle Felder).
Habs so noch nie gesehen oder genutzt.

Also wenn ich alle Dinge das selbst versuche zu debuggen, also nur mit den einzelnen Code"schnipseln" wegzulassen, dann funktioniert es ab dieser Syntax nicht mehr:

WHERE datum >= NOW()

Das mit dem zuerst 1 datensatz auslesen und dann alle, funktioniert... das habe ich in einem anderen Script auch. Das t.
 
das problem hat sich gerade erledigt, ich habe das a dannach gehabt und nicht vor dem Order

PHP:
"SELECT DATE_FORMAT(a.datum, '%d.%m.%Y') AS form_datum, a.* FROM Events a WHERE datum >= NOW() ORDER BY datum LIMIT 4";

Neues Problem ist aber gleich auch noch gekommen. Jetzt zeigt es mir alle Daten an, aber wenn es das heutige Datum ist, wird es nicht mehr angezeigt was es eigentlich sollte.

Beispiel:

In DB steht: Date = 2009-02-15
Ausgelesen wird aber dieser Datensatz nicht mehr.
Sollte aber eigentlich funktionieren oder nicht? ist ja >= und nicht nur >
 
Zurück