 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
02.10.2003, 10:48
|
#1
|
|
TP-Member
Registriert seit: Sep 2003
Ort: NRW - Moers
|
daten nach datum und uhrzeit sortieren
hallo... ich bins noch mal...
also..ich habe ein kleines forum gebastelt.
ich möchte meine themen nach datum und uhrzeit sortiert haben,
also so das der akktuellste zuerst erscheint...
in meiner datenbank habe ich das datum und zeit mit date() erfasst und in der tabelle gespeichert. Die tabelle hat den wert char.... 01.10.2003 18:47:50 (ich glaub das ist zum bearbeiten falsch)
könnt ihr mir weiterhelfen...
__________________
I wasted all my pretty years on you!
|
|
|
02.10.2003, 11:10
|
#2
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
hi!
also ich persönlich würde den zeitpunkt des postings mit einem timestamp erfassen und auch so in die db schreiben.
bei der ausgabe dann mittels folgender function in klartext ausgeben:
PHP-Code:
function unix2date($unixzeit,$format,$clock)
// Wandelt einen UNIX-Timestamp in ein normales Datum um
// und schickt einen String zurueck ...
// 11.09.2002 18:03 Uhr
{
if($format=="long") $months = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
if($format=="short") $months = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
if($format=="digit") $months = array("01.","02.","03.","04.","05.","06.","07.","08.","09.","10.","11.","12.");
list($mday,$month,$year) = split("( )",date("d n Y",$unixzeit));
$month -= 1;
if($clock=="uhr")
{
$uhrzeit=date("H:i",$unixzeit);
return $this_day="$mday. $months[$month] $year - $uhrzeit";
}
else
{
return $this_day="$mday. $months[$month] $year";
}
}
diese und noch mehr functions sind hier zu finden 
|
|
|
02.10.2003, 11:29
|
#3
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Warum so kompliziert?
MySQL beherscht die Datumsfunktionen (meiner Meinung nach sogar besser als PHP)... warum also Funktionen selberbauen, wenn man all das direkt in der Datenbank erledigen kann.
Um Daten und Uhrzeiten in MySQL zu speichern bietet MySQL extra vordefinierte Feldtypen: DATETIME, DATE, TIME
Speicher das Datum eines Postings einfach in einem Datetime feld ab. Beim Insert brauchst du noch nichtmal das Datum manuell übergeben, sondern kannst einfach die NOW()-Funktion von MySQL nutzen.
Nach Feldern vom Typ DATETIME kannst du ohne Probleme via ORDER BY sortieren.
Willst du nun das Datum formatiert ausgeben, braucht man ebenfalls keine PHP-Funktion, da man MySQL "sagen" kann, wie man das Datum haben möchte. Dazu schau mal hier vorbei: http://www.mysql.com/doc/en/Date_and...s.html#IDX1333
Auch einen Unixtimestamp kann man direkt aus dem Feld abfragen: http://www.mysql.com/doc/en/Date_and...s.html#IDX1346
Gruss
Jan
PS: Falls du jetzt Probleme hast, dein Varchar-Feld mit Produktiv-Daten in ein datetime-feld umzuwandeln, sag bescheid. Auf keinen Fall mit Produktivdaten testen, da die Felder mit hoher Sicherheit zerstört werden.
|
|
|
02.10.2003, 11:43
|
#4
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
na da schau her, da tun sich ja neue wissens-welten für mich auf
thx jan - toller tipp!
|
|
|
02.10.2003, 11:45
|
#5
|
|
TP-Member
Registriert seit: Sep 2003
Ort: NRW - Moers
|
k ich werde das nachdem ich noch ein par bäume gefällt habe ausprobieren...
also ich mache 2 datenfelder vom type time und date
beide kann ich mit now() ermitteln.
und der $sql wie sähe der aus?
ORDER BY datum -> dann habe ich nur nach datum und nicht nach uhrzeit...
oder kann man auch beides machen?
@mojo k vielen danke für dein angebot, aber das forum ist noch in der testphase also egal wegen datenverlust...
__________________
I wasted all my pretty years on you!
|
|
|
02.10.2003, 11:46
|
#6
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
wieso 2 Felder??? DATETIME ist das Feld, das du brauchst!
|
|
|
02.10.2003, 11:48
|
#7
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
also, ich hoff ich liege jetzt richtig, aber das müsste dann beispielsweise so aussehen:
PHP-Code:
$sql = mysql_query("SELECT DATE_FORMAT('datumsfeld','%d %M %Y') FROM tabelle ORDER BY datumsfeld DESC");
oder?? ich denke, so sollte das funktionieren...
|
|
|
02.10.2003, 11:51
|
#8
|
|
TP-Member
Registriert seit: Sep 2003
Ort: NRW - Moers
|
jetzt leuchtet mir einiges ein...
__________________
I wasted all my pretty years on you!
|
|
|
02.10.2003, 11:53
|
#9
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
das würde nicht funktionieren, da du als Datum einen String übergibst und keine Feldbezeichnung. Entweder die single-quotes weg (') oder durch Ticks ersetzen (`). Mit DATE_FORMAT(...) AS juhu kannst du einen Alias benutzen, unter dem das "Feld" dann im Resultset zu finden ist.
|
|
|
02.10.2003, 11:56
|
#10
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
ok, aber folgendes müsste dann stimmen?
PHP-Code:
$sql = mysql_query("SELECT DATE_FORMAT(datumsfeld,'%d %M %Y') FROM tabelle ORDER BY datumsfeld DESC");
|
|
|
02.10.2003, 12:00
|
#11
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
jap...wobei so wäre fürs Auswerten besser, es sei denn man fragt wirklich nur dieses eine Feld ab:
PHP-Code:
$sql = mysql_query("SELECT DATE_FORMAT(datumsfeld,'%d %M %Y') AS datum FROM tabelle ORDER BY datumsfeld DESC");
$r = mysql_fetch_assoc($sql);
echo $r['datum'];
|
|
|
02.10.2003, 12:03
|
#12
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
so, danke vielmals - hat mir echt viel gebracht
@donjure: sorry für's "dazwischen-reden" *lol* 
|
|
|
02.10.2003, 12:06
|
#13
|
|
TP-Member
Registriert seit: Sep 2003
Ort: NRW - Moers
|
np
bin genauso interessiert an den antworten...
__________________
I wasted all my pretty years on you!
|
|
|
02.10.2003, 12:09
|
#14
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
noch eine kurze zusatzfrage hätte ich, jan
annahme: tabelle mit folgenden feldern:
- id, int, not_null, auto_incr
- vorname, varchar(50)
- nachname, varchar(50)
bisher hab ich db-ausgaben immer so gelöst:
PHP-Code:
$abfrage = mysql_query("SELECT * FROM tabelle ORDER BY nachname, vorname ASC");
while ($ausgabe = mysql_fetch_object($abfrage)) {
$vorname = $ausgabe->vorname;
$nachname = $ausgabe->nachname;
echo "$nachname $vorname <br />";
}
mittels array sollte da ja eine sinnvoller lösung möglich sein (vor allem, wenn man viele felder ansprechen und ausgeben muss) - oder??
würde das so funktionieren?:
PHP-Code:
$abfrage = mysql_query("SELECT * FROM tabelle ORDER BY nachname, vorname ASC");
while($r = mysql_fetch_assoc($sql)) {
echo "$r['nachname'] $r['vorname']";
}
so, jetzt frag ich mich grad: warum probier ich das eigentlich nicht aus??
ich mach schon....
EDIT
ich seh schon (nach kurzem testen) kleinere probleme - versuch die mal zu lösen
Geändert von prefix (02.10.2003 um 12:11 Uhr).
|
|
|
02.10.2003, 12:14
|
#15
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
perfekt, das geht ja echt so
PHP-Code:
$abfrage = mysql_query("SELECT * FROM user ORDER BY nachname ASC");
while($r = mysql_fetch_assoc($abfrage)) {
echo $r['nachname']." ".$r['vorname']."<br />";
}
also jetzt erspar ich mir viel viel tippserei - thx!
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:35 Uhr.
|
 |