Module für Terminverwaltung

Hulk
Beiträge: 25
Registriert: So 21. Nov 2004, 23:29
Kontaktdaten:

Danke danke danke

Beitrag von Hulk » So 30. Jan 2005, 23:16

Nochmals: Nichts für ungut! In meiner Verzweiflung war die "Halchteranerin" meine letzte Hoffnung, deshalb habe ich etwas gedrängt.

Und nochmals: ihre Antwort war hilfreich! Denn jetzt muss ich die Module weiter analysieren.

Dazu hilft mir der Hinweis von Herrn B. Ich habe schon festgestellt, dass bei Termin2 viel Mist drin steht.

Wenn ich mehr weiß, werde ich es hier posten.

Jetzt ist das Wochenende allerdings erstmal vorbei.

Hulk

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 31. Jan 2005, 08:27

nochmal langsam zum Mitschreiben: hast du auf der Seite, wo die Terminsachen sind, auch andere Module eingebunden, z.B. Headline oder Subheadline (oder auch etwas vollkommen anderes)? Wenn ja, versuch, die wegzulassen, und guck, ob der Fehler immer noch auftritt.

Hulk
Beiträge: 25
Registriert: So 21. Nov 2004, 23:29
Kontaktdaten:

Jetzt ist der Groschen gefallen

Beitrag von Hulk » Mi 2. Feb 2005, 23:20

Vielen Dank, jetzt klappt es fehlerfrei!

Nochmals: die Terminübersicht hatte keine Fehler und zeigte nur an, was im Array stand.

Dagegen sind die hier geposteten Termineingabemodule nicht funktionsfähig, soweit sie außer den eigentlichen Termineingaben noch Überschriften- oder Text-Module enthalten. Sobald man dort etwas einträgt, zerschießt es die Datumsangaben. Da kommen sich wohl Variablen in die Quere. Ich habs aber aufgegeben, das zu klären.

Statt dessen empfiehlt es sich, eine Seite ohne weitere Textmodule als Eingabeformular zu verwenden, damit die Termine intakt bleiben.

