Sortieren von Datumsanzeigen

rernanded

Erfahrenes Mitglied
Hallo,

brauche unbedingt einen Tipp wie ich Datumsanzeigen wie

31.1.2012
1.2.2008
11.9.2010

sortieren kann und zwar a) DESC und b) ASC. Das Feld in dem die Daten stehen lautet übrigens "datum".

MONI
 
Du brauchst sie nicht nach Timestamp konvertieren du kannst einfach
Code:
SELECT * FROM `table` ORDER BY `datum` ASC
oder
Code:
SELECT * FROM `table` ORDER BY `datum` DESC
benutzen.
 
Nur wenn das Feld auch vom Typ Datum ist. Ansonsten muss man zuerst konvertieren.
Also rernanded, was ist in der DB der Feldtyp?
 
Nur wenn das Feld auch vom Typ Datum ist. Ansonsten muss man zuerst konvertieren.
Also rernanded, was ist in der DB der Feldtyp?

Das ist korrekt yaslaw, das geht natürlich nicht.
Der Feldtyp ist nämlich varchar(10). Das kann ich auch nicht ändern, weil ich die Daten übernommen habe.

Habe mit mktime() bereits was versucht
PHP:
$datumkonvertiert = mktime($datum);
echo $datumkonvertiert;
Funktioniert auch aber ich muß jetzt die Ausgabe sortieren(wie?) was ich eigentlich gerne mit
PHP:
$sql="SELECT ... ORDER BY datum DESC";
gemacht hätte.


Und ich hab noch ein anderes Problem:
Ich will die Zeichen jeweils als img wiedergeben also wie folgt:

12.3.2012 - > Für die 1 eine Grafik, für die 2, für die 3 usw. Ich hätte also hier 3 versch. Grafiken.
Bei 7.9.2004 vier und bei 28.12.1975 sechs Grafiken. Wahrscheinlich gehts mit substr()?


MONI
 
Zuletzt bearbeitet:
mit STR_TO_DATE dein String zuerst in ein Datum wandeln...
SQL:
SELECT 
    STR_TO_DATE(t.datum, '%e.%c.%Y') AS dataum_as_date
    t.*
FROM 
    mytable AS t
ORDER BY 
    STR_TO_DATE(t.datum, '%e.%c.%Y')


Nachtrag:
Das Splitten für die Grafiken. Du brauchst auch für den Punkt etc. eine Grafik
PHP:
$date = '12.3.2012';
//String in einen Array wandeln
$parts = str_split($date);
//und dann jedes Zeichen ausgeben
foreach($parts as $part){
    echo "<img src='mypath\{$part}.jpeg' title='{$part}'>";
}
 
Zuletzt bearbeitet von einem Moderator:
PHP:
$date = '12.3.2012';
//String in einen Array wandeln
$parts = str_split($date);
//und dann jedes Zeichen ausgeben
foreach($parts as $part){
    echo "<img src='mypath\{$part}.jpeg' title='{$part}'>";
}

Danke yaslaw, die Sache mit dem Datum klappt.
Bei der 2. Geschichte habe ich noch Probleme, gib doch mal bitte an wie der Pfad genau lautet wenn meine Grafik auf http://www.beispiel.de/grafiken/grafikfuer1.png für die Zahl 1 liegt und was mache ich mit http://www.beispiel.de/grafiken/grafikfuer2.png für die 2?

MONI
 
PHP:
$date = '12.3.2012';
//String in einen Array wandeln
$parts = str_split($date);
//und dann jedes Zeichen ausgeben
foreach($parts as $part){
    echo "<img src='http://www.beispiel.de/grafiken/grafikfuer{$part}.png'>";
}

Für den Punkt( . ) musst du dir aber was anderes ausdenken. Punkte im Dateinamen sind nämlich nicht erlaubtt. (Beispielsweise vorher Punkte durch Bindestriche austauschen und dann in http://www.beispiel.de/grafiken/grafikfuer-.png den Punkt speichern.
 
PHP:
$date = '12.3.2012';
//String in einen Array wandeln
$parts = str_split($date);
//und dann jedes Zeichen ausgeben
foreach($parts as $part){
    echo "<img src='http://www.beispiel.de/grafiken/grafikfuer{$part}.png'>";
}

Für den Punkt( . ) musst du dir aber was anderes ausdenken. Punkte im Dateinamen sind nämlich nicht erlaubtt. (Beispielsweise vorher Punkte durch Bindestriche austauschen und dann in http://www.beispiel.de/grafiken/grafikfuer-.png den Punkt speichern.

Vielen Dank auch nochmals an yaslaw, alles klappt prima. Was mach ich denn wenn ich nur einige ausgewählte Zeichen als Bild wiedergeben will?

Also nur die 4 und die 2 aus 31.11.2004? Oder aus 31-11-2004 oder aus 31/11/2004 und wenn auch Sonderzeichen drin wären?

MONI
 
Eine der vielen Möglichkeiten: Die vorhandenen Bilder vordefinieren
PHP:
<?php 
$date = '12.3.2012';
//Vorhandene Grafiken definieren
$pictures['2'] = 'grafikfuer2.png';
$pictures['4'] = 'grafikfuer4.png';
//String in einen Array wandeln

$parts = str_split($date);
//und dann jedes Zeichen ausgeben


foreach($parts as $part){
    //Prüfen ob ein Bild existiert
    if(array_key_exists($part, $pictures)){
        echo "<img src='mypath\{$pictures[$part]}' title='{$part}'>";
    }else{
        echo $part;
    }
}
?>
 
Zurück