Daten zu bestimmter Zeit aus MySQL-Datenbank abfragen

Status
Für weitere Antworten geschlossen.
M

Micha333

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ß
 
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:
test.jpg

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:
Code:
CREATE TABLE [b]beispiel[/b] (
id int(8) auto_increment primary key,
von int(8),
bis int(8),
htmlcode text,
datum datetime
);

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:
$mysql_host = "localhost"; // MySQL.Host
$mysql_user = "user"; // MySQL.User
$mysql_pw = "passwort"; // MySQL.Passwort
$mysql_database = "data"; // MySQL.Datenbank
$mysql_table = "table"; // MySQL.Table (In unseren Beispiel von oben: beispiel
?>

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:
HTML-Code:












[U]Zeitformat:[/U] (Tag:Monat:Jahr)

Von:


Bis:







[SIZE=1]Tag:

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:
// Hier wird die Config mit den MySQL-Daten included
include('_config.php');

// Falls kein Formular ausgefüllt wurde, dann
if (!isset($_POST['hinzufuegen'])) {

// Include das Formular
include('form.php');

// Wenn doch ausgefüllt, dann
} else {
// Falls kein Text angegeben wurde
if (empty($_POST['text'])) {
echo "Sie haben vergessen einen Text einzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls kein Von-Datum angegeben wurde
} elseif (empty($_POST['von'])) {
echo "Sie haben vergessen einen Von-Wert einzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls kein Bis-Datum angegeben wurde
} elseif (empty($_POST['bis'])) {
echo "Sie haben vergessen einen Bis-Wert einzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Wenn alles doch, dann...
} else {
$month_von = substr($_POST['von'],3,2); # Teilung des Strings des Von-Datums in den Monat
$month_bis = substr($_POST['bis'],3,2); # Teilung des Strings des Bis-Datums in den Monat
$day_von = substr($_POST['von'],0,2); # Teilung des Strings des Von-Datums in den Tag
$day_bis = substr($_POST['bis'],0,2); # Teilung des Strings des Bis-Datums in den Tag
$year_von = substr($_POST['von'],6,4); # Teilung des Strings des Von-Datums in das Jahr
$year_bis = substr($_POST['bis'],6,4); # Teilung des Strings des Bis-Datums in das Jahr
$check_von = checkdate($month_von,$day_von,$year_von); # Von-Datum auf Wahrheit prüfen
$check_bis = checkdate($month_bis,$day_bis,$year_bis); # Bis-Datum auf Wahrheit prüfen
$date_von = $year_von.$month_von.$day_von;
$date_bis = $year_bis.$month_bis.$day_bis;
$date_heute = date("Ymd");

// Falls Von-Datum unwahr, dann...
if ($check_von == FALSE) {
echo "Das Datum des Von-Wertes ist nich korrekt.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Bis-Datum unwahr, dann...
} elseif ($check_bis == FALSE) {
echo "Das Datum des Bis-Wertes ist nicht korrekt.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Bis-Datum vor dem Von-Datum kommt, dann...
} elseif ($year_von.$month_von.$day_von >= $year_bis.$month_bis.$day_bis) {
echo "Das Datum des Bis-Wertes ist nach Ihrer Eingabe vor dem Datum des Von-Wertes.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Bis-Datum schon abgelaufen, dann...
} elseif ($date_bis < $date_heute) {
echo "Das von Ihnen angegebene Datum zum Bis-Wert liegt schon hinter dem heutigen Datum zurück.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls alles nicht, dann...
} else {
// Verbindung mit dem MySQL-Host aufnehmen
$vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);

// MySQL-Datenbank auswählen
$select_db = mysql_select_db($mysql_database);

// Falls Verbindung zum MySQL-Host falsch oder Auswahl der Datenbank falsch. Meistens Folge von falsch angegebenen Daten in der Config 
if (!vb OR !$select_db) {
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.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Wenn fehlerfrei, dann...
} else {
// SQL-Befehl um die neuen Daten in Tabelle zu schreiben
$sql = "INSERT INTO $mysql_table (von,bis,htmlcode,datum)
VALUES ('$date_von','$date_bis','".$_POST['text']."',NOW(''))";
$result = mysql_query($sql,$vb);
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.";
}
}
}
}
?>

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:
// Includen der Config mit dem MySQL-Daten
include("_config.php");

// Fehlermeldungen abstellen
error_reporting(0);

// Verbindung zum MySQL-Host aufnehmen
$vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);

// MySQL-Datenbank auswählen
$select_db = mysql_select_db($mysql_database);

// SQL-Befehl um zuletzt hinzugefügten html mit Von- und Bis-Datum auszugeben
$sql = "SELECT 
* 
FROM 
$mysql_table 
ORDER BY id DESC
LIMIT 1";
$result = mysql_query($sql,$vb);

// Ergebnis-Array in Objecte teilen
$object = mysql_fetch_object($result);

// Heutiges Datum
$date_heute = date("Ymd");

// Falls heutiges Datum zwischen Von- und Bis-Datum, dann...
if ($date_heute > $object->von && $date_heute < $object->bis) {
echo $object->htmlcode;

// Wenn nicht, dann...
} else {
echo "Leider ist zur Zeit kein Html Code für dieses Datum festgelegt. Versuchen sie es bitte zu einem späteren Zeitpunkt nochmal.";
}
?>

Die Funktionen die ich benutzt habe waren neben standart Funktionen wie echo folgende:
include:
Code:
http://de2.php.net/include/
empty
Code:
http://de2.php.net/empty/
substr
Code:
http://de2.php.net/substr/
checkdate
Code:
http://de2.php.net/checkdate
date
Code:
http://de2.php.net/date
mysql_connect
Code:
http://de3.php.net/function.mysql-connect
mysql_select_db
Code:
http://de3.php.net/manual/de/function.mysql-select-db.php
mysql_query
Code:
http://de3.php.net/manual/de/function.mysql-query.php
mysql_fetch_object
Code:
http://de3.php.net/manual/de/function.mysql-fetch-object.php
error_reporting
Code:
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:
include("include.php")
?>