Was mich eine Weile in die Irre geführt hat (und den Verdacht schürte, die H'in hätte heimlich ein verbessertes Modul eingesetzt), war das Versäumnis, vor einem neuen Test alle bisher eingegebenen Termine zu löschen. Was falsch in die Datenbank eingegeben war, konnte durch geänderte Module natürlich nicht nachträglich korrigiert werden...

Also nochmals: vielen Dank!!

Hulk

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Jetzt ist der Groschen gefallen

Beitrag von Halchteranerin » Do 3. Feb 2005, 00:10

Hulk hat geschrieben: Dagegen sind die hier geposteten Termineingabemodule nicht funktionsfähig, soweit sie außer den eigentlichen Termineingaben noch Überschriften- oder Text-Module enthalten. Sobald man dort etwas einträgt, zerschießt es die Datumsangaben. Da kommen sich wohl Variablen in die Quere. Ich habs aber aufgegeben, das zu klären.
Wenn ich mir das unter diesem Aspekt angucke ... das Modul benutzt CMS_HTMLHEAD[1] und CMS_HTMLHEAD[2] sowie CMS_TEXT[0], CMS_TEXT[1], CMS_TEXT[2]. CMS_TEXT[3], CMS_TEXT[4], CMS_TEXT[5], CMS_TEXT[6] und CMS_HTML[7]. Ich hoffe, ich habe keine uebersehen. Jedenfalls ... wenn auf derselben Seite weitere Module eingesetzt sind, die eine oder mehrere der obigen Variablen ebenfalls benutzen, kommt es wohl zu solche Erscheinungen, wie ihr die hattet. Loesung ist, andere Variablen zu benutzen, d.h. die Zahlen in den Klammern zu aendern, so dass es zu keine Ueberschneidungen kommt. Natuerlich koennte man irgendwie 999 oder sonst eine Zahl davor schreiben, aber was ist, wenn ein anderer Modulschreiber auf die gleiche 'pfiffige' Idee kommt? Da bruetet man wieder darueber und findet den Fehler nicht. Deswegen ist es sinnvoll, wenn jeder, der das Modul einsetzen will, darauf achtet und ggf. die Variablennamen bei sich selbst aendert.

Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist » So 6. Mär 2005, 13:11

Ich möchte gerne dieses Modul ändern, aber es sollen alle eingetragenen Termine angezeigt werden, nicht nur die aktuellen. Dazu sind sicher einige Änderungen erforderlich, nur welche?


Inpt: leer

Output:

Code: Alles auswählen

<?php 
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen 
$date = date("Y-m-d"); 
echo "<h1>CMS_HTMLHEAD[1]</h1>"; // Überschrift der Seite mit der Termin-Übersicht 
echo '<table border=0 cellspacing=0 cellpadding=0 width=\"100%\">'; 

$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid 
 FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT 
 WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND ARTLANG.idartlang = CONTENT.idartlang 
  AND ARTLANG.idlang = '".$lang."' AND CAT.idcat = '".$idcat."' AND CAT.idclient = '".$client."' 
  AND ARTLANG.online = '1' AND CATART.is_start='0' 
 ORDER BY ARTLANG.idart, CONTENT.typeid ASC"; // Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind 
$db->query($sql); 
$j=0; $anz=0; 
if ($db->num_rows() != 0) 
{ 
 $termin = array(array()); // Array erzeugen, in dem die Termine abgelegt werden; 
 while ($j < $db->num_rows()) // alle Datensätze durchlaufen 
 { 
  $db->next_record(); 
  if ($db->f("idart") > $termin["idart"][$anz]) 
  { 
   $anz++; 
  } 
  switch ($db->f("typeid")) { 
   case 0: // Anfangstermin 
    $termin["datum1"][$anz] = $db->f("value"); 
    $termin["jahr1"][$anz] = substr($db->f("value"),0,4); 
    $termin["monat1"][$anz] = substr($db->f("value"),5,2); 
    $termin["tag1"][$anz] = substr($db->f("value"),8,2); 
    $termin["idart"][$anz] = $db->f("idart"); 
   break; 
   case 1: // Anfangsuhrzeit 
    $termin["zeit1"][$anz] = $db->f("value"); 
    $termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz]; 
   break; 
   case 2: // Endtermin 
    $termin["datum2"][$anz] = $db->f("value"); 
    $termin["jahr2"][$anz] = substr($db->f("value"),0,4); 
    $termin["monat2"][$anz] = substr($db->f("value"),5,2); 
    $termin["tag2"][$anz] = substr($db->f("value"),8,2); 
   break; 
   case 3: // Enduhrzeit 
    $termin["zeit2"][$anz] = $db->f("value"); 
    $termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz]; 
   break; 
   case 4: // Ort 
    $termin["ort"][$anz] = $db->f("value"); 
   break; 
   case 6: // Titel 
    $termin["titel"][$anz] = $db->f("value"); 
   break; 
  } 
  $j++; 
 } 
 array_multisort ( $termin["datum1"], SORT_ASC, SORT_STRING, $termin["datum2"], SORT_ASC, SORT_STRING, 
  $termin["jahr1"], $termin["monat1"], $termin["tag1"], $termin["zeit1"], 
  $termin["jahr2"], $termin["monat2"], $termin["tag2"], $termin["zeit2"], 
  $termin["idart"], $termin["ort"], $termin["titel"] ); // nach Datum sortieren 
 for ($i=0; $i<=$anz; $i++) 
 { 
 if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum2"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen 
  { 
 if ( $termin["monat1"][$i] !== $termin["monat1"][$i-1] || $gefunden == 0 ) // überprüfen, ob Monatsnahme einzufügen ist 
   { 
    echo ' <tr> 
  <td colspan=6><img border="0" src="images/2.gif" width="100%" height="2" class="line"> 
 </tr> 
 <tr> 
  <td colspan=6><h2>'; 
    switch ($termin["monat1"][$i]) { 
     case 1: echo "Januar"; break; 
     case 2: echo "Februar"; break; 
     case 3: echo "März"; break; 
     case 4: echo "April"; break; 
     case 5: echo "Mai"; break; 
     case 6: echo "Juni"; break; 
     case 7: echo "Juli"; break; 
     case 8: echo "August"; break; 
     case 9: echo "September"; break; 
     case 10: echo "Oktober"; break; 
     case 11: echo "November"; break; 
     case 12: echo "Dezember"; break; } 
    if ( $i>1 && $termin["jahr1"][$i] != $termin["jahr1"][$i-1] ) // überprüfen, ob Jahr einzufügen ist 
    { 
     echo ' '.$termin["jahr1"][$i]; 
    } 
    echo '</h2></td> 
 </tr>'; 
   } 
   $gefunden=1; 
   echo ' <tr> 
  <td nowrap><p id="font">'.$termin["tag1"][$i].'.'; // Anfangsdatum ausgeben 
   if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben 
   { 
    echo '</p></td><td nowrap><p> ['.$termin["zeit1"][$i].' h]'; 
   } elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben 
   { 
    echo ' –<br>  '.$termin["tag2"][$i].'.'; 
    if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat 
    { 
     echo $termin["monat2"][$i].'.'; 
     if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr 
     { 
      echo substr($termin["jahr2"][$i],2,2).'.'; 
     } 
    } 
    echo '</p></td><td><p>'; 
   } else 
   { 
    echo '</p></td><td><p>'; 
   } 
   $navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i].""; 
   echo '</p></td> 
  <td><img border="0" src="images/2.gif" width="8" height="1"></td> 
  <td><p id="font">'.urldecode($termin["ort"][$i]).'</p></td> 
  <td><img border="0" src="images/2.gif" width="8" height="1"></td> 
  <td width="65%"><p><b><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></b></p></td> 
 </tr>'; 
  } 
 } 
} 
 
?> 
</table>

Ich hatte schon versucht, einfach die Angaben zur Überprüfung der Aktualität von Terminen zu entfernen, aber, dann leuchtet das rote Lämpchen.

Ich hatte

Code: Alles auswählen

if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum2"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen 
  { 
und

Code: Alles auswählen

if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt 
{ 
 echo ' <tr> 
  <td colspan=5><b>Es liegen aktuell keine Termine vor!</b></td> 
 </tr>'; 
} 
gelöscht. Die Entfernung des oberen Codes erzeugt dann den Fehler und ich weiss leider nicht, wie ich die Überprüfung auf Aktualität unterbinden kann.

Kann jemand mir weiterhelfen?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » So 6. Mär 2005, 14:14

Cyclist hat geschrieben:Ich hatte

Code: Alles auswählen

if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum2"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen 
  { 
Das ist zwar ok, die schliessende geschweifte Klammer, die zur oeffnenden von oben gehoert, musst du auch mit entfernen (die ist ziemlich weit hinten).

Aber das hier:
Cyclist hat geschrieben:

Code: Alles auswählen

if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt 
{ 
 echo ' <tr> 
  <td colspan=5><b>Es liegen aktuell keine Termine vor!</b></td> 
 </tr>'; 
} 
taucht in deinem Code oben gar nicht auf, also kann ich das auch nicht nachvollziehen, sorry.

Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist » So 6. Mär 2005, 15:25

Sorry, hier nochmal der komplette Code.

Code: Alles auswählen

<?php 
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen 
$date = date("Y-m-d"); 
echo "<h1>CMS_HTMLHEAD[1]</h1>"; // Überschrift der Seite mit der Termin-Übersicht 
echo '<table border=0 cellspacing=0 cellpadding=0 width=\"100%\">'; 

$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid 
 FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT 
 WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND ARTLANG.idartlang = CONTENT.idartlang 
  AND ARTLANG.idlang = '".$lang."' AND CAT.idcat = '".$idcat."' AND CAT.idclient = '".$client."' 
  AND ARTLANG.online = '1' AND CATART.is_start='0' 
 ORDER BY ARTLANG.idart, CONTENT.typeid ASC"; // Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind 
$db->query($sql); 
$j=0; $anz=0; 
if ($db->num_rows() != 0) 
{ 
 $termin = array(array()); // Array erzeugen, in dem die Termine abgelegt werden; 
 while ($j < $db->num_rows()) // alle Datensätze durchlaufen 
 { 
  $db->next_record(); 
  if ($db->f("idart") > $termin["idart"][$anz]) 
  { 
   $anz++; 
  } 
  switch ($db->f("typeid")) { 
   case 0: // Anfangstermin 
    $termin["datum1"][$anz] = $db->f("value"); 
    $termin["jahr1"][$anz] = substr($db->f("value"),0,4); 
    $termin["monat1"][$anz] = substr($db->f("value"),5,2); 
    $termin["tag1"][$anz] = substr($db->f("value"),8,2); 
    $termin["idart"][$anz] = $db->f("idart"); 
   break; 
   case 1: // Anfangsuhrzeit 
    $termin["zeit1"][$anz] = $db->f("value"); 
    $termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz]; 
   break; 
   case 2: // Endtermin 
    $termin["datum2"][$anz] = $db->f("value"); 
    $termin["jahr2"][$anz] = substr($db->f("value"),0,4); 
    $termin["monat2"][$anz] = substr($db->f("value"),5,2); 
    $termin["tag2"][$anz] = substr($db->f("value"),8,2); 
   break; 
   case 3: // Enduhrzeit 
    $termin["zeit2"][$anz] = $db->f("value"); 
    $termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz]; 
   break; 
   case 4: // Ort 
    $termin["ort"][$anz] = $db->f("value"); 
   break; 
   case 6: // Titel 
    $termin["titel"][$anz] = $db->f("value"); 
   break; 
  } 
  $j++; 
 } 
 array_multisort ( $termin["datum1"], SORT_ASC, SORT_STRING, $termin["datum2"], SORT_ASC, SORT_STRING, 
  $termin["jahr1"], $termin["monat1"], $termin["tag1"], $termin["zeit1"], 
  $termin["jahr2"], $termin["monat2"], $termin["tag2"], $termin["zeit2"], 
  $termin["idart"], $termin["ort"], $termin["titel"] ); // nach Datum sortieren 
 for ($i=0; $i<=$anz; $i++) 
 { 
  if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum2"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen 
  { 
   if ( $termin["monat1"][$i] !== $termin["monat1"][$i-1] || $gefunden == 0 ) // überprüfen, ob Monatsnahme einzufügen ist 
   { 
    echo ' <tr> 
  <td colspan=6><img border="0" src="images/2.gif" width="100%" height="2" class="line"> 
 </tr> 
 <tr> 
  <td colspan=6><h2>'; 
    switch ($termin["monat1"][$i]) { 
     case 1: echo "Januar"; break; 
     case 2: echo "Februar"; break; 
     case 3: echo "März"; break; 
     case 4: echo "April"; break; 
     case 5: echo "Mai"; break; 
     case 6: echo "Juni"; break; 
     case 7: echo "Juli"; break; 
     case 8: echo "August"; break; 
     case 9: echo "September"; break; 
     case 10: echo "Oktober"; break; 
     case 11: echo "November"; break; 
     case 12: echo "Dezember"; break; } 
    if ( $i>1 && $termin["jahr1"][$i] != $termin["jahr1"][$i-1] ) // überprüfen, ob Jahr einzufügen ist 
    { 
     echo ' '.$termin["jahr1"][$i]; 
    } 
    echo '</h2></td> 
 </tr>'; 
   } 
   $gefunden=1; 
   echo ' <tr> 
  <td nowrap><p id="font">'.$termin["tag1"][$i].'.'; // Anfangsdatum ausgeben 
   if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben 
   { 
    echo '</p></td><td nowrap><p> ['.$termin["zeit1"][$i].' h]'; 
   } elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben 
   { 
    echo ' –<br>  '.$termin["tag2"][$i].'.'; 
    if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat 
    { 
     echo $termin["monat2"][$i].'.'; 
     if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr 
     { 
      echo substr($termin["jahr2"][$i],2,2).'.'; 
     } 
    } 
    echo '</p></td><td><p>'; 
   } else 
   { 
    echo '</p></td><td><p>'; 
   } 
   $navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i].""; 
   echo '</p></td> 
  <td><img border="0" src="images/2.gif" width="8" height="1"></td> 
  <td><p id="font">'.urldecode($termin["ort"][$i]).'</p></td> 
  <td><img border="0" src="images/2.gif" width="8" height="1"></td> 
  <td width="65%"><p><b><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></b></p></td> 
 </tr>'; 
  } 
 } 
} 
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt 
{ 
 echo ' <tr> 
  <td colspan=5><b>Es liegen aktuell keine Termine vor!</b></td> 
 </tr>'; 
} 
?> 
</table>
Ich habe es zwar geschafft, dass alte Termine berücksicht werden, allerdings stimmt die Anzeige aufd der Übersicht nicht.

