Daten zu bestimmter Zeit aus MySQL-Datenbank abfragen

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

  • Daten zu bestimmter Zeit aus MySQL-Datenbank abfragen

    Hallo!

    Ich möchte eigentlich nur etwas ganz einfaches mit PHP und MySQL machen, aber irgendwie find ich nichts darüber im Web. Ich möchte einen HTML-Code (bestehend aus Text und Bild) in eine MySQL-Datenbank eingeben und festlegen, von wann bis wann dieser Code mit Text und Bild auf der Seite dargestellt werden soll. Kann mir dazu vielleicht irgendjemand so was wie ein gutes Tutorial empfehlen?

    Danke,
    Micha333
  • HI
    Also du willst ein Formular ... wo die Werte:
    Von
    Bis
    Text

    abgefragt werden.
    Text beinhaltet ein Feld, wo du beliebigen Text eingeben kannst.
    Wurde alles korrekt eingegeben, sollen die Werte in eine MySQL Tabelle.
    Auf der Hauptpage soll der Wert von Text so lange angezeigt werden, bis das momentane Datum zwischen den Daten von "Von" bis "Bis" ist.

    Versteh ich das soweit richtig?!

    Schreib dir dann wohl nen Script.
    gruß
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Hi!

    Ja, genau so etwas suche ich. :)
    Ich gebe mal ein kleines Beispiel vor:

    Von: 25.03.2006, 16:00 Uhr
    Bis: 26.03.2006, 15:00 Uhr

    Text: <img src="test.jpg"><br>Text [...]

    Eventuell vielleicht noch eine Fehlermeldung, falls gerade nichts in der Datenbank ist, was abgefragt werden kann, bzw. die Zeit ausgelaufen ist und kein nachfolgender Text bestimmt wurde.
  • Hi
    Hab dir mal was geschrieben.
    Hatte vorhin ein bisschen langweile :)

    Als erstes gehst du in dein Verwaltungsprogramm von MySQL, wie bei den meisten Hostern phpmyadmin.
    Nun gehst du auf SQL und erstellt eine MySQL Tabelle folgendermaßen:

    Quellcode

    1. CREATE TABLE [b]beispiel[/b] (
    2. id int(8) auto_increment primary key,
    3. von int(8),
    4. bis int(8),
    5. htmlcode text,
    6. datum datetime
    7. );


    Zuerst haetten wir da eine _config.php.
    In der sind die MySQL-Daten vertreten. Du musst sie natuerlich entsprechend deinen Daten ändern. Die Tabelle kann von dir selbst gewählt werden:

    PHP-Quellcode

    1. <?
    2. $mysql_host = "localhost"; // MySQL.Host
    3. $mysql_user = "user"; // MySQL.User
    4. $mysql_pw = "passwort"; // MySQL.Passwort
    5. $mysql_database = "data"; // MySQL.Datenbank
    6. $mysql_table = "table"; // MySQL.Table (In unseren Beispiel von oben: beispiel
    7. ?>


    Danach hätten wir eine Datei mit dem Namen: form.php.
    Sie wird geöffnet, wenn man ein neues Datum mit einem neuen Htmlcode erstellen willst.

    HTML-Quellcode

    1. <form action="add.php" method="post">
    2. HTML-Code:<br><textarea name="text" rows="15" cols="60">
    3. <html>
    4. <head>
    5. </head>
    6. <body>
    7. </body>
    8. </html>
    9. </textarea><br><br>
    10. <u>Zeitformat:</u> (Tag:Monat:Jahr)<br>
    11. Von:<br><input type="text" name="von"><br>
    12. Bis:<br><input type="text" name="bis"><br>
    13. <input type="submit" name="hinzufuegen" value="Hinzufügen">
    14. </form>
    15. <br><br>
    16. <font size="1">Tag:
    Alles anzeigen


    Um nun erstellen wir eine Datei mit dem Namen: add.php
    Sie ist dafür zuständig, wenn du einen neuen htmlcode mit einem neuen Zeitraum mit Daten haben willst.
    Sie hat den Inhalt:

    PHP-Quellcode

    1. <?
    2. // Hier wird die Config mit den MySQL-Daten included
    3. include('_config.php');
    4. // Falls kein Formular ausgefüllt wurde, dann
    5. if (!isset($_POST['hinzufuegen'])) {
    6. // Include das Formular
    7. include('form.php');
    8. // Wenn doch ausgefüllt, dann
    9. } else {
    10. // Falls kein Text angegeben wurde
    11. if (empty($_POST['text'])) {
    12. echo "Sie haben vergessen einen Text einzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    13. // Falls kein Von-Datum angegeben wurde
    14. } elseif (empty($_POST['von'])) {
    15. echo "Sie haben vergessen einen Von-Wert einzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    16. // Falls kein Bis-Datum angegeben wurde
    17. } elseif (empty($_POST['bis'])) {
    18. echo "Sie haben vergessen einen Bis-Wert einzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    19. // Wenn alles doch, dann...
    20. } else {
    21. $month_von = substr($_POST['von'],3,2); # Teilung des Strings des Von-Datums in den Monat
    22. $month_bis = substr($_POST['bis'],3,2); # Teilung des Strings des Bis-Datums in den Monat
    23. $day_von = substr($_POST['von'],0,2); # Teilung des Strings des Von-Datums in den Tag
    24. $day_bis = substr($_POST['bis'],0,2); # Teilung des Strings des Bis-Datums in den Tag
    25. $year_von = substr($_POST['von'],6,4); # Teilung des Strings des Von-Datums in das Jahr
    26. $year_bis = substr($_POST['bis'],6,4); # Teilung des Strings des Bis-Datums in das Jahr
    27. $check_von = checkdate($month_von,$day_von,$year_von); # Von-Datum auf Wahrheit prüfen
    28. $check_bis = checkdate($month_bis,$day_bis,$year_bis); # Bis-Datum auf Wahrheit prüfen
    29. $date_von = $year_von.$month_von.$day_von;
    30. $date_bis = $year_bis.$month_bis.$day_bis;
    31. $date_heute = date("Ymd");
    32. // Falls Von-Datum unwahr, dann...
    33. if ($check_von == FALSE) {
    34. echo "Das Datum des Von-Wertes ist nich korrekt.<br><a href=\"javascript:history.back()\">Zurück</a>";
    35. // Falls Bis-Datum unwahr, dann...
    36. } elseif ($check_bis == FALSE) {
    37. echo "Das Datum des Bis-Wertes ist nicht korrekt.<br><a href=\"javascript:history.back()\">Zurück</a>";
    38. // Falls Bis-Datum vor dem Von-Datum kommt, dann...
    39. } elseif ($year_von.$month_von.$day_von >= $year_bis.$month_bis.$day_bis) {
    40. echo "Das Datum des Bis-Wertes ist nach Ihrer Eingabe vor dem Datum des Von-Wertes.<br><a href=\"javascript:history.back()\">Zurück</a>";
    41. // Falls Bis-Datum schon abgelaufen, dann...
    42. } elseif ($date_bis < $date_heute) {
    43. echo "Das von Ihnen angegebene Datum zum Bis-Wert liegt schon hinter dem heutigen Datum zurück.<br><a href=\"javascript:history.back()\">Zurück</a>";
    44. // Falls alles nicht, dann...
    45. } else {
    46. // Verbindung mit dem MySQL-Host aufnehmen
    47. $vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);
    48. // MySQL-Datenbank auswählen
    49. $select_db = mysql_select_db($mysql_database);
    50. // Falls Verbindung zum MySQL-Host falsch oder Auswahl der Datenbank falsch. Meistens Folge von falsch angegebenen Daten in der Config
    51. if (!vb OR !$select_db) {
    52. echo "Einige Ihrer MySQL-Daten in der <b>_config.php</b> sind nicht korrekt. Bitte ändern Sie die Daten und uploaden Sie die Datei neu.<br><a href=\"javascript:history.back()\">Zurück</a>";
    53. // Wenn fehlerfrei, dann...
    54. } else {
    55. // SQL-Befehl um die neuen Daten in Tabelle zu schreiben
    56. $sql = "INSERT INTO $mysql_table (von,bis,htmlcode,datum)
    57. VALUES ('$date_von','$date_bis','".$_POST['text']."',NOW(''))";
    58. $result = mysql_query($sql,$vb);
    59. echo "Ihr HTML-Code wurde erfolgreich generiert. Er wird nun vom <b>".$_POST['von']."</b> bis zum <b>".$_POST['bis']."</b> auf Ihrer Homepage dargestellt.";
    60. }
    61. }
    62. }
    63. }
    64. ?>
    Alles anzeigen


    Damit nun auch das Ergebnis kommt, wenn das heutige Datum zwischen den Von- und Bis-Daten liegt, müssen wir eine include.php erstellen.
    Sie hat den Inhalt:

    PHP-Quellcode

    1. <?
    2. // Includen der Config mit dem MySQL-Daten
    3. include("_config.php");
    4. // Fehlermeldungen abstellen
    5. error_reporting(0);
    6. // Verbindung zum MySQL-Host aufnehmen
    7. $vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);
    8. // MySQL-Datenbank auswählen
    9. $select_db = mysql_select_db($mysql_database);
    10. // SQL-Befehl um zuletzt hinzugefügten html mit Von- und Bis-Datum auszugeben
    11. $sql = "SELECT
    12. *
    13. FROM
    14. $mysql_table
    15. ORDER BY id DESC
    16. LIMIT 1";
    17. $result = mysql_query($sql,$vb);
    18. // Ergebnis-Array in Objecte teilen
    19. $object = mysql_fetch_object($result);
    20. // Heutiges Datum
    21. $date_heute = date("Ymd");
    22. // Falls heutiges Datum zwischen Von- und Bis-Datum, dann...
    23. if ($date_heute > $object->von && $date_heute < $object->bis) {
    24. echo $object->htmlcode;
    25. // Wenn nicht, dann...
    26. } else {
    27. echo "Leider ist zur Zeit kein Html Code für dieses Datum festgelegt. Versuchen sie es bitte zu einem späteren Zeitpunkt nochmal.";
    28. }
    29. ?>
    Alles anzeigen


    Die Funktionen die ich benutzt habe waren neben standart Funktionen wie echo folgende:
    include:

    Quellcode

    1. http://de2.php.net/include/

    empty

    Quellcode

    1. http://de2.php.net/empty/

    substr

    Quellcode

    1. http://de2.php.net/substr/

    checkdate

    Quellcode

    1. http://de2.php.net/checkdate

    date

    Quellcode

    1. http://de2.php.net/date

    mysql_connect

    Quellcode

    1. http://de3.php.net/function.mysql-connect

    mysql_select_db

    Quellcode

    1. http://de3.php.net/manual/de/function.mysql-select-db.php

    mysql_query

    Quellcode

    1. http://de3.php.net/manual/de/function.mysql-query.php

    mysql_fetch_object

    Quellcode

    1. http://de3.php.net/manual/de/function.mysql-fetch-object.php

    error_reporting

    Quellcode

    1. http://de.php.net/error_reporting


    Hoff es hilft dir und es ist das, was es sein soll^^.
    Wenn du nun zb eine fertige page hast musst du nur folgendes einbinden, wo der Text kommen soll, wenn das Datum in den Zeitraum platzt:

    PHP-Quellcode

    1. <?
    2. include("include.php")
    3. ?>


    gruß
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Hey!

    Wow, also was du da in der Zeit zusammengestellt hast, ist ja unglaublich, danke! Es funktioniert auch alles. Vielen Dank! :)

    Aber eine Frage hätte ich noch: Was muss ich ändern, damit ich neben Datum auch die Uhrzeit eingeben kann?
  • Hi
    Sry... konnt dir erst heut helfen.
    War die Tage weg.
    Die MySQL-Tabelle erstellst du dann folgendermaßen:

    Quellcode

    1. CREATE TABLE [b]beispiel[/b] (
    2. id INT AUTO_INCREMENT PRIMAY KEY,
    3. von VARCHAR(12),
    4. bis VARCHAR(12),
    5. htmlcode TEXT,
    6. datum DATETIME
    7. );


    Die Config muss die gleichen, richtigen Daten beinhalten wie vorhher.
    Die form.php schaut so aus:

    HTML-Quellcode

    1. <form action="add.php" method="post">
    2. HTML-Code:<br><textarea name="text" rows="15" cols="60">
    3. <html>
    4. <head>
    5. </head>
    6. <body>
    7. </body>
    8. </html>
    9. </textarea><br><br>
    10. Von:<br><input type="text" name="von"><br>
    11. Bis:<br><input type="text" name="bis"><br>
    12. <br><br>
    13. <input type="submit" name="hinzufuegen" value="Hinzufügen"><br><br><br>
    14. <font size="3">[ Zeitformat: Tag.Monat.Jahr, Stunden:Minuten ]<br>
    15. [ Beispiel: 12.12.2001, 09:05 ]
    16. </font>
    17. </form>
    Alles anzeigen


    add.php:

    PHP-Quellcode

    1. <?
    2. include('_config.php');
    3. // Falls kein Formular ausgefüllt wurde, dann
    4. if (!isset($_POST['hinzufuegen'])) {
    5. // Include das Formular
    6. include('form.php');
    7. // Wenn doch ausgefüllt, dann...
    8. } else {
    9. // Falls kein HTML-Code angegeben wurde, dann...
    10. if (empty($_POST['text'])) {
    11. echo "Sie haben vergessen einen Text einzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    12. // Falls kein Von-Wert angegeben wurde, dann...
    13. } elseif (empty($_POST['von'])) {
    14. echo "Sie haben vergessen einen Von-Wert einzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    15. // Falls kein Bis-Wert angegeben wurde
    16. } elseif (empty($_POST['bis'])) {
    17. echo "Sie haben vergessen einen Bis-Wert einzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    18. // Wenn alles doch, dann...
    19. } else {
    20. $month_von = substr($_POST['von'],3,2);
    21. $month_bis = substr($_POST['bis'],3,2);
    22. $day_von = substr($_POST['von'],0,2);
    23. $day_bis = substr($_POST['bis'],0,2);
    24. $year_von = substr($_POST['von'],6,4);
    25. $year_bis = substr($_POST['bis'],6,4);
    26. $hours_von = substr($_POST['von'],12,2);
    27. $hours_bis = substr($_POST['bis'],12,2);
    28. $minutes_von = substr($_POST['von'],15,2);
    29. $minutes_bis = substr($_POST['bis'],15,2);
    30. $date_von = $year_von.$month_von.$day_von.$hours_von.$minutes_von;
    31. $date_bis = $year_bis.$month_bis.$day_bis.$hours_bis.$minutes_von;
    32. $check_von = checkdate($month_von,$day_von,$year_von);
    33. $check_bis = checkdate($month_bis,$day_bis,$year_bis);
    34. // Falls Von-Datum unwahr, dann...
    35. if ($check_von == FALSE) {
    36. echo "Das Datum des Von-Wertes ist nich korrekt.<br><a href=\"javascript:history.back()\">Zurück</a>";
    37. // Falls Bis-Datum unwahr, dann...
    38. } elseif ($check_bis == FALSE) {
    39. echo "Das Datum des Bis-Wertes ist nicht korrekt.<br><a href=\"javascript:history.back()\">Zurück</a>";
    40. // Falls kein Uhrzeit beim Von-Wert angegeben wurde, dann...
    41. } elseif (empty($hours_von) OR empty($minutes_von)) {
    42. echo "Sie haben vergessen eine Zeitange des Von-Wertes anzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    43. // Falls kein Uhrzeit beim Bis-Wert angegeben wurde, dann...
    44. } elseif (empty($hours_bis) OR empty($minutes_bis)) {
    45. echo "Sie haben vergessen eine Zeitange des Bis-Wertes anzugeben.<br><a href=\"javascript:history.back()\">Zurück</a>";
    46. // Falls Uhr-Zeit beim Von-Wert falsch, dann
    47. } elseif ($hours_von < 0 OR $hours_von > 24 OR $minutes_von < 0 OR $minutes_von > 59) {
    48. echo "Die von Ihnen angegebene Zeitangabe des Von-Wertes ist nicht korrekt.<br><a href=\"javascript:history.back()\">Zurück</a>";
    49. // Falls Uhr-Zeit beim Bis-Wert falsch, dann
    50. } elseif ($hours_bis < 0 OR $hours_bis > 24 OR $minutes_bis < 0 OR $minutes_bis > 59) {
    51. echo "Die von Ihnen angegebene Zeitangabe des Bis-Wertes ist nicht korrekt.<br><a href=\"javascript:history.back()\">Zurück</a>";
    52. // Falls Bis-Datum vor dem Von-Datum kommt, dann...
    53. } elseif ($date_von > $date_bis) {
    54. echo "Das Datum des Bis-Wertes ist nach Ihrer Eingabe vor dem Datum des Von-Wertes.<br><a href=\"javascript:history.back()\">Zurück</a>";
    55. // Falls Bis-Datum schon abgelaufen, dann...
    56. } elseif ($date_bis < $date_heute) {
    57. echo "Das von Ihnen angegebene Datum zum Bis-Wert liegt schon hinter dem heutigen Datum zurück.<br><a href=\"javascript:history.back()\">Zurück</a>";
    58. // Falls alles nicht, dann...
    59. } else {
    60. error_reporting(0);
    61. // Verbindung mit dem MySQL-Host aufnehmen
    62. $vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);
    63. // MySQL-Datenbank auswählen
    64. $select_db = mysql_select_db($mysql_database);
    65. $sql = "INSERT INTO $mysql_table (von,bis,htmlcode,datum)
    66. VALUES ('".$date_von."','".$date_bis."','".$_POST['text']."',NOW(''))";
    67. $result = mysql_query($sql,$vb);
    68. // Falls Verbindung zum MySQL-Host falsch oder Auswahl der Datenbank falsch. Meistens Folge von falsch angegebenen Daten in der Config
    69. if (!$vb OR !$select_db OR !$result) {
    70. echo "Einige Ihrer MySQL-Daten in der <b>_config.php</b> sind nicht korrekt. Bitte ändern Sie die Daten und uploaden Sie die Datei neu.<br><a href=\"javascript:history.back()\">Zurück</a>";
    71. } elseif (mysql_affected_rows($vb) == 1) {
    72. echo "Ihr HTML-Code wurde erfolgreich generiert. Er wird nun vom <b>".$_POST['von']."</b> bis zum <b>".$_POST['bis']."</b> auf Ihrer Homepage dargestellt.";
    73. }
    74. }
    75. }
    76. }
    77. ?>
    Alles anzeigen


    include.php

    PHP-Quellcode

    1. <?
    2. // Includen der Config mit dem MySQL-Daten
    3. include("_config.php");
    4. // Fehlermeldungen abstellen
    5. error_reporting(0);
    6. // Verbindung zum MySQL-Host aufnehmen
    7. $vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);
    8. // MySQL-Datenbank auswählen
    9. $select_db = mysql_select_db($mysql_database);
    10. // SQL-Befehl um zuletzt hinzugefügten html mit Von- und Bis-Datum auszugeben
    11. $sql = "SELECT
    12. *
    13. FROM
    14. $mysql_table
    15. ORDER BY id DESC
    16. LIMIT 1";
    17. $result = mysql_query($sql,$vb);
    18. // Ergebnis-Array in Objecte teilen
    19. $object = mysql_fetch_object($result);
    20. // Heutiges Datum + Zeit
    21. $date_heute = date("YmdHi");
    22. // Falls heutiges Datum zwischen Von- und Bis-Datum, dann...
    23. if ($date_heute > $object->von && $date_heute < $object->bis) {
    24. echo $object->htmlcode;
    25. // Wenn nicht, dann...
    26. } else {
    27. echo "Leider ist zur Zeit kein Html Code für dieses Datum festgelegt. Versuchen sie es bitte zu einem späteren Zeitpunkt nochmal.";
    28. }
    29. ?>
    Alles anzeigen


    `gruß
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Hi!
    Danke für deine Antwort, das Script ist wirklich toll, genau das, was ich gesucht habe, vor allem noch sehr praktisch durch das Eingabe-Formular.

    Eine Frage gibt es allerdings noch: Ich habe ein was eingegeben:
    28.03.2006, 17:00 bis 29.03.2006, 17:00
    Funktioniert auch prima, doch wenn ich folgendes eingebe, also einen Nachfolger ...:
    29.03.2006, 17:00 bis 30.03.2006, 17:00
    ... dann wird nur die Meldung angezeigt, dass kein Datensatz vorhanden ist.
  • Ich meine, ich habe einen Datensatz und gebe einen Nachfolger ein, der direkt nach dem Datensatz #1 angezeigt werden soll, wenn er ausläuft, doch sobald Datensatz #2 eingegeben wurde, wird #1 quasi deaktiviert und es erscheint die Fehler-Meldung.
  • Hoi
    Ich habs zur Zeit so gecodet, dass immer der Zeitabschnitt des zuletzt eingetragenen Datensatzes genommen wird . . .
    muss mal schaun, ob ich noch was zu code
    kommt dann in den edit.

    ´gruß
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]