Datum vergleiche, Problem

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Datum vergleiche, Problem

      [COLOR="DarkOrange"][SIZE="2"]Hallo :3

      ich bin immoment dabei ne Homepage zu machen
      auf der unteranderem kommende veranstaltungen aus einer
      Mysql tabelle ausgelesen werden,
      diese nach Datum ordnet und prüft ob das jeweilige Datum
      in der vergangenheit liegt, oder nicht.
      Außerdem werden maximal 5 angezeigt.

      Und da kommt mein Problem
      wen ich mehr als 5 Einträge die in der
      Zukunft liegen, in der Tabelle hab, zeigt er nicht die Daten
      die am nächsten an dem heutigen Tag liegen,
      sodern die am weitesten entfehrnt sind... (hoffe ihr versteht
      was ich meine xD)

      Hier mal mein momentaner Code:

      PHP-Quellcode

      1. <?php
      2. $date = date("Y-m-d");
      3. $connectionid = mysql_connect ($host, $user, $pass);
      4. if (!mysql_select_db ($db, $connectionid))
      5. {
      6. die ("Keine Verbindung");
      7. }
      8. $sql="SELECT * FROM `veranstaltungen` ORDER BY `Datum` DESC LIMIT 0,5";
      9. $result=mysql_query($sql);
      10. while ($zeile=mysql_fetch_array($result))
      11. {
      12. If ($zeile["Datum"] >= $date)
      13. {
      14. echo ''.$zeile["Datum"].'&nbsp;&nbsp;&nbsp;'.$zeile["Text"].'<br>';
      15. }
      16. }
      17. ?>
      Alles anzeigen


      Hoffe ihr könnt mir helfen :>

      MfG
      BizZi
      [/SIZE][/COLOR]
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Für mySQL und Datum reicht ein einfaches Varcharfeld, das so 20 Zeichen aufnimmt.
      Dann machste

      PHP-Quellcode

      1. date("d.m.Y H:i");

      somit bekommst du das Datum im Format wie dieses hier:
      24.06.2010 11:32
      So das speicherste in der DB.
      Und dein Problem liegt am auslesen.
      Du suchst dir einfach nur alle Datensätze aus der DB und lässt die ordnen.
      So und dank dem Datum DESC ordnet der die so, dass das größte Datum oben is oder so.
      Und wenn das grad der am weitesten entfernte Datensatz ist, so wird der den auch ausgeben, da der die der Reihe nach ausgibt und zwar so wie der die entsprechend deinen Kriterien aus der DB holt.
      Habe auch mal ein Newsscript gebastelt, das holt immer die neusten 5-10 Artikel und zeigt das neuste oben an und so.
      Wie du es eben gemacht hast.
      Sinnvoller bei dir wäre es, wenn du ne for-Schleife entsprechend deiner Vorstellung hast und dir dann eben das Datum selbst zusammenbastelst.
      zB so:

      PHP-Quellcode

      1. $tag = date("d");
      2. $restdatum = "." . date("m.Y");
      3. for ($i = 0; i < 5; i++)
      4. {
      5. $datum = $tag . $restdatum;
      6. $Query = "SELECT Datum,Text FROM $db WHERE datum = 'datum' "
      7. mysql_query($Query);
      8. ...
      9. //nich vergessen folgende Codezeile einzubringen
      10. $tag++;
      11. /*Man könnte auch $i als Tag missbrauchen is aber weniger sinnvoll, ausser du nutzt die variable $tag mit dem Datum als zähler*/
      Alles anzeigen

      So ists für dich sicher sinnvoller und dürfte dein Ergbenis bringen was du dir wünscht, egal wie viele Daten in der Zukunft liegen.
      Solange das Datum stimmt, passt es schon, musst das Script für dich halt anpassen, es können auch Fehler drin sein, weiß es jetzt nicht da ichs ncih testen konnte.

      Hoffe es hilft[/SIZE][/COLOR][/FONT]
    • [COLOR="DarkOrange"][SIZE="2"]@internetfreak
      anscheind stimmt iw mit der for schleife net X:
      bin noch n ziemlicher newbi was php angeht :>
      hab noch nie mit for schleifen iw gemacht...
      hier ma der error

      Parse error: syntax error, unexpected T_INC, expecting ')' in E:\...\veranstaltungen.php on line 17


      internetfreak;148437 schrieb:

      [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Für mySQL und Datum reicht ein einfaches Varcharfeld, das so 20 Zeichen aufnimmt.
      Dann machste

      PHP-Quellcode

      1. date("d.m.Y H:i");

      somit bekommst du das Datum im Format wie dieses hier:
      24.06.2010 11:32
      So das speicherste in der DB.
      Und dein Problem liegt am auslesen.
      Du suchst dir einfach nur alle Datensätze aus der DB und lässt die ordnen.
      [/SIZE][/COLOR][/FONT]


      wenn ich das so mach, dann ordnet er die daten aber nicht mehr nach dem datum, sondern nur
      nach der ersten Zahl, sprich dem Tag :X
      deswegen muss es ja in dem format Y-M-D sein, oder nich?

      @felix
      is im prinzip das gleiche bloß das er
      die daten halt andersrum anordnet :X
      wen nu n datum dazwischen is was in der vergangenheit liegt
      zählt er das zu den 5 mit X:
      [/SIZE][/COLOR]
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Sagte ja varchar mit etwa 20 Zeichen fürs Datum, dann kannste den Datumsstring beliebig formatieren.
      Und nach dem Datum ordnen is doch kein Problem, der Code der for-schleife enthält soweit alles, musst eig nurnoch ausgeben nach dem Query und sonst vll bissl anpassen wenn was nich ganz stimmen sollte.

      Zur for-Schleife, da hab ich ein Zeichen vergessen.
      Nach meinem letzten Kommentar noch ein

      Quellcode

      1. }
      hin.
      Dann klappts, habe den Funktionsrumpf vergessen abzuschliessen xD
      PHP Fehlermeldungen sind meist eh so komisch, da sie nich immer die richtigen Infos haben, zB Zeilennummmer.
      Die Zeilennummer die enthalten is, die bezieht immer auf das wo der Fehler auftritt, aber der liegt meist obendrüber und dann musste suchen xD[/SIZE][/COLOR][/FONT]
    • [COLOR="DarkOrange"][SIZE="2"]das is ja das komische
      die hab ich gesetzt :o

      PHP-Quellcode

      1. <?php
      2. $tag = date("d");
      3. $restdatum = "." . date("m.Y");
      4. $connectionid = mysql_connect ($host, $user, $pass);
      5. if (!mysql_select_db ($db, $connectionid))
      6. {
      7. die ("Keine Verbindung zur Datenbank");
      8. }
      9. for ($i = 0; i < 5; i++)
      10. {
      11. $datum = $tag . $restdatum;
      12. $Query = "SELECT Datum,Text FROM $db WHERE datum = 'datum' "
      13. $result = mysql_query($Query);
      14. echo ''.$result.'&nbsp;&nbsp;&nbsp;'.'nix'.'<br>';
      15. $tag++;
      16. }
      17. ?>
      Alles anzeigen


      hab ich was falsch gemacht? :X
      [/SIZE][/COLOR]
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Ich würde mal speziell noch sagen du ersetzt das $db durch deine Table^^
      Denn anders wird der kein result finden und gibt eben nix aus.
      Ausserdem musste mal noch

      Quellcode

      1. mysql_fetch_array($result);
      machen damit der das Result überhaupt findet was du wolltest.
      Sagte doch, das Script muss auf deine Bedürfnisse angepasst werden^^
      Und das Datumsformat muss stimmen, ansonsten im date() Aufruf ändern
      [/SIZE][/COLOR][/FONT]
    • [COLOR="DarkOrange"][SIZE="2"]ups :O
      hab ich total übersehen... xD
      is aber immer noch das gleiche resultat

      PHP-Quellcode

      1. <?php
      2. $date = date("Y-m-d");
      3. $tag = date("d");
      4. $restdatum = "." . date("m.Y");
      5. $connectionid = mysql_connect ($host, $user, $pass);
      6. if (!mysql_select_db ($db, $connectionid))
      7. {
      8. die ("Keine Verbindung zur Datenbank");
      9. }
      10. for ($i = 0; i < 5; i++)
      11. {
      12. $datum = $tag . $restdatum;
      13. $Query = "SELECT Datum, Text FROM veranstaltungen WHERE datum = 'datum' "
      14. $result = mysql_query($Query);
      15. $zeile = mysql_fetch_array($result);
      16. echo ''.$zeile["Datum"].'&nbsp;&nbsp;&nbsp;'.'nix'.'<br>';
      17. $tag++;
      18. }
      19. ?>
      Alles anzeigen


      habs so geändert wie du es gesagt hast :o
      der fehler bleibt aber, scheint wirklich
      als wen n fehler in der for schleife wäre... >.<
      die errors von php sind echt sowas von unnütz ...
      [/SIZE][/COLOR]
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]@yannik
      Date berechnet das Datum auch aus dem UNIX Timestamp.
      Er hat wohl einfach wie immer das Datumsformat nicht angepasst und daher nix von php bekommen.
      Ausserdem @Bizzi
      Du hast nichmal die Variable $datum genutzt, du hast nur nach dem String datum gexucht in der DB, kein Wunder dass kein Query funzt.

      [/SIZE][/COLOR][/FONT]
    • Aber ihr müsst bedenken das DATE nicht unendlich geht. Im gegensatz zum Unix-Timestamp. Desweiteren ist man durch den Timestamp bei weitem flexibler was die Ausgabe betrifft. Du kannst dir dadurch das Datum in jeglicher Form ausgeben lassen, die du möchtest. Da wie schon angesprochen hier die Sekunden seit dem 01.01.19.. weiß der Teufel gespeichert werden. Dieser Timestamp ist immer gültig und verfällt nie.
    • Das is so nich ganz richtig Ulle.

      Der Unix-Timestamp is sogar ziemlich anfällig. Es ist wahr, dass man da zwar alles gängige mit Datumsformatierungen erledigen kann, aber was ist mit Daten vor 1970?

      Außerdem gibt es das Jahr-2038-Problem, wo der Unix-Timestamp in der Tat verfällt weil 32 Bit überschritten werden.
    • Lunatic;160589 schrieb:

      Das is so nich ganz richtig Ulle.

      Der Unix-Timestamp is sogar ziemlich anfällig. Es ist wahr, dass man da zwar alles gängige mit Datumsformatierungen erledigen kann, aber was ist mit Daten vor 1970?

      Außerdem gibt es das Jahr-2038-Problem, wo der Unix-Timestamp in der Tat verfällt weil 32 Bit überschritten werden.


      Die Frage ist nur in welchem Fall man ein Datum in eine Datenbank vor 1970 bzw.
      nach 2038 eintragen muss ;)
    • Lunatic;160589 schrieb:

      Das is so nich ganz richtig Ulle.

      Der Unix-Timestamp is sogar ziemlich anfällig. Es ist wahr, dass man da zwar alles gängige mit Datumsformatierungen erledigen kann, aber was ist mit Daten vor 1970?

      Außerdem gibt es das Jahr-2038-Problem, wo der Unix-Timestamp in der Tat verfällt weil 32 Bit überschritten werden.


      Rate mal wieso es erst ab 1970 gerechnet wird. In diesem jahr wurde dererste MikroProzessor "erschaffen".

      Ich glaub nebenbei auch nicht das ein Programm / Script noch 28Jahre haltet.. ^^
    • yannickmama;160830 schrieb:

      Rate mal wieso es erst ab 1970 gerechnet wird. In diesem jahr wurde dererste MikroProzessor "erschaffen".

      Ich glaub nebenbei auch nicht das ein Programm / Script noch 28Jahre haltet.. ^^

      Und nur aus dem Grund heißt er auch Unix-Timestamp und nicht MikroProzessor-Timestamp. :)
    • Es geht mir ja nicht darum zu zeigen warum der Unix-Timestamp ein Unix-Timestamp ist, sondern darum, dass er eben doch ziemlich anfällig ist.

      Zugegebenermaßen ist es Wahr dass die realen Anwendungsfälle für sowas ziemlich mager sind, allerdings gibt es Fälle. Besonders für das Jahr 2038 Problem gibt es bereits düstere Prophezeiungen.

      Aber für Kalendersysteme z.B. wäre es möglich, dass man die Daten vor 1970 benötigt. Allein wenn man danach googelt findet man viele Menschen die das brauchen.

      ~Luna