Ich hatte einen Test Termin 4.12.2004 - 4.01.2005 eingetragen, auf der Übersicht wird aber nur 4.-4.01.05 angezeigt. Woran kann ds liegen?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » So 6. Mär 2005, 16:40

Cyclist hat geschrieben:Ich hatte einen Test Termin 4.12.2004 - 4.01.2005 eingetragen, auf der Übersicht wird aber nur 4.-4.01.05 angezeigt. Woran kann ds liegen?
Da bin ich ueberfragt. Ich habe das bei mir zwar nachvollziehen koennen, aber so habe ich auch gesehen, dass deine Uebersicht vollkommen anders aussieht als meine. Ausserdem steht das in der errorlog.txt:

Code: Alles auswählen

[06-Mar-2005 16:28:31] PHP Warning:  array_multisort(): Array sizes are inconsistent in /[...]/contenido/includes/include.con_editcontent.php(571) : eval()'d code on line 763
Ich vermute, dass es auch damit zusammenhaengt, sicher bin ich mir aber nicht.

Es ist ja so, bei deiner Uebersicht steht der Monat fett darueber, und da wird lediglich der Tag (also ohne Monats- oder Jahrangabe) darunter eingetragen. Deswegen steht ja unter Dezember nur der 4. Also logisch ist es schon, ich kann dir nur nicht sagen, wie du eine andere Ausgabe erwirkst.

Bei meiner Version der Terminuebersicht (ich glaube, die befindet sich auf S. 3 des Threads, im Einsatz kannst du die hier sehen: http://www.halchter.de/cms/front_content.php?idcat=7 ) wird ja das komplette Datum ausgegeben, allerdings auch nur von aktuellen Terminen. Vielleicht versuchst du es damit. Du muesstest nur, analog wie in deiner Version oben, die Ueberpruefung auf "Aktualitaet" herausnehmen.

Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist » So 6. Mär 2005, 17:12

Deine Übersicht funktioniert, ich habe es auch geschafft, dass dort alle Termine angezeigt werden. Allerdings steht mir dort leider keine Detailansicht zur Verfügung.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » So 6. Mär 2005, 17:36

ja, das ist ein Problem ... es ist mir naemlich auch aufgefallen.
Ich habe auf der Startseite eine Mini-Uebersicht, wo die naechsten 5 Termine angezeigt werden. Wenn man dort einen der Termine anklickt, kommt man in die Detailansicht, aber bei der Uebersicht nicht. Ich muss da nochmal bei Gelegenheit gucken, wie ich das auch in die Uebersicht reinkriege. Auf der anderen Seite stehen schon alle Details in der Uebersicht. :wink:

Mc
Beiträge: 188
Registriert: Mi 2. Mär 2005, 21:19
Kontaktdaten:

Terminübersicht

Beitrag von Mc » So 20. Mär 2005, 13:32

Habe Contenido 4.4.5 (als Wamp)
Module Terminein-/ausgabe und Terminübersicht wie von Halchteranerin gepostet.

Lege einen neuen Artikel in der Kategorie „Termine“ an. Zugehöriges Template ist „Termineingabe“.
Startartikel der Kategorie hat Template „Terminübersicht“.

Wenn ich den Editor aufrufe, um den Termin einzugeben, wird Javascriptfehler gemeldet:
Zeile 14
Zeichen 9
Fehler: Zugriff verweigert

Wenn ich über den Kalender einen Termin eingebe, wird gemeldet: Es sind Fehler auf der Seite aufgetreten.

In der Vorschau kommt folgende Fehlermeldung:

Warning: getdate() [function.getdate]: Cannot perform date calculation in c:\contenido\htdocs\cms\front_content.php(567) : eval()'d code on line 941

Termin wird trotzdem ausgegeben auch mit Angabe des Wochentages.

Im Frontend wird in der Terminübersicht alles korrekt ausgegeben. Name des Wochentages allerdings nicht.

Wenn ich allerdings den entsprechenden Termin über die Suche ausgebe, dann wird ja der eigentliche Artikel angezeigt, also wieder mit der Fehlermeldung wie in der Vorschau im Backend.

Wer kann mir helfen?

DonBender
Beiträge: 24
Registriert: Mi 13. Apr 2005, 03:35
Kontaktdaten:

Cannot perform date calculation

Beitrag von DonBender » Mi 13. Apr 2005, 03:41

Tausch doch mal spaßenshalber folgenden Code aus:

if(strstr($REQUEST_URI,"changeview=edit") || $submit=="editcontent" || strstr($REQUEST_URI,"area=con_editcontent")) // Überprüfen, ob im Editiermodus aufgerufen

mit

if ($edit) // Überprüfen, ob im Editiermodus aufgerufen

im OUTPUT der Terminein- und -ausgabe.

Ich hatte am Anfang auch diese "Cannot perform date calulation ..." - Fehlermeldung. Aber nachdem ich den Code mit if ($edit) ersetzt habe, musste ich lachen (nach 2,5 Stunden nachgrüppeln), denn jetzt geht es auch in der Version 4.4.5

Mc
Beiträge: 188
Registriert: Mi 2. Mär 2005, 21:19
Kontaktdaten:

Beitrag von Mc » Mo 18. Apr 2005, 21:12

Danke für den Hinweis.
Hat leider nicht geholfen in wamp4.4.5

Macht nichts. Teste jetzt alles online bei ProfiHost. Dort läuft es reibungslos.
http://www.jubec.de/44/cms

Gruß Mc

innotech
Beiträge: 33
Registriert: So 7. Mär 2004, 20:55
Kontaktdaten:

Beitrag von innotech » So 24. Apr 2005, 11:58

Hi Leute!

Ich benutze auf meiner Startseite ein Modul, welches die 5 aktuellsten Termine auf darstellt (thx @ Halchteranerin :D ). Leider stellt das Modul nicht die kommenden 5 Termine statt.

Hab z.B. Termine am 25.04., 26.04., 06.05., 06.05., 09.05., 13.05 in meiner vollständigen artikelauflistung (http://www.gym-st-rupert.at/cms/front_c ... p?idcat=22), auf der Startseite werden diese alllerdings nicht angezeigt (http://www.gym-st-rupert.at/cms).

Kann mir da jemand mit der Sortierung helfen? Danke!!!

INPUT

Code: Alles auswählen

// selected category
$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
         <tr>
           <td>Überschrift</td>
           <td><input type=\"text\" name=\"CMS_VAR[1]\" 
value=\"CMS_VALUE[1]\"></td>
         </tr>

         <tr valign=\"top\">
           <td>Kategorie wählen:</td>
           <td>
             <select name=\"CMS_VAR[0]\">";
             if($selected!="0" && $selected!=""){
              echo"<option value=\"0\">--- kein ---</option>";

             }else{
             echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
             }

             // fetch all categorys
             $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                      $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                      "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                      "AND C.visible=1 ORDER BY A.idtree";
             // execute query
             $db->query($query);

             // loop result and build the options
             while ($db->next_record()) {

               // indent spacer
               $spaces = "|";

               // how many levels
               $levels = $db->f("level");

               for ($i = 0; $i < $levels; $i ++) {
                 // add 2 spaces for every level
                 $spaces = $spaces . "--";

               } // end for

               $spaces .= ">";


               if ($selected == $db->f("idcat")) {
                 // selected category
                 echo "<option selected=\"selected\" value=\"". 
$db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

               } else {
                 // category
                 echo "<option value=\"". $db->f("idcat") ."\">". $spaces . 
$db->f("name") ."</option>";

               } // end if

             } // end while

echo "      </select>";

echo "    </td>
         </tr>

       </table>";
OUTPUT

Code: Alles auswählen

<?php
if ("CMS_VALUE[0]" == 0)
{
  $navmod_id = $idcat;
} else
{
  $navmod_id = "CMS_VALUE[0]";
}
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
echo '<table width="200" border="0" cellspacing="0" cellpadding="5" style="border: 1px; border-color: #E9EDFA; border-style: solid">'; echo "<tr><td style=\"border: 1px; border-color: #E9EDFA; border-top: 0px; border-left: 0px; border-right:0px; border-style: solid; background-color: #E9EDFA; padding-left:10px\" class=\"subheadline\" 
colspan=\"2\"><img src=\"upload/bilder/pfeil.gif\" border=\"0\" width=\"5\" height=\"8\"> CMS_VALUE[1]</td></tr>"; //Überschrift der Termin-Übersicht

$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid
  FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS 
ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
  WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND 
ARTLANG.idartlang = CONTENT.idartlang
   AND ARTLANG.idlang = '".$lang."' AND CAT.idcat = '".$navmod_id."' AND 
CAT.idclient = '".$client."'
   AND ARTLANG.online = '1' AND CATART.is_start='0'
  ORDER BY ARTLANG.idart, CONTENT.typeid ASC"; $db->query($sql);
$j=0; $anz=0;
if ($db->num_rows() != 0)
{
  $termin = array(array());
  while ($j < $db->num_rows()) // alle Datensätze durchlaufen
  {
   $db->next_record();
   if ($db->f("idart") > $termin["idart"][$anz])
   {
    $anz++;
   }
   switch ($db->f("typeid")) {
    case 0: // Anfangstermin
     $termin["datum1"][$anz] = $db->f("value");
     $termin["idart"][$anz] = $db->f("idart");
    break;
    case 1: // Anfangsuhrzeit
     $termin["zeit1"][$anz] = $db->f("value");
     $termin["datum1"][$anz] = $termin["datum1"][$anz]." 
".$termin["zeit1"][$anz];
    break;
    case 2: // Endtermin
     $termin["datum2"][$anz] = $db->f("value");
    break;
    case 3: // Enduhrzeit
     $termin["zeit2"][$anz] = $db->f("value");
     $termin["datum2"][$anz] = $termin["datum2"][$anz]." 
".$termin["zeit2"][$anz];
    break;
    case 4: // Ort
     $termin["ort"][$anz] = $db->f("value");
    break;
    case 5: // Ortdetail
     $termin["ortdetail"][$anz] = $db->f("value");
    break;
    case 6: // Titel
     $termin["titel"][$anz] = $db->f("value");
    break;
   }
   $j++;
  }
  $array_multisort = array ($termin["datum1"], SORT_ASC, SORT_STRING, $termin["datum2"], SORT_ASC, SORT_STRING, $termin["ort"], $termin["ortdetail"], $termin["zeit1"], $termin["zeit2"], $termin["idart"], $termin["titel"] ); 
  for ($i=0; $i<=$anz; $i++)
  {
   if ( $termin["datum1"][$i] >= $date || $termin["datum2"][$i] >= $date ) 
   {

    $gefunden++;
    echo '        <tr>';
    echo '
           <td valign="top" width="70" style="padding-left:10px" class="text">'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4);
  $navmod_link 
="front_content.php?client=".$client."?=".$lang."&idcat=".$navmod_id."&idart=".$termin["idart"][$i]."";
    echo '</td>
           <td valign="top" style="padding-left:5px" class="text"><a href="'.$sess->url("$navmod_link").'" 
id="font">'.urldecode($termin["titel"][$i]).'</a></td>
         </tr>';
   }
   if($gefunden == 5) break;
  }
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
  echo ' <tr>
   <td colspan=2 class=\"text\"><b>Es liegen aktuell keine Termine vor!</b></td>
  </tr>';
}
?>
       </table>

alfamaennchen
Beiträge: 38
Registriert: So 27. Mär 2005, 21:29
Kontaktdaten:

Beitrag von alfamaennchen » Mo 11. Jul 2005, 08:04

Hi,

ich nutze das Terminmodul in der Contenido Version 4.4.5.

Nun möchte ich das Modul für zweisprachige Verwendung modifizieren & habe hierfür 3 weitere Formularfelder hinzugefügt.

Die Sache klappt aber leider nicht ganz; kann aber grade nicht erkennen wieso :( - vielleicht kann mir jemand helfen.

lang=3 (Englisch)
lang=1 (Deutsch)


Code: Alles auswählen

<?php
if(strstr($REQUEST_URI,"changeview=edit") || $submit=="editcontent" || strstr($REQUEST_URI,"area=con_editcontent")) // Überprüfen, ob im Editiermodus aufgerufen

{
 $submit="";
 echo " <script language=\"JavaScript\" src=\"".$cfg['path']['contenido_fullhtml']."scripts/calendar1.js.php?contenido=".$sess->id."\"></script>"; // Kalender einbinden
 $sql = "SELECT ARTLANG.idartlang, CONTENT.idtype, CONTENT.typeid, CONTENT.value, CONTENT.idcontent
  FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["content"]." AS CONTENT
  WHERE ARTLANG.idart = ".$idart." AND ARTLANG.idartlang = CONTENT.idartlang
  ORDER BY CONTENT.typeid ASC";
 $db->query($sql); // Artikelangaben einlesen
 if ($db->num_rows() != 0)
 {
  $termin = array();
  $exists = array();
  $db->next_record();
  $idartlang = $db->f("idartlang");
  for ($i=0; $i<$db->num_rows(); $i++)
  {
   if ( $db->f("idtype") == 3 )
   {
    $j = $db->f("typeid");
    $termin[$j] = $db->f("value");
    $exists[$j] = 1;
   }
  $db->next_record();
  }
 }
 if($termin[6]=="") // falls noch kein Titel eingetragen, Seitentitel einlesen
 {
  $sql = "SELECT ARTLANG.title
   FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG
   WHERE ARTLANG.idart = ".$idart."";
  $db->query($sql);
  $db->next_record();
  $termin[6] = $db->f("title");
 }
 
 if($termin[7]=="") // falls noch kein Titel eingetragen, Seitentitel einlesen
 {
  $sql = "SELECT ARTLANG.title
   FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG
   WHERE ARTLANG.idart = ".$idart."";
  $db->query($sql);
  $db->next_record();
  $termin[7] = $db->f("title_en");
 }
 
 
 if($senden==1) // falls das Terminformular abgeschickt wurde, Daten in Datenbank schreiben
 {
  $senden=0;
  $date = date("Y-m-d H:i:s");
  $author = $auth->auth["uname"];
  if (strlen($datum1)==10)
  {
   $termin[0] = $datum1;
  } else
  {
   $termin[0] = "";
  }
  $termin[1] = $zeit1;
  if (strlen($datum2)==10 && $datum2 >= $datum1)
  {
   $termin[2] = $datum2;
  } else
  {
   $termin[2] = "";
  }
  $termin[3] = $zeit2;
  $termin[4] = $ort1;
  $termin[5] = $ort2;
  $termin[6] = $titel;
  
//Englische Variablen folgen ab hier: -------------------------------
  
  $termin[7] = $titelen;
  $termin[8] = $ort1en;
  $termin[9] = $ort2en;
  
//Englische Variable Ende!
  
  for ($i=0; $i<=9; $i++)
  {
   if($exists[$i]==1)
   {
    $sql = "UPDATE ".$cfg["tab"]["content"]."
     SET value='".$termin[$i]."', lastmodified='".$date."'
     WHERE idartlang = ".$idartlang." AND idtype='3' AND typeid='".$i."'";
    $db->query($sql);
   } else
   {
    $sql = "INSERT INTO ".$cfg["tab"]["content"]."
     (idcontent, idartlang, idtype, typeid, value, author, created, lastmodified)
      VALUES('".$db->nextid($cfg["tab"]["content"])."', '".$idartlang."', '3', '".$i."', '".$termin[$i]."', '".$author."', '".$date."', '".$date."')";
    $db->query($sql);
   }
  }
 }
 // ab hier das Formular für die Editieransicht
 echo "<form action=\"".$REQUEST_URI."\" method=\"post\" name=\"eintrag\">
<table border=0 cellspacing=2 cellpadding=1>

		

 		<tr>
  			<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333; background-color:#E5E5E5;\">Titel <span style=\"color:#FF0000;font-weight:bold;\">(EN)</span></td>
  			<td style=\"background-color:#E5E5E5;\"><input type=\"text\" name=\"titelen\" value=\"".urldecode(stripslashes($termin[7]))."\" size=27 class=Input></td>
			<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333; background-color:#E5E5E5;\">&nbsp;</td>
 		</tr>
		
		<tr>
			<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333\">Titel <span style=\"color:#FF0000;font-weight:bold;\">(DE)</span></td>
			<td><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=27 class=Input></td>
			<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333; background-color:#E5E5E5;\">&nbsp;</td>
		</tr>
		
	<tr>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\">Startdatum <br><b>jjjj-mm-tt</b></td>
	<td><input type=\"text\" name=\"datum1\" value=\"".$termin[0]."\" size=11 class=Input>
	<a href=\"javascript:startcal.popup('','".$cfg['path']['contenido_fullhtml']."templates/standard/');\">
	<img src=\"".$cfg['path']['contenido_fullhtml']."images/calendar.gif\" width=16 height=16 border=0 alt=\"Startzeitpunkt wählen\"></a></td>
	</tr>

<tr>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\">Enddatum <br><b>jjjj-mm-tt</b></td>
	<td><input type=\"text\" name=\"datum2\" value=\"".$termin[2]."\" size=11 class=Input>
	<a href=\"javascript:endcal.popup('','".$cfg['path']['contenido_fullhtml']."templates/standard/');\">
	<img src=\"".$cfg['path']['contenido_fullhtml']."images/calendar.gif\" width=16 height=16 border=0 alt=\"Startzeitpunkt wählen\"></a></td>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\">(kann auch leer bleiben)</td>
</tr>

<tr>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\">Ort <span style=\"color:#FF0000;font-weight:bold;\">(DE)</span></td>
	<td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=Input></td>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\" rowspan=\"2\">(erscheint in der Übersicht)</td>
</tr>

		<tr>
			<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333; background-color:#E5E5E5;\">Ort <span style=\"color:#FF0000;font-weight:bold;\">(EN)</span></td>
			<td style=\"background-color:#E5E5E5;\"><input type=\"text\" name=\"ort1en\" value=\"".urldecode(stripslashes($termin[8]))."\" size=20 class=Input></td>
		</tr>

<tr>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\">Ort - Detail <span style=\"color:#FF0000;font-weight:bold;\">(DE)</span></td>
	<td><input type=\"text\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\" size=27 class=Input></td>
	<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333;\" rowspan=\"2\">(erscheint <i>nicht</i> in Übersicht)</td>
</tr>

		<tr>
			<td style=\"font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #333333; background-color:#E5E5E5;\">Ort - Detail <span style=\"color:#FF0000;font-weight:bold;\">(EN)</span></td>
			<td style=\"background-color:#E5E5E5;\"><input type=\"text\" name=\"ort2en\" value=\"".urldecode(stripslashes($termin[9]))."\" size=27 class=Input></td>
		</tr>

<tr>
	<td colspan=\"3\" align=\"center\">
	<input type=\"submit\" value=\" Absenden \" class=InputButton>&nbsp;&nbsp;<input type=\"hidden\" name=\"senden\" value=1>
	<input type=\"reset\" value=\" Abbrechen \" class=InputButton>
 	</td>
</tr>
</table>

</form>

<p>Beschreibung / Inhalte: CMS_HTML[7]</p>
<script language=\"JavaScript\">
 var startcal = new calendar1(document.forms['eintrag'].elements['datum1']);
 startcal.year_scroll = true;
 startcal.time_comp = false;
 var endcal = new calendar1(document.forms['eintrag'].elements['datum2']);
 endcal.year_scroll = true;
 endcal.time_comp = false;
</script>";
} else // ab hier Terminausgabe für Frontend-Ansicht bzw. Vorschau

{

	$tag1 = substr("CMS_TEXT[0]",8,2);
	$monat1 = substr("CMS_TEXT[0]",5,2);
	$jahr1 = substr("CMS_TEXT[0]",0,4);
	$tag2 = substr("CMS_TEXT[2]",8,2);
	$monat2 = substr("CMS_TEXT[2]",5,2);
	$jahr2 = substr("CMS_TEXT[2]",0,4);
	$datum1 = $tag1.".".$monat1.".".$jahr1;
	$datum2 = $tag2.".".$monat2.".".$jahr2;
	$date1 = getdate(mktime(0,0,0,$monat1,$tag1,$jahr1));
	$date2 = getdate(mktime(0,0,0,$monat2,$tag2,$jahr2));
 
 
if($lang == 3){ 
	$wochentag = array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); 
}else{ 
	$wochentag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); 
	}


if($lang == 3){ 
echo "<h1>CMS_TEXT[7]</h1><p>";
	}else{
echo "<h1>CMS_TEXT[6]</h1><p>";
	}
  
echo $wochentag[$date1[wday]].', '.$datum1;

if ( "CMS_TEXT[1]"!=="" ){
 echo ", CMS_TEXT[1]";
 if ( "CMS_TEXT[3]"=="" ){
  echo " Uhr";
 }
}
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" )
{
 echo ' -<br>';
 if ( strlen($datum2)==10 )
 {
  echo $wochentag[$date2[wday]].", ".$datum2;
 }
 if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" )
 {
  echo ', ';
 }
 if ( "CMS_TEXT[3]"!=="" )
 {
  echo "CMS_TEXT[3] Uhr";
 }
}

if($lang == 3){ 
echo "</p><h2>CMS_TEXT[8]</h2>";
	}else{
echo "</p><h2>CMS_TEXT[4]</h2>";
	}

if($lang == 3){ 
echo "<p>CMS_TEXT[9]</p>";
	}else{ 
echo "<p>CMS_TEXT[5]</p>";
	}




echo "<hr>CMS_HTML[7]";


}



$linkname26 = "CMS_LINKDESCR[26]";
$linkname27 = "CMS_LINKDESCR[27]";
$linkname28 = "CMS_LINKDESCR[28]";

$link26 = "CMS_LINK[26]";
$link27 = "CMS_LINK[27]";
$link28 = "CMS_LINK[28]";

if($linkname26 | $linkname27 | $linkname28){
echo "<p>&nbsp;</p><table cellpadding=\"0\" cellspacing=\"0\" class=\"downstable\"><tr><td colspan=\"2\" class=\"downshead\">CMS_HEAD[15]&nbsp;</td></tr>";}

if(eregi(".pdf", $link26)){ $link26 = "pdf"; }else{ $link26 = "link"; }
if(eregi(".pdf", $link27)){ $link27 = "pdf"; }else{ $link27 = "link"; }
if(eregi(".pdf", $link28)){ $link28 = "pdf"; }else{ $link28 = "link"; }

if (strlen($linkname26) > 1){ echo "<tr><td style=\"width: 20px; vertical-align: middle;\"><img src=\"img/$link26.gif\" alt=\"-\"></td><td class=\"downs\"><a href=\"CMS_LINK[26]\" target=\"CMS_LINKTARGET[26]\">$linkname26</a></td></tr>"; }else{ echo "$linkname26";}
if (strlen($linkname27) > 1){ echo "<tr><td style=\"width: 20px; vertical-align: middle;\"><img src=\"img/$link27.gif\" alt=\"-\"></td><td class=\"downs\"><a href=\"CMS_LINK[27]\" target=\"CMS_LINKTARGET[27]\">$linkname27</a></td></tr>"; }else{ echo "$linkname27";}
if (strlen($linkname28) > 1){ echo "<tr><td style=\"width: 20px; vertical-align: middle;\"><img src=\"img/$link28.gif\" alt=\"-\"></td><td class=\"downs\"><a href=\"CMS_LINK[28]\" target=\"CMS_LINKTARGET[28]\">$linkname28</a></td></tr>"; }else{ echo "$linkname28";}

if($linkname26 | $linkname27 | $linkname28){ echo '</table><hr>'; }

$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."";
if($lang == 3){ 
echo '<p><a href="'.$sess->url("$navmod_link").'" id="font">go back</a></p>';
	}else{ 
echo '<p><a href="'.$sess->url("$navmod_link").'" id="font">Zur&uuml;ck zur &Uuml;bersicht</a></p>';	
	}

?>

Gesperrt