gruß[/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:
Code:
CREATE TABLE [b]beispiel[/b] (
id INT AUTO_INCREMENT PRIMAY KEY,
von VARCHAR(12),
bis VARCHAR(12),
htmlcode TEXT,
datum DATETIME
);

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












Von:


Bis:









[SIZE=3][ Zeitformat: Tag.Monat.Jahr, Stunden:Minuten ]

[ Beispiel: 12.12.2001, 09:05 ][/SIZE]

add.php:
PHP:
include('_config.php');

// Falls kein Formular ausgefüllt wurde, dann
if (!isset($_POST['hinzufuegen'])) {

// Include das Formular
include('form.php');

// Wenn doch ausgefüllt, dann...
} else {
// Falls kein HTML-Code angegeben wurde, dann...
if (empty($_POST['text'])) {
echo "Sie haben vergessen einen Text einzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls kein Von-Wert angegeben wurde, dann...
} elseif (empty($_POST['von'])) {
echo "Sie haben vergessen einen Von-Wert einzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls kein Bis-Wert angegeben wurde
} elseif (empty($_POST['bis'])) {
echo "Sie haben vergessen einen Bis-Wert einzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Wenn alles doch, dann...
} else {
$month_von = substr($_POST['von'],3,2);
$month_bis = substr($_POST['bis'],3,2);
$day_von = substr($_POST['von'],0,2);
$day_bis = substr($_POST['bis'],0,2);
$year_von = substr($_POST['von'],6,4);
$year_bis = substr($_POST['bis'],6,4);
$hours_von = substr($_POST['von'],12,2);
$hours_bis = substr($_POST['bis'],12,2);
$minutes_von = substr($_POST['von'],15,2);
$minutes_bis = substr($_POST['bis'],15,2);
$date_von = $year_von.$month_von.$day_von.$hours_von.$minutes_von;
$date_bis = $year_bis.$month_bis.$day_bis.$hours_bis.$minutes_von;
$check_von = checkdate($month_von,$day_von,$year_von);
$check_bis = checkdate($month_bis,$day_bis,$year_bis);

// Falls Von-Datum unwahr, dann...
if ($check_von == FALSE) {
echo "Das Datum des Von-Wertes ist nich korrekt.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Bis-Datum unwahr, dann...
} elseif ($check_bis == FALSE) {
echo "Das Datum des Bis-Wertes ist nicht korrekt.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";
// Falls kein Uhrzeit beim Von-Wert angegeben wurde, dann...
} elseif (empty($hours_von) OR empty($minutes_von)) {
echo "Sie haben vergessen eine Zeitange des Von-Wertes anzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls kein Uhrzeit beim Bis-Wert angegeben wurde, dann...
} elseif (empty($hours_bis) OR empty($minutes_bis)) {
echo "Sie haben vergessen eine Zeitange des Bis-Wertes anzugeben.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Uhr-Zeit beim Von-Wert falsch, dann
} elseif ($hours_von < 0 OR $hours_von > 24 OR $minutes_von < 0 OR $minutes_von > 59) {
echo "Die von Ihnen angegebene Zeitangabe des Von-Wertes ist nicht korrekt.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Uhr-Zeit beim Bis-Wert falsch, dann
} elseif ($hours_bis < 0 OR $hours_bis > 24 OR $minutes_bis < 0 OR $minutes_bis > 59) {
echo "Die von Ihnen angegebene Zeitangabe des Bis-Wertes ist nicht korrekt.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Bis-Datum vor dem Von-Datum kommt, dann...
} elseif ($date_von > $date_bis) {
echo "Das Datum des Bis-Wertes ist nach Ihrer Eingabe vor dem Datum des Von-Wertes.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls Bis-Datum schon abgelaufen, dann...
} elseif ($date_bis < $date_heute) {
echo "Das von Ihnen angegebene Datum zum Bis-Wert liegt schon hinter dem heutigen Datum zurück.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";

// Falls alles nicht, dann...
} else {
error_reporting(0);

// Verbindung mit dem MySQL-Host aufnehmen
$vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);

// MySQL-Datenbank auswählen
$select_db = mysql_select_db($mysql_database);
$sql = "INSERT INTO $mysql_table (von,bis,htmlcode,datum)
VALUES ('".$date_von."','".$date_bis."','".$_POST['text']."',NOW(''))";
$result = mysql_query($sql,$vb);

// Falls Verbindung zum MySQL-Host falsch oder Auswahl der Datenbank falsch. Meistens Folge von falsch angegebenen Daten in der Config
if (!$vb OR !$select_db OR !$result) {
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.
[URL='https://finale.freesoft-board.to/\"javascript:history.back()\"']Zurück[/URL]";
} elseif (mysql_affected_rows($vb) == 1) {
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.";
}
}
}
}
?>

include.php
PHP:
// Includen der Config mit dem MySQL-Daten
include("_config.php");

// Fehlermeldungen abstellen
error_reporting(0);

// Verbindung zum MySQL-Host aufnehmen
$vb = mysql_connect($mysql_host,$mysql_user,$mysql_pw);

// MySQL-Datenbank auswählen
$select_db = mysql_select_db($mysql_database);

// SQL-Befehl um zuletzt hinzugefügten html mit Von- und Bis-Datum auszugeben
$sql = "SELECT 
* 
FROM 
$mysql_table 
ORDER BY id DESC
LIMIT 1";
$result = mysql_query($sql,$vb);

// Ergebnis-Array in Objecte teilen
$object = mysql_fetch_object($result);

// Heutiges Datum + Zeit
$date_heute = date("YmdHi");

// Falls heutiges Datum zwischen Von- und Bis-Datum, dann...
if ($date_heute > $object->von && $date_heute < $object->bis) {
echo $object->htmlcode;

// Wenn nicht, dann...
} else {
echo "Leider ist zur Zeit kein Html Code für dieses Datum festgelegt. Versuchen sie es bitte zu einem späteren Zeitpunkt nochmal.";
}
?>

`gruß
 
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.
 
Ja ist doch auch richtig?!
Heute ist der 28. 03.2006
Wenn du von 29 - 30. 03 machst ist das doch richtig?
 
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ß
 
Ich will ja wirklich nicht drängeln, aber kann ich noch mit dem Edit rechnen? :ööm:
 
Micha333 schrieb:
Ich will ja wirklich nicht drängeln, aber kann ich noch mit dem Edit rechnen?
scheinbar nicht!! ^^

falls doch, PN an mich und ich mach' hier wieder auf!!

~ C L O S E D ~

ceeyaa.mex
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Zurück
Oben Unten