SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 24.02.2003, 18:21:11
chuck chuck ist offline
Anfänger
 
Registriert seit: May 2002
Ort: bremen
Beiträge: 27
datum sortiert ausgeben

hallo leute,
finde keine hilfe im internet, deswegen poste ich jetzt hier.

ich moechte bei eingabe eines deuschen datums in ein textfeld (in eine mysql datenbank) zb 22.02.2003 und 23.01.2003, immer das juengste datum zuerst ausgelesen bekommen.

leider wird immer zuerst der tag beruecksichtigt und nicht der monat. das einzige was mir einfiel, ist es mit den amerikanischen angaben zu versuchen, waere zwar viel arbeit, aber koennte, glaube ich, funktionieren.

weiss jemand eine schnellere loesung, oder muss ich ich alle daten wandeln, den zumindest bei der ausgabe sollen die deutschen angaben erscheinen.

vielen dank im voraus

chuck
Mit Zitat antworten
  #2  
Alt 24.02.2003, 18:34:08
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
So, bitte schön.

PHP-Code:
<?php
 $dates
=array("20.1.2002","18.10.1982","14.12.1996","19.04.1992");

 
$i=0; while ($i<count($dates))
  {
   
$temp=explode("."$dates[$i]);
   
$dates_new[$i]=array($temp[2].$temp[1].$temp[0], $dates[$i]);
   
$i++;
  }

// vorwaerts
 
sort($dates_new);
// rueckwaerts
// rsort($dates_new);

 
$i=0; while ($i<count($dates_new))
  {
   
$dates[$i]=$dates_new[$i][1];
   
$i++;
  }

 echo 
join("<br>"$dates);
 exit;
?>
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 25.02.2003, 09:37:33
chuck chuck ist offline
Anfänger
 
Registriert seit: May 2002
Ort: bremen
Beiträge: 27
moin,

ist in der tat unverstaendlich.

hilft, glaube ich, auch nicht wirklich weiter, da die daten ja staendig aktualisiert werden. dann muesste ich die arrays schon mit variablen versehen. dazu fehlt mir noch das verstaendnis

es geht ja eigentlich nur darum, wie kann ich ein in nach deutschen konventionen eingetragenes datum in der richtigen reihenfolge wieder ausgeben. wenn ich nach id sortiert ausgeben lasse, kann ich ja kein datum nachtragen.

ich koennte ja auch 02.23.2003 und 02.22.2003 eingeben. dann gibt er mir zumindest nach monaten sortiert die richtige reihenfolge aus. nur beim tag beachtet er die reihenfolge nicht.

werde es mal anders versuchen, ansonsten gehts eben nicht. shit happens all the time.

danke fuer die muehe

chuck
Mit Zitat antworten
  #4  
Alt 25.02.2003, 10:04:22
Greg G Greg G ist offline
Anfänger
 
Registriert seit: Feb 2003
Ort: Hessen
Beiträge: 116
Stehen die Daten im deutschen Format in einem Textfeld in der Datenbank, und ist auch gesichert, dass sie nur im Format tt.mm.jjjj vorkommen (also mit führenden Nullen).

Dann kannst du auch einfach in der SQL-Abfrage ein
order by right(Datum,4), substr(Datum,4,2), left(Datum,2)
benutzen.

Ich würde dir aber empfehlen, die Daten in MySQL-eigenen Datumsfeldern abzulegen. Dann sortiert sich's praktisch von selbst und du hast Funktionen wie month(Datum) usw. zur Verfügung.

Für die deutsche Ausgabe könntest du dann sogar direkt die Abfrage benutzen:
select concat(day(datum), ".", month(datum), ".", year(datum)) as DeutschesDatum from ...

Schau auch mal bei
http://www.mysql.com/documentation/m...e_calculations
rein.

GG
Mit Zitat antworten
  #5  
Alt 25.02.2003, 14:09:39
chuck chuck ist offline
Anfänger
 
Registriert seit: May 2002
Ort: bremen
Beiträge: 27
thanx,

habs jetzt hinbekommen mit

substr.

habe jetzt lediglich bei der eingabe drauf zu achten, das ich es auf amerikanisch eingebe, zb 2003-02-25.

viele gruesse an alle helfer

chuck
Mit Zitat antworten
  #6  
Alt 25.02.2003, 14:21:13
Ben20
Guest
 
Beiträge: n/a
mit

$arr = explode(".", "22.02.2003");

hast Du die Datumswerte gleich in einem $array drin und kannst Dir sparen mit substr rum zu wurschteln. Außerdem kannst Du dann auch noch prüfen ob das Datum (einigermaßen) richtig eingegeben wurde.

if(strlen($arr[2]) < 4) {

echo "Das Jahr hat weniger als 4 Ziffern! Evtl falsch rum eingegeben?"

}

Das läßt sich natürlich noch verfeinern!
Mit Zitat antworten
  #7  
Alt 25.02.2003, 19:05:34
chuck chuck ist offline
Anfänger
 
Registriert seit: May 2002
Ort: bremen
Beiträge: 27
danke fuer den tipp,

ich kann leider noch nicht die vorteile des arrays sehen. bin halt noch ein total beginner.

bei mir laeuft es jetzt soweit, von daher bin ich erst einmal zufrieden.

viele gruesse

chuck
Mit Zitat antworten
  #8  
Alt 25.02.2003, 20:54:41
Ben20
Guest
 
Beiträge: n/a
Der Vorteil ist, dass Du die einzelnen Werte (mehr oder minder) sicher bekommst!

Z.B. das Datum ist so:

22-02-2003

Mit explode("-", $datum);

Hast Du die Werte 22, 02 und 2003!

Mit der substr Method kann's Dir passieren
dass Du

22-0, 2-, 003

als Werte bekommst!
Mit Zitat antworten
  #9  
Alt 26.02.2003, 08:49:31
chuck chuck ist offline
Anfänger
 
Registriert seit: May 2002
Ort: bremen
Beiträge: 27
moin ben,

wenn ich das datum nicht streng nach us standard eintrage bekomme ich bloedsinn, das ist richtig.

kann ich denn bei der arbeit mit arrays in ein textfeld nach dt. konventionen eingeben und dann mit explode arbeiten. das ware ja sinnvoll. jetzt habe ich ja ein date feld in der datenbank.

by the way, was bedeutet mehr oder weniger.
Mit Zitat antworten
  #10  
Alt 26.02.2003, 09:19:54
Ben20
Guest
 
Beiträge: n/a
Klar kannst (das geht aber auch mit substr) Du das Datum deutsch eingeben und englischen Speichern


Eingabe:

22.02.2003


Umwandlung:

$arr = explode(".", $eingabe);

Eingabe in DB:

INSERT INTO tabelle VALUES('', 'irgendeinWert', '$arr[2]-$arr[1]-$arr[0]')


Schon trägt PHP die Daten richtig rum in die DB und Du kannst Sie auch richtig rum eingeben!


Aber wie gesagt, dass geht auch mit substr(). Du hast ja dann drei Vars die Du entsprechend einfügen kannst. Der wahre Vorteil des $arr liegt halt daran, dass Du das Datum einfacher zerlegen kannst (und besser prüfen).
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:23:55 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt