![]() |
PHP Date Funktion
Hallo Zusammen,
folgende Frage: Ich lasse per PHP Funktion die nächsten x Tage ausgeben (Hier im Beispiel 6). Jetzt soll zusätzlich dazu eine abfrage gemacht werden, die folgendes macht: Gebe zu jedem ermittelten Tag, alle Datensätze aus Tabelle yx aus, wo das Feld 'datum' dem ermittelten Datum entspricht. Die ermittelten Datensäte sollen dann unter das Datum geschrieben werden. Beispiel: 29.10.2009 Datensatz1 Datensatz8898 30.10.2009 Datensatz98 31.10.2009 Datensatz675 01.10.2009 Datensatz12 Datensatz76 02.10.2009 Datensatz1232 03.10.2009 (hier ist mal kein Datensatz, auch das muss gehen. Es soll dann einfach leer bleiben!)
Code:
<?php
$heute = time(); echo 'Die nächsten 6 Tage: '; for($i=0; $i<6; $i++) { echo '<li class="group">' .date('d.m.Y',mktime(0,0,0, date('m',$heute), date('d',$heute)+$i, date('Y',$heute))).''; } ?> |
Re: PHP Date Funktion
Was meinst Du denn mit Datensatz? Geht es hier um MySQL?
|
Re: PHP Date Funktion
Und wo ist jetzt das Problem?
Btw.: Ich ätte es ja so in etwa gemacht:
Code:
date('d.m.Y', time() + $i * 3600 * 24);
|
Re: PHP Date Funktion
ups! Sry das habe ich ganz vergessen zu erwähnen, Im Eifer des Gefechts!
JA es geht um MySql! |
Re: PHP Date Funktion
Dann ist das aber die falsche Sparte. Du brauchst also eine Abfrage der Datensätze der nächsten 6 Tage, hab ich das richtig verstanden? Mal aus dem Hut:
SQL-Code:
SELECT <Feldliste>
FROM Tabelle WHERE Datumsfeld BETWEEN DATE_ADD(CURRENT_DATE,INTERVAL 1 DAY) AND DATE_ADD(CURRENT_DATE, INTERVAL 6 DAY) |
Re: PHP Date Funktion
okay, dass schaut gut aus!
Aber wie kann ich es jetzt grupieren so wie in meinem Beispiel? Hast du eine Idee? |
Re: PHP Date Funktion
Gruppierung ohne Aggregatfunktion macht ja keinen wirklichen Sinn (obwohl MySQL das IIRC sogar unterstützt). Ich würde das wahrscheinlich eher auf der PHP-Seite lösen.
|
Re: PHP Date Funktion
kannst du mir da mal ein beispiel zeigen? Bitte!
|
Re: PHP Date Funktion
Lieber nicht, meine PHP-Kenntnisse sind einfach zu eingerostet. Aber Du musst doch lediglich das morgige Datum ermitteln und mit dem Datum aus der DB vergleichen. Wenn sich das DB-Datum ändert, setzt Du Dein gemerktes Datum auf das DB-Datum und gibst es aus. Dabei können zwar noch Lücken entstehen, aber das sollte ja auch keine große Sache sein, dann zählst Du das Datum halt so lange hoch und gibst es aus, bis es dem aus der DB entspricht. Für diese Vorgehensweise ist allerdings eine Sortierung in der Abfrage nötig, die ich oben vergessen habe.
[edit] Einfachere, aber unschöne Variante: Per PHP das Datum ermitteln und je Tag eine Abfrage absetzen. Aber das würde ich nur dann tun, wenn alles andere versagt. [/edit] |
Re: PHP Date Funktion
so sieht der php code aus:
Die Daten werden erfolgreich und richtig berechnet. Nur steht noch nichts aus der DB drin! Habt Ihr eine IDEE??
Code:
<?php
$j = date('Y'); $m = date('m'); $d = date('d'); echo 'Die nächsten 6 Tage: '; for($i=0; $i<6; $i++) { echo '<li class="group">' .$morgen = date('d.m.Y',mktime(0,0,0,$m,$d+$i,$j)).'</div>'; $result = mysql_query("SELECT * FROM menue where datum = '$morgen'"); while($row = mysql_fetch_array($result)) { echo "[*]"; echo "<a href=\"menue.php?id=". $row['id'] ."\">". $row['name'] ."</a>"; echo ""; } } ?> |
Re: PHP Date Funktion
Ich denke, das Datumsformat der Abfrage stimmt nicht, das müsste 'Y-m-d' sein.
|
Re: PHP Date Funktion
danke für den tipp, der war schonmal nicht schlecht! Jetzt wird das Datum mit dem Echo genua so ausgegeben wie es in der DB steht.
Jedoch werden immer noch keine Daten gefunden. Hier nochmal der aktuelle Code: Ich habe das gerade mal mit PHP Edit debuggt. Das komische ist, er macht die for Schliefe ganz ordentlich bis per echo alle Datumsangaben ausgegeben sind aber er spring nicht einmal in die while schleife rein. WARUM??
Code:
<?php
$j = date('Y'); $m = date('m'); $d = date('d'); echo 'Die nächsten 6 Tage: '; for($i=0; $i<6; $i++) { echo '<li class="group">' .$morgen = date('Y.m.d',mktime(0,0,0,$m,$d+$i,$j)).'</div>'; $result = mysql_query("SELECT * FROM menue where datum = '$morgen'"); while($row = mysql_fetch_array($result)) { echo "[*]"; echo "<a href=\"menue.php?id=". $row['id'] ."\">". $row['name'] ."</a>"; echo ""; } } ?> |
Re: PHP Date Funktion
Lass Dir doch das erzeugte SQL einmal ausgeben und gib das dann in phpMyAdmin ein. Irgendetwas scheint ja immer noch nicht zu stimmen.
|
Re: PHP Date Funktion
das kommt raus:
Zitat:
|
Re: PHP Date Funktion
Ich meinte die generierte SQL-Abfrage. Was sagt das Script denn hierbei?
Code:
echo "SELECT * FROM menue where datum = '$morgen'";
|
Re: PHP Date Funktion
das kommt raus:
Ist doch eigentlich super oder? Zitat:
|
Re: PHP Date Funktion
Ersetz einmal die Punkte durch Striche. Und wo kommt der Zeilenumbruch her?
|
Re: PHP Date Funktion
der zeilenumbruch kommt vom debugger, ich habe es nochmal im normalen browser angesegen, da ist alles richtig.
ich glaube durch striche ersetzten ist falsch, ich habe extra mal in die db ein string geschrieben mit punkten der genau so das datum beinhaltet. ich habe die vermutung, dass irgendwas an dem php syntay falsch ist und er desswegen nicht in die while schleife springt! |
Re: PHP Date Funktion
Wieso nutzt Du nicht einfach die DATE_ADD-Funktion von MySQL, dann muss man sich um die korrekte Schreibweise doch keine Gedanken mehr machen?
Code:
for ($i = 1; $i < 7; $i++){
$result = mysql_query("SELECT * FROM menue where datum = DATE_ADD(CURRENT_DATE, INTERVAL $i DAY)"); ...} |
Re: PHP Date Funktion
JUUUHUUUU!
Das war der TIPP des Tages, einfach die MySql Funktion genommen und es geht. Jetzt geht er auch in die While Schleife und macht was er soll!! GEIL
Code:
<?php
$j = date('Y'); $m = date('m'); $d = date('d'); echo 'Die nächsten 6 Tage: '; for($i=0; $i<6; $i++) { echo '<li class="group">' .$morgen = date('d.m.Y',mktime(0,0,0,$m,$d+$i,$j)).'</div>'; $result = mysql_query("SELECT * FROM menue where datum = DATE_ADD(CURRENT_DATE, INTERVAL $i DAY)"); while($row = mysql_fetch_array($result)) { echo "[*]"; echo "<a href=\"menue.php?id=". $row['id'] ."\">". $row['name'] ."</a>"; echo ""; } } ?> |
Re: PHP Date Funktion
Jetzt aber noch eine Frage:
Jetzt werden mir ja immer die Datumswert angezeigt. Kann ich auch noch die Tage dazu ermitteln?? |
Re: PHP Date Funktion
Die Frage versteh ich nicht. Welche Tage meinst Du?
|
Re: PHP Date Funktion
Ich meinte den Name des Tages wie Montag, Dienstag usw.
So das hinter dem Datum von Heute Freitag steht! |
Re: PHP Date Funktion
Schau einmal hier:
![]() |
Re: PHP Date Funktion
aber mit der funktion kann ich doch nicht für ein berechnetes datum einen wochentag ermitteln... oder doch!?!?
|
Re: PHP Date Funktion
Versuch es doch einfach mit date() statt strftime(), IMO müsste das funktionieren.
|
Re: PHP Date Funktion
Ich habe es mal so gemacht, es stimmt aber noch nicht so recht...:
[code]<?php $j = date('Y'); $m = date('m'); $d = date('d'); echo 'Die nächsten 6 Tage: '; for($i=0; $i<6; $i++) { echo '<li class="group">' .$morgen = date('d.m.Y',mktime(0,0,0,$m,$d+$i,$j)).'</div>'; echo date('%A, %d. %B %Y', 1009926000); // Ausgabe: Wednesday, 02. January 2002 setlocale(LC_TIME, 'German_Germany'); echo strftime('%A, %d. %B %Y', 1009926000); // Ausgabe: Mittwoch, 02. Januar 2002 $result = mysql_query("SELECT * FROM menue where datum = DATE_ADD(CURRENT_DATE, INTERVAL $i DAY)"); while($row = mysql_fetch_array($result)) { echo "[*]"; echo "<a href=\"menue.php?id=". $row['id'] ."\">". $row['name'] ."</a>"; echo ""; } } ?> Und hier ist die Ausgabe: Zitat:
|
Re: PHP Date Funktion
Laut
![]()
Code:
Da noch den jeweiligen Tag dazuaddieren und es sollte passen.
echo date("l, d.m.Y");
|
Re: PHP Date Funktion
joa, sieht nicht schlecht aus. Aber wie soll ich denn den Tag dazu addieren?? Ich habe ja überall nur datumzahlen...
|
Re: PHP Date Funktion
Das hast Du doch bereits. Verstehst Du Deinen eigenen Code nicht?
Code:
echo '<li class="group">' .$morgen = date('l, d.m.Y',mktime(0,0,0,$m,$d+$i,$j)).'</div>';
|
Re: PHP Date Funktion
ja ich glaube wirklich, ich blick da nicht mehr so voll durch... :wink:
Jetzt geht es natürlich, nur ist der Tag noch auf Englisch, mal sehen wie ich es auf Deutsch umwandeln lassen kann...! |
Re: PHP Date Funktion
Das sollte doch mit einem vorherigen Aufruf von setlocale() gehen, stand zumindest in meinem ersten Link.
|
Re: PHP Date Funktion
joa das dachte ich auch!
aber wenn ich das hier aufrufe tut sich nichts:
Code:
setlocale(LC_TIME, 'German_Germany');
|
Re: PHP Date Funktion
Ist das denn ein Windows-Server?
|
Re: PHP Date Funktion
ja, ist eine xampp installation auf win xp!
|
Re: PHP Date Funktion
Ah, sry, das hatte ich überlesen:
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz