Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Kleines Problem mit ORDER BY [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Kleines Problem mit ORDER BY


 
Fretchen
10-08-2002, 16:41 
 
Hallo zusammen!

Also... ich hab ein kleines Gästebuch entwickelt und hab jetzt ein mittelkleines Sortierungsproblem bei der Ausgabe der Datensätze.

Ich lese die Daten ein über $query="SELECT * FROM gaestebuch ORDER BY datum DESC, zeit DESC".

Logisch gesehen sortiert er mir die Datensätze jetzt erst nach dem Datum und dann nach der Zeit... die unlogische Ausgabe (Augenmerk bitte auf den mit * gekennzeichneten Datensatz) sieht folgendermaßen aus:

Datum - Zeit - Benutzer

07.08.02 - 15:25 Uhr - Tester
07.08.02 - 14:42 Uhr - Tester
07.08.02 - 12:28 Uhr - Tester
06.08.02 - 22:29 Uhr - Tester
*10.08.02 - 16:12 Uhr - Tester *

Die Datenfelder Datum und Zeit habe ich als VARCHAR deklariert. Könnte der Fehler daran liegen?

Danke für eure Hilfe!

Gruß

Fretchen

 
MelloPie
10-08-2002, 17:00 
 
Definier die Felder als date dann gehts varchar wird nicht als datum sortiert. btw brauchst Du nicht datum und zeit trennen...
datetime geht auch.

 
hand
10-08-2002, 17:03 
 
Ja, so ist es !

Anstatt zwei Felder für datum und Zeit zu verwenden, nimm doch ein Feld mit dem Datentyp datetime. Das Format wäre dann 'YYYY-MM-DD HH:MM:SS'.
http://www.mysql.com/doc/en/Date_and_time_types.html

Nicht nur das Sortieren wird dann ordnungsgemäß abgehandelt, sondern auch Datums- und Zeitoperationen (Addition, Subtraktion, ...) werden unterstützt
http://www.mysql.com/doc/en/Date_and_time_functions.html

 
Fretchen
10-08-2002, 17:09 
 
Hey... das ging aber mal wieder fix. Danke!

Hm... datetime... damit habe ich vorher gearbeitet. Problem hierbei: Ich möchte bei der Ausgabe der Daten zuerst den Namen des Verfassers ausgeben. Darunter erscheinen zwei kleine Grafiken (Brief- und Haussymbol) für evtl. angegebene E-Mail bzw. Homepage-Adressen. Darunter folgt das Datum und dann wiederrum in einer neuen Zeile die Zeit. Kann ich das Feld datetime auch anschließend beim auslesen "aufsplitten"? Wenn das ginge, dann steige ich gerne auf datetime um.

 
hand
10-08-2002, 17:26 
 
Logo kannst Du das ...

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%d-%m-%Y'); --> 04-10-1997

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%Y/%m'); --> 1997/10

http://www.mysql.com/doc/en/Date_and_time_functions.html

 
Fretchen
10-08-2002, 18:42 
 
Ich glaub ich krieg's nie so richtig auf die Reihe...

Also: Erst mal vielen Dank an euch alle für die schnellen Antworten. Ne blöde Frage habe ich allerdings noch auf Lager:

Wie zum Henker muß ich denn jetzt den Befehl an die MySQL-Datenbank übergeben?

Ich lese die Datensätze über eine While-Schleife in ein Array ein. Wie bekomm ich denn jetzt das Datum bzw. die Zeit aus meinem MySQL-Datetime-Feld heraus (und wie wandle ich die dann in ein anderes Format (Datumformat: TT.MM.JJJJ / Zeitformat: HH:MM) um Sie anschließend getrennt von einander ausgeben zu können?

Ich hab jetzt schon ein wenig hin und her probiert... aber ich bekomms einfach nicht hin (PHP ist doch nicht sooooo einfach, wie ich zuerst dachte).

Nochmals vielen Dank für eure Tips und Hilfestellungen.

Gruß

Fretchen

 
hand
10-08-2002, 18:55 
 
Das machst Du mit MySQL Mitteln in der MySQL Query. Füge die date_format() Anweisung Deiner NySQL Query hinzu:

SELECT
name,
ort,
date_format(datumintabelle,'%d.%m.%Y') AS handdatum,
date_format(datumintabelle,'%H:%i') AS handzeit
FROM
tabelle
ORDER BY
datumintabelle DESC

jetzt kannst Du auf die Felder "handdatum" und "handzeit" (definiert mit Hilfe von AS ..., SELECT-Feldnamen kannst vergeben wie es Dir gefällt) zugreifen genauso wie auf die Felder name,ort, etc.

 
Fretchen
10-08-2002, 18:59 
 
oh man... dat war ja mal wieder ne schwere geburt.

ich hab die ganze zeit versucht über ne separate query den befehl an die mysql-datenbank zu schicken und bekam jedes mal nur merkwürdige bezeichnungen ausgesteuert, aber nicht das geforderte datum.

herzlichen dank hand!

ohne euren (wirklich genialen) support hier, könnte ich mich das ein oder andere mal erschiessen.

dann versuch ich jetzt mal mein glück...

mfg

fretchen


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:36 Uhr.