Ich hätte gern unter dem Datumfield die Uhrzeit für Events eingetragen. Könnte mir da jemand helfen?
Dreamworker
Ort: / Boardübersicht / Vorschläge / Uhrzeit im Kalender einfügen
Seite 1 von 1
Ich hätte gern unter dem Datumfield die Uhrzeit für Events eingetragen. Könnte mir da jemand helfen?
Dreamworker
Hab hier kein ThWB ;) aber so könnte es klappen
Neues Feld in die Tabelle _calendar einfügen, zb so:
thwb_query("ALTER TABLE '".$pref."calendar' ADD 'eventtod' VARCHAR( 5 ) NOT NULL");
(für fünf Zeichen, 10:12 oder so; tod = TimeOfDay ;) )
in das entsprechende Eintragstemplate einfach ein neues Eingabefeld einfügen, beispielsweise mit dem Namen "timeofday" und dann den UPDATE-Query noch ergänzen um den Feldnamen in der Tabelle (im Beispiel eventtod) und den Variablennamen aus dem Template (im Beispiel $timeofday).
Idealerweise noch die Fehlerkontrolle (keine Eingabe usw) entsprechend der für die anderen Eingabefelder anpassen.
Geht irgendwie nix [ich werde mir wohl mysql mal reinziehen müssen].
Könntest du mit einer klitzekleinen leichertren Beschreibung behilflich sein?
DW
Kannst du mit PhpMyAdmin was anfangen ? Denn dann gings einfacher ;)
Kann ich [wenn die Erklärung passt ;-)]
DW
ok, dann erstmal: hast du in der _calendar nun schon ein Feld für die Uhrzeit drin ?
Ich hab noch nix gemacht; because ich muss auf einen Termin. Ich habe erst heute abend Zeit. Danke auf jeden Fall für deine Hilfe.
DW.
ok, dann der Reihe nach:
1. In PhpMyAdmin folgenden Query ausführen:
ALTER TABLE `thwb_calendar` ADD `eventtimeofday` VARCHAR( 5 ) NOT NULL AFTER `eventtime` ;
2. templates/default/newcalendarentry.html:
nach
<tr> <td width="20%" valign="top">$style[stdfont]Datum:$style[stdfontend]</td> <td width="80%" valign="top"><input class="tbinput" type="text" name="event[day]" value="$event[day]" size="2" maxlength="2">.<input class="tbinput" type="text" name="event[month]" value="$event[month]" size="2" maxlength="2">.<input class="tbinput" type="text" name="event[year]" value="$event[year]" size="4" maxlength="4"></td> </tr>
hinzufügen
<tr> <td width="20%" valign="top">$style[stdfont]Uhrzeit:$style[stdfontend]</td> <td width="80%" valign="top"><input class="tbinput" type="text" name="event[hour]" value="$event[hour]" size="2" maxlength="2">:<input class="tbinput" type="text" name="event[minute]" value="$event[minute]" size="2" maxlength="2"> $style[stdfont] Uhr $style[stdfontend]$style[smallfont] (Format hh:mm)$style[smallfontend]</td> </tr>
3. do_newcevent.php:
nach
if( !checkdate($event['month'], $event['day'], $event['year']) ) $a_errmsg[] = 'Sie haben ein ungültiges Datum angegeben.';
einfügen:
if ( (strlen(trim($event['hour'])) < 2) OR (strlen(trim($event['minute'])) < 2) OR ($event['hour'] > 23) OR ($event['minute'] > 59) ) $a_errmsg[] = 'Sie haben eine ungültige Uhrzeit angegeben.';
4: templates/default/showevent.html:
an gewünschter Stelle $calender[eventtimeofday] einfügen. Beachte: hier wird calender auf einmal mit e geschrieben, ansonsten immer mit calendar. Mal sehen obs in 2.9 noch so is :D
Damit auch alles übers Admin Center klappt, folgendes noch ändern:
5: admin/calendar.php:
bei
$r_calendar[active] = mysql_query("SELECT calendar.eventid, calendar.eventtime, calendar.eventtimeofday, calendar.eventsubject, calendar.eventtext, USW ... $r_calendar[active_old] = mysql_query("SELECT calendar.eventid, calendar.eventtime, calendar.eventtimeofday, calendar.eventsubject, calendar.eventtext, USW ... $r_calendar[active_today] = mysql_query("SELECT calendar.eventid, calendar.eventtime, calendar.eventtimeofday, calendar.eventsubject, calendar.eventtext, USW ... $r_calendar[deactive] = mysql_query("SELECT calendar.eventid, calendar.eventtime, calendar.eventtimeofday, calendar.eventsubject, calendar.eventtext, USW ... $r_calendar[deactive_old] = mysql_query("SELECT calendar.eventid, calendar.eventtime, calendar.eventtimeofday, calendar.eventsubject, calendar.eventtext, USW ... $r_calendar[deactive_today] = mysql_query("SELECT calendar.eventid, calendar.eventtime, calendar.eventtimeofday, calendar.eventsubject, calendar.eventtext, USW ...
überall wie im Beispiel "calendar.eventtimeofday" einfügen.
6. gleiche Datei, bisschen weiter unten:
ändere die folgenden Zeilen so ab wie dargestellt:
while ( $calendar_active_old = mysql_fetch_array($r_calendar[active_old]) ) { print("<TR><TD width=\"130\" align=right valign=\"top\"><font color=\"#FF0000\" size=1>( old )</font> " . format_db_date($calendar_active_old[eventtime]) . "<br>(".$calendar_active_old[eventtimeofday].")</TD><TD width=\"200\"valign=\"top\"> $calendar_active_old[eventsubject] </TD><TD>[ <A HREF=\"calendar.php?session=$session&action=edit&event=$calendar_active_old[eventid]\">Edit</A> ] [ <A HREF=\"calendar.php?session=$session&action=delete&event=$calendar_active_old[eventid]\">Delete</a> ]</TD><TD WIDTH=\"100\">$calendar_active_old[username]</TD></TR>"); } while ( $calendar_active_today = mysql_fetch_array($r_calendar[active_today]) ) { print("<TR><TD width=\"130\" align=right valign=\"top\"><font color=\"#000080\" size=1>( today )</font> " . format_db_date($calendar_active_today[eventtime]) . "<br>(".$calendar_active_today[eventtimeofday].")</TD><TD width=\"200\"valign=\"top\"> $calendar_active_today[eventsubject] </TD><TD>[ <A HREF=\"calendar.php?session=$session&action=edit&event=$calendar_active_today[eventid]\">Edit</A> ] [ <A HREF=\"calendar.php?session=$session&action=delete&event=$calendar_active_today[eventid]\">Delete</a> ]</TD><TD WIDTH=\"100\">$calendar_active_today[username]</TD></TR>"); } while ( $calendar_active = mysql_fetch_array($r_calendar[active]) ) { print("<TR><TD width=\"130\" align=right valign=\"top\">" . format_db_date($calendar_active[eventtime]) . "<br>(".$calendar_active_today[eventtimeofday].")</TD><TD width=\"200\"valign=\"top\"> $calendar_active[eventsubject] </TD><TD>[ <A HREF=\"calendar.php?session=$session&action=edit&event=$calendar_active[eventid]\">Edit</A> ] [ <A HREF=\"calendar.php?session=$session&action=delete&event=$calendar_active[eventid]\">Delete</a> ]</TD><TD WIDTH=\"100\">$calendar_active[username]</TD></TR>"); }
7. gleiche Datei, noch weiter oben:
nach
if ( $action == "edit" ) { $r_calendar = mysql_query("SELECT * FROM " . $pref . "calendar WHERE eventid = '$event'"); $calendar = mysql_fetch_array($r_calendar);
folgendes einfügen:
$eventtimeofday = explode(":",$calendar[eventtimeofday]); $eventhour = $eventtimeofday[0]; $eventminute = $eventtimeofday[1];
nach
<TR><TD><input class="tbinput" type="Text" name="newdate[day]" size="3" maxlength="2" value="' .substr($calendar[eventtime],8,2). '">.<input class="tbinput" type="text" name="newdate[month]" size="3" maxlength="2" value="' . substr($calendar[eventtime],5,2) . '">.<input class="tbinput" type="text" name="newdate[year]" size="5" maxlength="4" value="' . substr($calendar[eventtime],0,4) . '"></TD></TR>
folgendes einfügen:
<TR><TD><B>Time :</B></TD></TR> <TR><TD><input class="tbinput" type="Text" name="newdate[hour]" size="3" maxlength="2" value="' .$eventhour. '">:<input class="tbinput" type="text" name="newdate[minute]" size="3" maxlength="2" value="' . $eventminute . '"></TD></TR>
Noch n bissel weiter oben:
ändere diese Zeile wie folgt:
if ( $action == "saveedit" ) { $del_event = mysql_query("UPDATE " . $pref . "calendar SET eventsubject = '".addslashes($newsubject)."', eventtext = '".addslashes($newtext)."', eventtime = '$newdate[year]-$newdate[month]-$newdate[day]', eventtimeofday = '$newdate[hour]:$newdate[minute]', eventactive = '$newstatus' WHERE eventid = '$event'"); }
Nu aber Schluß :)
Bericht:
In der do_newcevent.php:
zusätzlich aus:
thwb_query("INSERT INTO " . $pref . "calendar (eventtime,eventsubject,eventtext,eventactive,userid) VALUES ('$event[year]-$event[month]-$event[day]','".addslashes($event['subject'])."','".addslashes($event['text'])."','1',$g_user[userid]);");
das machen:
thwb_query("INSERT INTO " . $pref . "calendar (eventtime,eventtimeofday,eventsubject,eventtext,eventactive,userid) VALUES ('$event[year]-$event[month]-$event[day]','$event[hour]-$event[minute]','".addslashes($event['subject'])."','".addslashes($event['text'])."','1',$g_user[userid]);");
30min getüftelt, aber doch gelungen ;-)
Es funktioniert, aber die Zeit wird mit einem Bindestrich dargestellt [siehe weiter unten]
-----------------------
Es muss übrigens in der showevent.html alles *calendar* heissen, sonst zeigt es nichts an - isse bug?
-----------------------
Die Einträge im Adminbereich sehen jetzt folgendermassen aus:
Im ersten Kalendereditor ist [noch] keine Zeile für die Uhrzeit; wenn ich aber einen bestehenden Termin editiere, ist die geteilte Zeile für die Uhrzeit zwar vorhanden, aber die Zeit wird nur im ersten Feld, aber dafür vollständig angezeigt [mit Bindestrich]. Wenn ich nun aus dieser Zeile die Minuten rausnehme und in das zweite Feld setze, zeigt es in der showevent.html alles perfekt an [mit Doppelpunkt ;-)]
Ich habe also in der admin/calendar.php unter:
<TR><TD><B>Datum :</B></TD></TR> <TR><TD><input class="tbinput" type="Text" name="newdate[day]" size="3" maxlength="2">.<input class="tbinput" type="text" name="newdate[month]" size="3" maxlength="2">.<input class="tbinput" type="text" name="newdate[year]" size="5" maxlength="4"></TD></TR>
nochmal das eingesetzt:
<TR><TD><B>Time :</B></TD></TR> <TR><TD><input class="tbinput" type="Text" name="newdate[hour]" size="3" maxlength="2" value="' .$eventhour. '">:<input class="tbinput" type="text" name="newdate[minute]" size="3" maxlength="2" value="' . $eventminute . '"></TD></TR>
Danach aus:
} $insert_event = mysql_query("INSERT INTO " . $pref . "calendar (eventtime,eventsubject,eventtext,eventactive,userid) VALUES ('$newdate[year]-$newdate[month]-$newdate[day]','".addslashes($newsubject)."','".addslashes($newtext)."','$newstatus','$g_user[userid]');"); echo mysql_error(); }
das gemacht:
} $insert_event = mysql_query("INSERT INTO " . $pref . "calendar (eventtime,eventtimeofday,eventsubject,eventtext,eventactive,userid) VALUES ('$newdate[year]-$newdate[month]-$newdate[day]','$newdate[hour]-$newdate[minute]','".addslashes($newsubject)."','".addslashes($newtext)."','$newstatus','$g_user[userid]');"); echo mysql_error(); }
Nun passt auch die erste Editorseite des Kalenders fast perfekt - bis auf die Tatsache, dass die Zeit immer noch nur im ersten Feld ist.
-----------------------
Punkt 6; erster Abschnitt:
while ( $calendar_active_old = mysql_fetch_array($r_calendar[active_old]) )
... usw. ... auch hier
while ( $calendar_deactive_old = mysql_fetch_array($r_calendar[deactive_old]) )
ändern.
-----------------------
-----------------------
Fazit: Es ist fast am laufen - wenn du mir noch einen Tipp wegen der Zeit im ersten Feld gibst, so dass sie in beiden Feldern auftaucht, ist es perfekt.
Bis dato - Danke für Deine Hilfe :-)
Dreamworker
PS: Das email-Notify funktioniert hier im Board bei mir nicht [falls es jemanden interessiert].
PPS:
Ich vermute es liegt an diesem [von mir geänderten] Code:
thwb_query("INSERT INTO " . $pref . "calendar (eventtime,eventtimeofday,eventsubject,eventtext,eventactive,userid) VALUES ('$event[year]-$event[month]-$event[day]','$event[hour]-$event[minute]','".addslashes($event['subject'])."','".addslashes($event['text'])."','1',$g_user[userid]);"); message_redirect("Eintrag erfolgreich", "calendar.php?month=$event[month]&year=$event[year]");
DW
PPPS:
Wenn ich in der Datenbank über php-myAdmin den Bindestrich in der Uhrzeit zu einem Doppelpunkt ändere, zeigt es im Adminbereich korrekt die Zeit in beiden Feldern an??? Keine Ahnung wat dat is.
DW. [nu is aber Schluss]
so, bin wieder da. Habs überflogen (in der do_newcevent.php den query vergessen, peinlich :rolleyes: ) - ich denke du musst noch folgendes ändern:
aus den von dir zuletzt zitierten Query einfach statt
'$event[hour]-$event[minute]'
'$event[hour]:$event[minute]'
machen, dann sollte das behoben sein.
perfekt! Danke für Deine Hilfe :-)
Dreamworker
Seite 1 von 1