Frage zur Datumssortierung

istmiregal

Mitglied
Hallo Leute,

Mal wieder eine von diesen unzähligen Datums Fragen ;)
Habe mir, dank des Forums so eine Art Termin-Vorschauseite zusammen gebastelt. Diese Seite soll auch nur für ein Laufendes Jahr aktuell sein (also vom 01.01. bis zum 31.12). Die Daten dazu habe ich in einer mysql-Datenbank. ('id' 'datum' 'zeit' 'was' 'wie_wo') Diese Datensätze werden auch richtig ausgegeben.
Hier mal mein script:
PHP:
<?PHP
  $query = "SELECT 
                DATE_FORMAT(`datum`, '%d.%m.%Y') AS `datum`,
                `zeit`,
                `was`,
                `wo_wie`
                 
          FROM
                `spzg_kalender`

    
  ";
  $sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());
  
  while ($conn_id = mysql_fetch_object($sql)){
    
    $datum = $conn_id -> datum;
    $zeit = $conn_id -> zeit;
    $was = $conn_id -> was;
    $wo_wie = $conn_id -> wo_wie;
    
    echo "<b>$datum <br> $zeit:<br> $was - $wo_wie <br>";
    
    
    }
    
   ?>
So jetzt meine frage:

Kann ich das Script so umbauen das die Sätze aufgeteilt ausgelesen werden?
so z.B.:
Heute ist der 09.09.
nächster Termin
'datum.' um 'zeit' Uhr 'was' #wo_wie'
03.10 um 10 Uhr Versammlung Vereinsheim
(usw bis zum 31.12)
Zurückliegendes:
08.02. um 19 Uhr Karneval Vereinsheim
(usw bis gestern)

Habe da leider nicht der Richtigen Ansatz zu gefunden bzw habe ich den Übersehen. Vielleicht habt ihr ja eine Idee dazu, schon mal Danke für Eure tipps.
 
Hallo nochmal,

schade das keiner eine Idee hat wie ich das machen könnte :mad:

hatte mir aber schon überlegt, falls das nicht gehen sollte, ob ich mir die Datensätze nicht für einen oder zwei Monate ausgeben lasse. Und die Seite dann alle paar Monate von Hand umstelle....
bin dann mal wieder am :google:n, wie ich das anstellen könnte.

Falls noch jemand eine Idee hat, ich bin für jeden Gedanken offen ;)

Mfg
istmiregal

(der für jeden Tipp dankbar ist.)
 
Mmh, bin mir nicht ganz sicher, ob ich dich richtig verstanden habe. Aber du könntest doch einfach mehrere Abfragen machen. D.h. eine mit zurückliegenden Events (<jetzt) und eventuell eine mit (>jetzt) für zukünftige Events.
 
Hallo mammuteffect,

Danke schon mal für deine Antwort.
Ich glaube du hast mich richtig verstanden. Ich wollte auf der Termin-Seite eine Übersicht haben die aufgeteilt ist in:
noch anstehende Termine und
erledigte Termine.
Diese Unterteilung sollte, wenn möglich, mit dem Datum sortiert ausgegeben werden.
Leider habe ich dazu nicht den richtigen Ansatz unter den tutorials bzw hier im Forum gefunden.
Da ich mir, das ganze (ich sage jetzt mal) Programmieren/Designen, versuch selber beizubringen, bin ich schon mal über deine Tipps mit mit der if-Schleife und <jetzt bzw >jetzt dankbar.
Werde mal versuchen ob in dem Zusammenhang mit der Datums-Sortierung etwas finde. Oder weißt du vielleicht wo ich suchen sollte.

Danke und Gruß
 
