ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Vorschläge / Uhrzeit im Kalender einfügen


Seite 1 von 1

dreamworker schrieb am 12.05.2003 um 14:34 Uhr

Ich hätte gern unter dem Datumfield die Uhrzeit für Events eingetragen. Könnte mir da jemand helfen?

Dreamworker

Narodnaja schrieb am 13.05.2003 um 23:27 Uhr

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.

dreamworker schrieb am 14.05.2003 um 00:06 Uhr

Geht irgendwie nix [ich werde mir wohl mysql mal reinziehen müssen].
Könntest du mit einer klitzekleinen leichertren Beschreibung behilflich sein?

DW

Narodnaja schrieb am 14.05.2003 um 00:20 Uhr

Kannst du mit PhpMyAdmin was anfangen ? Denn dann gings einfacher ;)

dreamworker schrieb am 14.05.2003 um 13:28 Uhr

Kann ich [wenn die Erklärung passt ;-)]

DW

Narodnaja schrieb am 14.05.2003 um 14:23 Uhr

ok, dann erstmal: hast du in der _calendar nun schon ein Feld für die Uhrzeit drin ?

dreamworker schrieb am 14.05.2003 um 14:55 Uhr

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.

Narodnaja schrieb am 15.05.2003 um 17:56 Uhr

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ß :)

dreamworker schrieb am 16.05.2003 um 22:55 Uhr

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]

Narodnaja schrieb am 20.05.2003 um 21:20 Uhr

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.

dreamworker schrieb am 21.05.2003 um 21:02 Uhr

perfekt! Danke für Deine Hilfe :-)
Dreamworker

Seite 1 von 1