 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.01.2006, 17:16
|
#1
|
|
TP-Greis
Registriert seit: Aug 2002
Ort: Hochfranken
|
[PHP] BD-gestützte Terminliste füllen und Datumsabhängig auslesen
Hallööle,
hab kürzlich diesen Wunsch verspürt:
Zitat:
Ich möcht auf meiner Site in einem Admin-Formular Termine in eine mysqlDB schreiben, jeder Termin besteht aus Tag, Uhrzeit, Stichwort Kurzbeschreibungstext und Bild.
Auf der Website selbst sollen dann ganz simpel über ein php-script immer die Termine der nächsten x Wochen angezeigt werden, tabellarisch.
|
Member Heatseeker hat das Problem blitzschnell und blitzsauber durch maßgeschneiderten php-Code gelöst:
1. Schritt
In der DB ist eine Tabelle "termine" mit folgenden Feldern anzulegen:
Zitat:
CREATE TABLE `termine` (
`datum` VARCHAR( 10 ) NOT NULL ,
`datum_stamp` INT NOT NULL ,
`uhrzeit` VARCHAR( 10 ) NOT NULL ,
`stichwort` VARCHAR( 250 ) NOT NULL ,
`grafik` VARCHAR( 250 ) NOT NULL ,
`beschreibung` TEXT NOT NULL
) TYPE = MYISAM ;
|
2. Schritt
Einträge tätigt man über ein html-Formular
Zitat:
<form name="form1" method="post" action="einfuegen.php">
Datum(TT.MM.JJJJ):<br>
<input type="text" name="datum">
<br>
Uhrzeit:<br>
<input type="text" name="uhrzeit"><br>
Stichwort:
<br>
<input type="text" name="stichwort">
<br>
Grafikdateiname:
<br>
<input type="text" name="grafik">
<br>
Kurzbeschreibung:<br>
<textarea name="beschreibung"></textarea><br>
<input type="submit" name="Submit" value="Senden">
</form>
|
das mit diesem php-Script arbeitet, das mit Namen "einfuegen.php" im selben Verzeichnis liegt:
Zitat:
<?php
$dbhost = 'localhost';
$dbname = 'termine'; // Hier Datenbankname rein
$dbuser = 'root'; // Hier User...
$dbpasswd = ''; // und passwort...
//Verbindungsaufbau
$connection = @mysql_connect($dbhost, $dbuser, $dbpasswd);
@mysql_select_db($dbname, $connection);
if(isset($_POST['Submit'])){ // wurde das Formular abgeschickt?
// Datum in einzelne Variablen speichern:
$array=explode(".",$_POST['datum']);
$tag=$array[0];
$monat=$array[1];
$jahr=$array[2];
//Datum ins Timestamp-Format umwandeln:
$datum_stamp=mktime(0,0,0,$monat,$tag,$jahr);
//Das wichtige SQL-Statement:
$sql="INSERT INTO termine SET
datum='".$_POST['datum']."',
datum_stamp=$datum_stamp,
uhrzeit='".$_POST['uhrzeit']."',
stichwort='".$_POST['stichwort']."',
grafik='".$_POST['grafik']."',
beschreibung='".$_POST['beschreibung']."'";
mysql_query($sql) or die(mysql_error()); // Query senden und Fehler abfangen
echo "Termin erfolgreich hinzugefügt!"; // Bla bla...
}
?>
|
(Datenbank-Host, -name, -user, -passwort in den ersten Zeilen natürlich an eigene Gegebenheiten anpassen)
3. Schritt
Für die Darstellung beispielsweise aller Termine der nächsten 6 Wochen sorgt dieses Skript, das man in üblicher Weise in seine html-Seite (dann natürlich php-Seite) einbindet:
Zitat:
<?php
$dbhost = 'localhost';
$dbname = 'termine'; // Hier Datenbankname rein
$dbuser = 'root'; // Hier User...
$dbpasswd = ''; // und passwort...
//Verbindungsaufbau
$connection = @mysql_connect($dbhost, $dbuser, $dbpasswd);
@mysql_select_db($dbname, $connection);
//Das wichtige SQL-Statement:
$sql="SELECT * FROM termine ORDER BY datum_stamp ASC";
$result=mysql_query($sql) or die(mysql_error()); // Query senden und Fehler abfangen
// der Anfang der Tabelle
echo"<table>";
while($row=mysql_fetch_array($result)){
// Heutige Timestamp:
$heute_stamp=time();
// Ist das Datum in den nächsten 6 Wochen?
$sechs_wochen=60*60*24*7*6;
if( (($heute_stamp+$sechs_wochen) > $row['datum_stamp'])&& ($heute_stamp < $row['datum_stamp'])){
// die Ausgabe:
echo"<tr><td>".$row['datum']." ".$row['uhrzeit']." Uhr: ".$row['stichwort']." <br> ".nl2br($row['beschreibung'])."<br><br><td></tr>";
}
}
//das Ende der Tabelle
echo"</table>";
?>
|
Nochmal 1000 Dank an Danny, ich hoff ich kann mich mal revancieren.
ciao, Steff
Geändert von steff11 (22.01.2006 um 17:19 Uhr).
|
|
|
22.01.2006, 20:59
|
#2
|
|
TP-Veteran
Registriert seit: Jun 2003
Ort: Aachen
|
Danke danke...
War ja keine so große Geschichte, tut man doch gerne fürs TP
Revangieren kannste dich bestimmt mal, da habe ich gar keine bedenken
Grüße
Danny
|
|
|
27.05.2006, 21:44
|
#3
|
|
TP-Veteran
Registriert seit: Jun 2002
Ort: Hamburg Altona
|
Moin auch, schickes Script.
Daten werden auch in die Datenbank eingetragen nur werden die Daten nicht in der vorhergesehenen Datei angezeigt.
Natürlich habe ich die Datenbankverbindungen ordnungsgemäß eingetragen und auch die Seite in *.php umbenannt.
Was könnte ein möglicher Fehler sein?
Vielen Dank,
Butterstulle
|
|
|
03.07.2006, 00:57
|
#4
|
|
TP-Newbie
Registriert seit: Jul 2006
|
Ist auch möglich abgelaufene Termine anzuzeigen und vllt. ja nach Terminnamen noch auf eine weitere Seite zu linken?
|
|
|
26.09.2006, 22:30
|
#5
|
|
TP-Newbie
Registriert seit: Sep 2006
|
Zitat:
|
Zitat von Klecka Gandalf
Ist auch möglich abgelaufene Termine anzuzeigen und vllt. ja nach Terminnamen noch auf eine weitere Seite zu linken?
|
Das würde mich auch ziemlich interessieren. Etwa so:
http://www.domain.de/events.php?id=1
http://www.domain.de/events.php?id=2
...
Hat da jemand einen Vorschlag / Lösung?
Jeder Datensatz müsste eine eigene ID in der Datenbank haben...
Bin für jede Hilfe dankbar!
|
|
|
15.11.2007, 14:27
|
#6
|
|
TP-Newbie
Registriert seit: Nov 2007
|
Hi erstmal!
Ich habe das Script gefunden und kurzer Hand eingebaut. Funzt soweit super.
In der Abfrage ist es ja kein Problem, die Zeit von 6 Wochen beliebig anders einzustellen. Das bekommt sogar so ein php Trottel, wie ich einer bin hin  .
Für mich wäre es jetzt interessant, die Abfrage so zu ändern, dass jeweils nur der aktuellste Termin angezeigt wird. Irgendwie bekomme ich das aber überhaupt nicht hin. Wenn mir da nochmal der heatsseker oder jemand anderes helfen könnte würde ich mich echt sehr freuen.
MfG
hobbyan
|
|
|
15.11.2007, 14:56
|
#7
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Du willst also nur einen einzigen Termin ausgeben?
das kannst Du mit Hilfe vom LIMIT erreichen.
Code:
//Das wichtige SQL-Statement:
$sql="SELECT * FROM termine ORDER BY datum_stamp ASC LIMIT 0,1";
|
|
|
15.11.2007, 16:52
|
#8
|
|
TP-Newbie
Registriert seit: Nov 2007
|
Supi Danke.
Ich musste nur anstatt LIMIT 0,1 LIMIT 1, 1 nehmen, dann ging es.
Nach ein wenig Suche, fand ich dies hier : Der erste Wert bezeichnet die Position des "Startdatensatzes", der zweite die Anzahl der auszugebenden Treffer.
Bin happy, es geht. Vielen Dank für die schnelle Hilfe.
Ich lerne, wenn auch langsam 
|
|
|
16.11.2007, 16:44
|
#9
|
|
TP-Newbie
Registriert seit: Nov 2007
|
Hallo nochmal!
Mir ist heute beim basteln noch was aufgefallen. Eigentlich sollte es doch so sein, dass nur die Daten von heute bis in die definierte Zukunft (im beispiel sind es 6 Wochen) angezeigt werden. Bei mir werden aber auch die Termine in der Vergangenheit angezeigt. Ich habe da schon einiges rumgebastelt aber bekomme es nicht hin. Jemand eine Idee?
MfG hobbyan
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:07 Uhr.
|
 |