du könntest es z.b. so lösen:
PHP:
$erledigte_termine = "";
$offene_termine = "";
while($conn_id = mysql_fetch_object($sql)){ 
    $now = date("%d.%m.%Y",time());
    if($conn_id->datum < $now)
       $erledigte_termine = "<b>".$conn_id->datum." <br> ".$conn_id->zeit.":<br> ".$conn_id->was." - ".$conn_id->wo_wie." <br>"; 
    else
       $offene_termine = "<b>".$conn_id->datum." <br> ".$conn_id->zeit.":<br> ".$conn_id->was." - ".$conn_id->wo_wie." <br>"; 
}
echo "Erledigte Termine :<br /> $erledigte_termine <br /> <br />Offene Termine: <br /> $offene_termine";
Wenn du es genauer haben willst solltest du auch stunden und minuten speichern usw.
 
Danke enne für deine Antwort,

Ich habe dein Script ausprobiert und jetzt habe dazu noch Fragen:

In der Test-Datenbank stehen fünf Einträge und es wird jetzt nur der letzte Eintrag angezeigt. Er wird aber schon richtig ausgegeben.

Bezieht sich die Schleife in deine Script nur auf einen Datensatz und gibt diesen dann aus oder bearbeitet er die ganze DB?
Oder muss ich etwas in der $query ändern?
hier die verwendete query:
PHP:
$query = "SELECT 
                DATE_FORMAT(`datum`, '%d.%m.%Y') AS `datum`,
                `zeit`,
                `was`,
                `wo_wie`
                 
          FROM
                `spzg_kalender` ";

     $sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());

danke schon mal für deine Hilfe!
 
Hi,

das liegt daran, dass die Variablen in der Schleife jeweils überschrieben werden. Richtig wäre es so:

PHP:
$erledigte_termine .= ...
$offene_termine .= ...

Zum Nachlesen: String-Operatoren

Wenn Du sortieren willst, warum fehlt in Deiner Abfrage dann die ORDER BY-Klausel?

LG
 
Hallo,

das liegt daran, dass die Variablen in der Schleife jeweils überschrieben werden. Richtig wäre es so:

PHP-Code:
$erledigte_termine .= ...
$offene_termine .= ...
Zum Nachlesen: String-Operatoren

Wenn Du sortieren willst, warum fehlt in Deiner Abfrage dann die ORDER BY-Klausel?
Alles Klar, habe es verstanden, dass wenn nur das = steht gibt er mir nur den einen Wert und wenn .= steht gibt er mir alle werte. *freu* schon wieder etwas dazu gelehrt.

Habe ich auch in meinem Script geändert und es werden mir jetzt alle Einträge unter offene Termine angezeigt, auch die schon gewesenen.
wenn ich das Script jetzt ändere in:
PHP:
if($conn_id->datum < $now)
               $erledigte_termine .= "<b>".$conn_id->datum." <br> ".$conn_id->zeit.":<br> ".$conn_id->was." - ".$conn_id->wo_wie." <br>"; 
            else($conn_id->datum < $now)
               $offene_termine .= "<b>".$conn_id->datum." <br> ".$conn_id->zeit.":<br> ".$conn_id->was." - ".$conn_id->wo_wie." <br>"; 
        }
gibt er mir eine Fehlermeldung:
Code:
Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\WEB_SPZ\verein\termine08.php on line 33
wobei die line 33 die else(... ist. Ändere ich diese um in
PHP:
if($conn_id->datum > $now)
kommt auch wieder das gleiche Ergebniss das alle Einträge unter offene stehen und keine unter erledigte.

Wenn ich das jetzt richtig deute liegt der Fehler jetzt noch in der Sortierung.
Egal ob ich jetzt
Code:
datum < $now
oder
Code:
datum > $now
schreibe, legt das Script alle Einträge ab, anstatt nur die Einträge bis $now bzw ab $now zu sortieren. Oder bin ich jetzt total falsch abgebogen

Gruß und danke für Eure Geduld
Uwe
 
Zuletzt bearbeitet:
ach ja, habe vergessen zu erwähnen das wenn ich ORDER BY `datum` schreibe das Datum wieder nach den Tagen sortiert wird, deshalb habe ich das weggelassen.

Gruß
 
Zurück