Module für Terminverwaltung

tommo
Beiträge: 120
Registriert: So 27. Jun 2004, 21:34
Kontaktdaten:

Beitrag von tommo » Mi 30. Jun 2004, 10:26

Also:

ich habe zwei Module:
eins für die Termineigabe und eins für die Terminausgabe.

Termineingabe:

INPUT: ---

OUTPUT

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=\"../contenido/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($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; 
  for ($i=0; $i<=6; $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 align=\"left\">Titel</td> 
  <td align=\"left\"><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=27 class=Input></td> 
</tr> 
<tr> 
  <td nowrap>Startdatum <b class=klein>jjjj-mm-tt</b></td> 
  <td align=\"left\"><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 align=left>Start-Uhrzeit <b class=klein>hh:mm</b></td> 
  <td align=left><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=6 class=Input></td> 
  <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>Enddatum <b class=klein>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=\"Endzeitpunkt wählen\"></a></td> 
   <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>End-Uhrzeit <b class=klein>hh:mm</b></td> 
  <td><input type=\"text\" name=\"zeit2\" value=\"".$termin[3]."\" size=6 class=Input></td> 
  <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>Ort</td> 
  <td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=Input></td> 
  <td class=klein>(erscheint <i>auch</i> in der Übersicht)</td> 
</tr> 
<tr> 
  <td align=left>Ort - Detail</td> 
  <td><input type=\"text\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\" size=27 class=Input></td> 
  <td class=klein>(erscheint <i>nicht</i> in der Übersicht)</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> 
</f"."orm> 
<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)); 
switch ($date1[wday]) { 
  case 1: $wtag1 = "Montag"; break; 
  case 2: $wtag1 = "Dienstag"; break; 
  case 3: $wtag1 = "Mittwoch"; break; 
  case 4: $wtag1 = "Donnerstag"; break; 
  case 5: $wtag1 = "Freitag"; break; 
  case 6: $wtag1 = "Samstag"; break; 
  case 0: $wtag1 = "Sonntag"; break; } 
switch ($date2[wday]) { 
  case 1: $wtag2 = "Montag"; break; 
  case 2: $wtag2 = "Dienstag"; break; 
  case 3: $wtag2 = "Mittwoch"; break; 
  case 4: $wtag2 = "Donnerstag"; break; 
  case 5: $wtag2 = "Freitag"; break; 
  case 6: $wtag2 = "Samstag"; break; 
  case 0: $wtag2 = "Sonntag"; break; } 
echo "<h1 class=\"headline\">CMS_TEXT[6]</h1> 
<font id=\"font\"><p>&nbsp;&nbsp;".$wtag1.", ".$datum1; 
if ( "CMS_TEXT[1]"!=="" ) 
{ 
echo ", CMS_TEXT[1]"; 
if ( "CMS_TEXT[3]"=="" ) 
{ 
  echo " Uhr"; 
} 
} 
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" ) 
{ 
echo " – "; 
if ( strlen($datum2)==10 ) 
{ 
  echo $wtag2.", ".$datum2; 
} 
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" ) 
{ 
  echo ', '; 
} 
if ( "CMS_TEXT[3]"!=="" ) 
{ 
  echo "CMS_TEXT[3] Uhr"; 
} 
} 
echo "</p> 
<p>&nbsp;&nbsp;<b>CMS_TEXT[4]</b>"; 
if ( "CMS_TEXT[5]" ) 
{ 
echo ", CMS_TEXT[5]"; 
} 
echo "</p> 
<p><br>CMS_HTML[7]</p></font>"; 
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat.""; 
echo '<p><br><a href="'.$sess->url("$navmod_link").'" id="font">Zurück zur Terminübersicht</a></p>'; 
} 

?>
Terminausgabe:

INPUT: ----

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 id="termine" 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 Monatsname einzufügen ist 
   { 
    echo ' <tr> 
  <td width="45"><img border="0" src="upload/img/trans.gif" width="45" height="1" alt="" class="line"></td> 
<td width="115"><img border="0" src="upload/img/trans.gif" width="115" height="1" alt="" class="line"></td> 
<td width="10"><img border="0" src="upload/img/trans.gif" width="10" height="1" alt="" class="line"></td> 
<td width="120"><img border="0" src="upload/img/trans.gif" width="120" height="1" alt="" class="line"></td> 
<td width="10"><img border="0" src="upload/img/trans.gif" width="10" height="1" alt="" class="line"></td> 
<td><img border="0" src="upload/img/trans.gif" height="1" alt="" class="line"></td> 
</tr> 
<tr> 
  <td colspan="6" valign="top"><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 valign="top" style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;">'.$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 '</td><td nowrap valign="top" style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;"> ['.$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 '</td><td style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;">'; 
   } else 
   { 
    echo '</td><td style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;">'; 
   } 
   $navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i].""; 
   echo '</td> 
  <td style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;"><img border="0" src="upload/img/trans.gif" width="8" height="1" alt=""></td> 
  <td valign="top" style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;">'.urldecode($termin["ort"][$i]).'</td> 
  <td style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;"><img border="0" src="upload/img/trans.gif" width="8" height="1" alt=""></td> 
  <td valign="top" style="border-bottom:1px solid #aaa; padding:5px 0 5px 0;"><a href="'.$sess->url("$navmod_link").'">'.urldecode($termin["titel"][$i]).'</a></td> 
</tr>'; 
  } 
} 
} 
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt 
{ 
echo ' <tr> 
  <td colspan="6"><b>Es liegen aktuell keine Termine vor!</b></td> 
</tr>'; 
} 
?> 
</table>
Auf der Seite Terminausgabe erscheint:
Es liegen aktuell keine Termine vor!
Ist ja auch klar, hab ia noch nix eingetragen.

Auf der Seite Termineingabe erscheint:
Donnerstag, ..

Zurück zur Terminübersicht

Hab ich da ein generelles Denkproblem?

Danke schonmal,
Tom

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

Beitrag von Halchteranerin » Mi 30. Jun 2004, 10:38

tommo hat geschrieben:Hab ich da ein generelles Denkproblem?
Vielleicht. :wink: Auch wenn ich immer noch nicht weiss, woher Donnerstag kommt. Heute ist Mittwoch. :lol:

Ach, ok, ich hab's gesehen, mit dem Donnerstag. :) Soll heissen, ich habe einen Artikel angelegt, ohne Daten einzugeben, und ihn mir in der Vorschau angeschaut. Ich weiss aber immer noch nicht, woher es kommt.

Die Module sind folgendermassen zu verwenden:

Du erstellst einen Artikel, und dem weist Du ein Template zu, in dem Du das Modul Terminuebersicht eingebaut hast.

Dann brauchst Du noch ein Template mit dem eingebauten Modul Termineingabe.

Deine einzelnen Termine sind Artikel (!), die auf dem Template Termineingabe basieren. D.h. pro Termin musst Du einen Artikel anlegen, und wenn Du diesen Artikel im Editor bearbeiten willst, bekommst Du die Eingabemaske dafuer. D.h. aber auch, Du kannst Termine nur im Backend eingeben. Eingabe im Frontend ist ein Problem, welches, soviel ich weiss, bis jetzt noch nicht geloest wurde, auch wenn schon mehrere danach gefragt haben.

Terminuebersicht und Terminverwaltung muessen sich innerhalb derselben Kategorie befinden, wobei die Seite mit der Terminuebersicht Startartikel sein soll/muss. Moechtest Du (zusaetzlich) eine (abgekuerzte) Terminuebersicht fuer die Startseite haben, dafuer habe ich irgendwo im Forum ein weiteres Modul gepostet.

Viele Gruesse
Christa

PS Beim Eingabe eines Termins musst Du aufpassen, dass Du erst die Beschreibung eingibst und diese abspeicherst oder erst die Daten eingibst und diese absendest. Wenn Du beide Teile (Daten+Beschreibung) eingibst und dann auf Absenden klickst, wird die Beschreibung logischerweise nicht gespeichert, weil das nur ein Text/HTML-Feld ist, welches extra gespeichert werden muss.

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Kalender zeigt nur Wochentage

Beitrag von Uwe » Do 19. Aug 2004, 19:45

Hallo,

danke erst mal für das tolle Modul. Leider ist ein Problem aufgetaucht, das wohl noch nicht beschrieben wurde.

Im Modul für die Eingabe des Termins ist ein Kalender eingebunden. Leider zeigt dieser nur Wochentage und es ist nix verlinkt.

Bild

Die Kalender in den Artikeleigenschaften (Zeitsteuerung) funktionieren tadellos.

Hat jemand einen Tip?

Viele grüsse vom bodensee, Uwe

MaikS
Beiträge: 10
Registriert: Mo 13. Sep 2004, 10:01
Kontaktdaten:

Re: Kalender zeigt nur Wochentage

Beitrag von MaikS » Mo 13. Sep 2004, 10:03

Uwe hat geschrieben:Bild
Hallo,

ich bekomme auch diese Anzeige, wenn ich den Kalender aufrufe. Gibt es hierfür irgendeinen Tipp? Auch sehe ich, dass der Kalender nicht über die i18n Funktion in die eingestellte Sprache übersetzt wird, was ich soweit nicht nachvollziehen kann.

Grüße
Maik

mhl
Beiträge: 67
Registriert: Mi 18. Aug 2004, 21:59
Wohnort: Salzburg
Kontaktdaten:

Formatierungsschwierigkeiten

Beitrag von mhl » Mo 25. Okt 2004, 10:07

Hallo.
Vorab ein ganz großes Dankeschön für dieses schöne Modul. Ich finde es super. Nur leider habe ich ein kleines Problem, und ich find den Haken nicht. Es betrifft eigentlich nur das Termineingabe- und -ausgabemodul, und da wiederum nur den letzten Teil, sprich den Bereich "Beschreibung/Inhalte:", und zwar sowohl im Backend als auch im Frontend. Ich habe für beide, eine eigene Schriftart im format.css angelegt (.termintext), und diese beiden Zellen beide mit dieser class definiert. Ich lege einen neuen Artikel an, alles wunderbar. Will ich aber einen bestehenden Artikel bearbeiten (zB einen Link einfügen, dann schmeisst er mir eine ganz andere class rein, nämlich die von der Headline. Dass das dann Igitt aussieht, ist glaub ich verständlich. Untenstehend habe ich den Code eingefügt, und bitte höflichst um kritische Durchsicht und einen helfenden Hinweis.

EDIT am 04.01.2005:

mir ist es über die Weihnachtsfeiertage gelungen das Problem zu lösen, wenngleich ich nun ein kleines, aber tolerierbares Problem mit der Datenbank bzw. der Terminausgabe habe. Die zwei Dingen hängen aber nicht miteinander zusammen. Besten Dank noch mal für das geile Tool!

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=\"../contenido/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($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; 
  for ($i=0; $i<=6; $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><font class=text>Titel</font></td> 
  <td><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=50 class=text></td> 
</tr> 
<tr> 
  <td nowrap><font class=text>Datum (<b>jjjj-mm-tt</b>)</font></td> 
  <td><input type=\"text\" name=\"datum1\" value=\"".$termin[0]."\" size=11 maxlength=10 class=text> 
   <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=\"Datum wählen\"></a></td> 
</tr> 
<tr> 
  <td><font class=text>Uhrzeit (<b>hhmm</b>)</font></td> 
  <td><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=5 maxlength=4 class=text></td> 
</tr> 
<tr> 
  <td colspan=2><input type=\"hidden\" name=\"datum2\" value=\"".$termin[2]."\"></td> 
</tr> 
<tr> 
  <td colspan=2><input type=\"hidden\" name=\"zeit2\" value=\"".$termin[3]."\"></td> 
</tr> 
<tr> 
  <td><font class=text>Ort </font></td> 
  <td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=text></td> 
</tr> 
<tr> 
  <td colspan=2><input type=\"hidden\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\"></td> 
</tr> 
<tr> 
  <td colspan=2 align=center> 
   <input type=\"submit\" value=\" Termin eintragen \" class=InputButton><input type=\"hidden\" name=\"senden\" value=1> 
  </td> 
</tr> 
</table> 
</form> 
<font class=termintext><b>Beschreibung / Inhalte:</b>CMS_HTML[7]</font>
<script language=\"JavaScript\"> 
var startcal = new calendar1(document.forms['eintrag'].elements['datum1']); 
startcal.year_scroll = true; 
startcal.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)); 
switch ($date1[wday]) { 
  case 1: $wtag1 = "Montag"; break; 
  case 2: $wtag1 = "Dienstag"; break; 
  case 3: $wtag1 = "Mittwoch"; break; 
  case 4: $wtag1 = "Donnerstag"; break; 
  case 5: $wtag1 = "Freitag"; break; 
  case 6: $wtag1 = "Samstag"; break; 
  case 0: $wtag1 = "Sonntag"; break; } 
switch ($date2[wday]) { 
  case 1: $wtag2 = "Montag"; break; 
  case 2: $wtag2 = "Dienstag"; break; 
  case 3: $wtag2 = "Mittwoch"; break; 
  case 4: $wtag2 = "Donnerstag"; break; 
  case 5: $wtag2 = "Freitag"; break; 
  case 6: $wtag2 = "Samstag"; break; 
  case 0: $wtag2 = "Sonntag"; break; } 
echo "<font class=headline>CMS_TEXT[6]</font> 
<p class=subheadline>".$wtag1.", ".$datum1; 
if ( "CMS_TEXT[1]"!=="" ) 
{ 
echo "&nbsp;&nbsp;-&nbsp;&nbsp;CMS_TEXT[1]"; 
if ( "CMS_TEXT[3]"=="" ) 
{ 
  echo " Uhr"; 
} 
} 
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" ) 
{ 
echo " – "; 
if ( strlen($datum2)==10 ) 
{ 
  echo $wtag2.", ".$datum2; 
} 
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" ) 
{ 
  echo ', '; 
} 
if ( "CMS_TEXT[3]"!=="" ) 
{ 
  echo "CMS_TEXT[3] Uhr"; 
} 
} 
echo "</p> 
<p class=subheadline>CMS_TEXT[4]"; 
if ( "CMS_TEXT[5]" ) 
{ 
echo ", CMS_TEXT[5]"; 
} 
echo "</p> <br>
<p class=termintext>CMS_HTML[7]</p>"; 
 
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat.""; 
echo '<p class=termintext><br><a href="'.$sess->url("$navmod_link").'" id="font">Zurück zur Übersicht</a></p>'; 

} 

?>
Besten Dank im Voraus!

Max
Zuletzt geändert von mhl am Di 4. Jan 2005, 16:36, insgesamt 1-mal geändert.

aspedis
Beiträge: 37
Registriert: Mo 3. Mai 2004, 16:37
Wohnort: Portland, Oregon USA
Kontaktdaten:

Danke und Frage

Beitrag von aspedis » Di 4. Jan 2005, 16:31

@ Agon und Halchterin:

:D Vielen Vielen DANK :!: :!: :!: :lol:

habe es auf www.vbweb.de/cms [das /cms ist wichtig, weil die Seite noch nicht offiziell online ist] mal eingebaut.
Eine Frage habe ich jedoch noch:

ist es irgendwie möglich, das Datum und vor allem die Uhrzeit auf eine Zeile zu bekommen, also statt
08.01.2005,
08:00 Uhr–
16:00 Uhr


08.01.2005
08:00 - 16:00 oder noch besser alles in eine Zeile 08.01.2005 - 08:00 - 16:00 ???

habe schon die breaks entfernt in dem ausgabe modul
switch ($db->f("typeid")) {
case 0: // Anfangstermin
$termin["datum1"][$anz] = $db->f("value");
$termin["idart"][$anz] = $db->f("idart");
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");
case 3: // Enduhrzeit
$termin["zeit2"][$anz] = $db->f("value");
$termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz];
break;


aber nützt nix.

vielen dank
volker
p.s. antwort kann hier im forum oder per formular auf www.vbweb.de/cms erfolgen. danke.
Fürchte nicht das Chaos,
denn dadurch kann das Neue enstehen.
________________________________
Willkommen im cup-der-verlierer liebe bazis :-P

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

Das "3B.sp.6n" Problem

Beitrag von Hulk » Mo 24. Jan 2005, 00:54

Hallo,

hier war mehrfach vom "3B.sp.6n"-Problem die Rede. Ich habe nun ein "In.re.it."-Problem bzw. ein "s+.+d.te.."-Problem

Bei einem neuen Eintrag wird das Enddatum in der Übersicht zunächst ausgegeben (allerdings nur als Tag - dd., nicht als Monat und Jahr - mm.yy, was ich auch gerne geändert hätte).

Wenn man dann aber eine Überschrift oder einen Text hinzufügt, wird auf der Terminübersicht nur noch der Anfangstermin und statt des Endtermins eine der oben genannten Buchstabenkombinationen ausgegeben. Das Format ist anscheinend ein Datumsformat (Punkte, zweites Beispiel mit Uhrzeit), aber woher kommen die Buchstaben??

Hier mein leicht überarbeiteter Code von dieser Themen-Seite:
INPUT

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=\"../contenido/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($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; 
  for ($i=0; $i<=6; $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 align=\"left\">Titel</td> 
  <td align=\"left\"><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=27 class=Input></td> 
</tr> 
<tr> 
  <td nowrap>Startdatum <b class=klein>jjjj-mm-tt</b></td> 
  <td align=\"left\"><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 align=left>Start-Uhrzeit <b class=klein>hh:mm</b></td> 
  <td align=left><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=6 class=Input></td> 
  <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>Enddatum <b class=klein>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=\"Endzeitpunkt wählen\"></a></td> 
   <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>End-Uhrzeit <b class=klein>hh:mm</b></td> 
  <td><input type=\"text\" name=\"zeit2\" value=\"".$termin[3]."\" size=6 class=Input></td> 
  <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>Ort</td> 
  <td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=Input></td> 
  <td class=klein>(erscheint <i>auch</i> in der Übersicht)</td> 
</tr> 
<tr> 
  <td align=left>Ort - Detail</td> 
  <td><input type=\"text\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\" size=27 class=Input></td> 
  <td class=klein>(erscheint <i>nicht</i> in der Übersicht)</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> 
</f"."orm> 
<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)); 
switch ($date1[wday]) { 
  case 1: $wtag1 = "Montag"; break; 
  case 2: $wtag1 = "Dienstag"; break; 
  case 3: $wtag1 = "Mittwoch"; break; 
  case 4: $wtag1 = "Donnerstag"; break; 
  case 5: $wtag1 = "Freitag"; break; 
  case 6: $wtag1 = "Samstag"; break; 
  case 0: $wtag1 = "Sonntag"; break; } 
switch ($date2[wday]) { 
  case 1: $wtag2 = "Montag"; break; 
  case 2: $wtag2 = "Dienstag"; break; 
  case 3: $wtag2 = "Mittwoch"; break; 
  case 4: $wtag2 = "Donnerstag"; break; 
  case 5: $wtag2 = "Freitag"; break; 
  case 6: $wtag2 = "Samstag"; break; 
  case 0: $wtag2 = "Sonntag"; break; } 
echo "<h1 class=\"headline\">CMS_TEXT[6]</h1> 
<font id=\"font\"><p>&nbsp;&nbsp;".$wtag1.", ".$datum1; 
if ( "CMS_TEXT[1]"!=="" ) 
{ 
echo ", CMS_TEXT[1]"; 
if ( "CMS_TEXT[3]"=="" ) 
{ 
  echo " Uhr"; 
} 
} 
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" ) 
{ 
echo " – "; 
if ( strlen($datum2)==10 ) 
{ 
  echo $wtag2.", ".$datum2; 
} 
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" ) 
{ 
  echo ', '; 
} 
if ( "CMS_TEXT[3]"!=="" ) 
{ 
  echo "CMS_TEXT[3] Uhr"; 
} 
} 
echo "</p> 
<p>&nbsp;&nbsp;<b>CMS_TEXT[4]</b>"; 
if ( "CMS_TEXT[5]" ) 
{ 
echo ", CMS_TEXT[5]"; 
} 
echo "</p> 
<p><br>CMS_HTML[7]</p></font>"; 
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat.""; 
echo '<p><br><a href="'.$sess->url("$navmod_link").'" id="font">Zurück zur Terminübersicht</a></p>'; 
} 

?> 
OUTPUT

Code: Alles auswählen

<?php 
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen 
$date = date("Y-m-d"); 

echo '<table border="0" cellspacing="0" cellpadding="0" width="70%">'; 

$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 Monatsname einzufügen ist 
   { 
    echo ' <tr> 
  <td class="TextBoxHellgelb2" colspan="6" valign="top" style="border-bottom:1px solid #aaa">'; 
    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 '</td> 
</tr>'; 
   } 
   $gefunden=1; 
   echo ' <tr> 
  <td class="TextBoxHellgelb3" nowrap valign="top"  style="padding:5px 0 5px 0;">'.$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 '</td><td class="TextBoxHellgelb3" nowrap valign="top" style="padding:5px 0 5px 0;"> '.$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 '</td><td class="TextBoxHellgelb3" >'; 
   } else 
   { 
    echo '</td><td class="TextBoxHellgelb3" >'; 
   } 
   $navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i].""; 
   echo '</td> 
  <td class="TextBoxHellgelb3" ><img border="0" src="upload/img/trans.gif" width="8" height="1" alt=""></td> 
  <td valign="top" class="TextBoxHellgelb3" >'.urldecode($termin["ort"][$i]).'</td> 
  <td class="TextBoxHellgelb3" ><img border="0" src="upload/img/trans.gif" width="8" height="1" alt=""></td> 
  <td valign="top" class="TextBoxHellgelb3" ><a href="'.$sess->url("$navmod_link").'">'.urldecode($termin["titel"][$i]).'</a></td> 
</tr>'; 
  } 
} 
} 
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt 
{ 
echo ' <tr> 
  <td colspan="6" class="TextBoxHellgelb2" ><b>Es liegen aktuell keine Termine vor!</b></td> 
</tr>'; 
} 
?> 
</table>  
Was muss ich ändern, um ein Enddatum zu erhalten?

Was muss ich ändern, um es im Format dd.mm.yy zu erhalten?

Ich habe übrigens concode geleert, hat nichts verändert. Habe die merkwürdige Buchstabensuppe auch nicht in der Datenbank gefunden.

Vielen Dank für einen Hinweis!

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

Nachtrag

Beitrag von Hulk » Mo 24. Jan 2005, 01:35

Hallo,

die Buchstabenfolge ändert sich jedes Mal, jetzt z.B. "+T.re.it."

Nachtrag: Fehlerbericht:
[24-Jan-2005 01:25:36] PHP Warning: array_multisort() [<a href='function.array-multisort'>function.array-multisort</a>]: Array sizes are inconsistent in \front_content.php(563) : eval()'d code on line 1326

[24-Jan-2005 01:28:12] PHP Warning: array_multisort() [<a href='function.array-multisort'>function.array-multisort</a>]: Array sizes are inconsistent in \front_content.php(563) : eval()'d code on line 1326

[24-Jan-2005 01:28:33] PHP Warning: array_multisort() [<a href='function.array-multisort'>function.array-multisort</a>]: Array sizes are inconsistent in \front_content.php(563) : eval()'d code on line 1326

[24-Jan-2005 01:29:29] PHP Warning: array_multisort() [<a href='function.array-multisort'>function.array-multisort</a>]: Array sizes are inconsistent in \front_content.php(563) : eval()'d code on line 1326

[24-Jan-2005 01:29:31] PHP Warning: array_multisort() [<a href='function.array-multisort'>function.array-multisort</a>]: Array sizes are inconsistent in \front_content.php(563) : eval()'d code on line 1326

[24-Jan-2005 01:29:54] PHP Warning: array_multisort() [<a href='function.array-multisort'>function.array-multisort</a>]: Array sizes are inconsistent in \front_content.php(563) : eval()'d code on line 1326
Danke für die Hilfe!

Hulk

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

Immer noch der gleiche Fehler

Beitrag von Hulk » Mo 24. Jan 2005, 21:20

Leider habe ich immer noch keine Lösung für die Buchstaben-Ausgabe anstelle des Enddatums gefunden.

Vielleicht liegt es ja am Eingabe-Modul, das ich auch aus diesem Thread habe:

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=\"../contenido/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($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; 
  for ($i=0; $i<=6; $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 align=\"left\">Titel</td> 
  <td align=\"left\"><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=27 class=Input></td> 
</tr> 
<tr> 
  <td nowrap>Startdatum <b class=klein>jjjj-mm-tt</b></td> 
  <td align=\"left\"><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 align=left>Start-Uhrzeit <b class=klein>hh:mm</b></td> 
  <td align=left><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=6 class=Input></td> 
  <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>Enddatum <b class=klein>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=\"Endzeitpunkt wählen\"></a></td> 
   <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>End-Uhrzeit <b class=klein>hh:mm</b></td> 
  <td><input type=\"text\" name=\"zeit2\" value=\"".$termin[3]."\" size=6 class=Input></td> 
  <td class=klein>(kann auch leer bleiben)</td> 
</tr> 
<tr> 
  <td align=left>Ort</td> 
  <td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=Input></td> 
  <td class=klein>(erscheint <i>auch</i> in der Übersicht)</td> 
</tr> 
<tr> 
  <td align=left>Ort - Detail</td> 
  <td><input type=\"text\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\" size=27 class=Input></td> 
  <td class=klein>(erscheint <i>nicht</i> in der Übersicht)</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> 
</f"."orm> 
<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)); 
switch ($date1[wday]) { 
  case 1: $wtag1 = "Montag"; break; 
  case 2: $wtag1 = "Dienstag"; break; 
  case 3: $wtag1 = "Mittwoch"; break; 
  case 4: $wtag1 = "Donnerstag"; break; 
  case 5: $wtag1 = "Freitag"; break; 
  case 6: $wtag1 = "Samstag"; break; 
  case 0: $wtag1 = "Sonntag"; break; } 
switch ($date2[wday]) { 
  case 1: $wtag2 = "Montag"; break; 
  case 2: $wtag2 = "Dienstag"; break; 
  case 3: $wtag2 = "Mittwoch"; break; 
  case 4: $wtag2 = "Donnerstag"; break; 
  case 5: $wtag2 = "Freitag"; break; 
  case 6: $wtag2 = "Samstag"; break; 
  case 0: $wtag2 = "Sonntag"; break; } 
echo "<h1 class=\"headline\">CMS_TEXT[6]</h1> 
<font id=\"font\"><p>&nbsp;&nbsp;".$wtag1.", ".$datum1; 
if ( "CMS_TEXT[1]"!=="" ) 
{ 
echo ", CMS_TEXT[1]"; 
if ( "CMS_TEXT[3]"=="" ) 
{ 
  echo " Uhr"; 
} 
} 
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" ) 
{ 
echo " – "; 
if ( strlen($datum2)==10 ) 
{ 
  echo $wtag2.", ".$datum2; 
} 
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" ) 
{ 
  echo ', '; 
} 
if ( "CMS_TEXT[3]"!=="" ) 
{ 
  echo "CMS_TEXT[3] Uhr"; 
} 
} 
echo "</p> 
<p>&nbsp;&nbsp;<b>CMS_TEXT[4]</b>"; 
if ( "CMS_TEXT[5]" ) 
{ 
echo ", CMS_TEXT[5]"; 
} 
echo "</p> 
<p><br>CMS_HTML[7]</p></font>"; 
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat.""; 
echo '<p><br><a href="'.$sess->url("$navmod_link").'" id="font">Zurück zur Terminübersicht</a></p>'; 
} 

?> 

Schließlich kommt die falsche Ausgabe erst, nachdem mit diesem Formular Text abgespeichert wurde. Ich komme leider nicht dahinter.

Für einen Hinweis, vielleicht auch von denen, die hier ähnliche Fehler gepostet haben, wäre ich sehr dankbar!!

Hulk

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

Beitrag von Hulk » So 30. Jan 2005, 01:29

Auch wenn es zum Selbstgespräch wird:

Ich habe kapiert, dass das Modul nur funktioniert, wenn man die Titel- und Textfelder nicht benutzt. Tolle Lösung, aber immerhin.

Jetzt muss ich aber feststellen, dass auch die Sortierung nicht stimmt: nur innerhalb der Monate wird nach Datum der Veranstaltung sortiert, die Monate selbst dagegen nach Erstellungsdatum. Ich kriegs nicht geregelt, wo man die Monatssortierung ändern kann.

Gibt es im Forum eigentlich auch Module, die funktionieren? Und warum stellt die "Halchterin", die anscheinend ein funktionierendes Modul hat, das hier nicht mal ein.

ziemlich frustriert

Hulk

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

Beitrag von Halchteranerin » So 30. Jan 2005, 09:39

Hulk hat geschrieben:Und warum stellt die "Halchterin", die anscheinend ein funktionierendes Modul hat, das hier nicht mal ein.
Bittu blind? Erstens ist mein Nickname Halchteranerin, und zweitens brauchst du nur EINE Seite zurueckzublaettern, da sind naemlich meine Module gepostet. Also nicht immer meckern, sondern vielleicht auch erstmal gucken!

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

Beitrag von Hulk » So 30. Jan 2005, 21:35

Hallo Halchteranerin,

Du schriebst
Bittu blind?
Anwort: nein!
Erstens ist mein Nickname Halchteranerin,
Das hat also funktioniert: Du regst Dich!
und zweitens brauchst du nur EINE Seite zurueckzublaettern, da sind naemlich meine Module gepostet.
Genau darum geht es: diese Module habe ich - wie alle anderen hier geposteten - ausprobiert, und als Ergebnis habe ich eine wilde Mischung von Monaten: Nur nach dem Eingabezeitpunkt sortiert, nicht nach den Monaten (innerhalb der Monate aufsteigend).

Dann gehe ich auf Deine Seite und sehe, dass dort alles in der richtigen Reihenfolge steht.

Also die Frage:

Hast Du die Termine alle nacheinander in der richtigen Reihenfolge eingegeben, damit der Fehler nicht erscheint, oder hast Du in Deinem aktiven Modul eine weitere Sortierung eingebaut?

Und wenn beides nicht stimmt, was könnte bei mir falsch laufen?
Also nicht immer meckern, sondern vielleicht auch erstmal gucken!
Keine Sorge, ich poste sogar meine Lösungen!

Hulk[/quote]

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

Beitrag von Halchteranerin » So 30. Jan 2005, 22:03

@Hulk: Deine Frage war, ich zitiere: "Und warum stellt die "Halchterin", die anscheinend ein funktionierendes Modul hat, das hier nicht mal ein. "
Meine Antwort: Ich habe meine funktionierenden Module reingestellt (es sind uebrigens zwei), und dafuer, dass sie bei dir nicht funktionieren, kann ich nun wahrlich nichts.
Hulk hat geschrieben:
Erstens ist mein Nickname Halchteranerin,
Das hat also funktioniert: Du regst Dich!
Das, was mich (auf)geregt war, war nicht die falsche Schreibweise meines Nicknames, sondern die Unterstellung, ich wuerde meine Module nicht veroeffentlichen. Nur mal so zur Klarstellung. Und dass ich bisher nicht weiter geantwortet habe, liegt daran, dass ich keine Ahnung habe, woher dein Problem ruehrt, und ein Posting "ich habe keine Ahnung" haette dir auch nicht weiter geholfen, oder?
Hulk hat geschrieben:Hast Du die Termine alle nacheinander in der richtigen Reihenfolge eingegeben, damit der Fehler nicht erscheint, oder hast Du in Deinem aktiven Modul eine weitere Sortierung eingebaut?
Wie ich bereits sagte, die Module laufen bei mir so, wie sie hier gepostet sind. Auch habe ich nicht alle Termine in der richtigen Reihenfolge eingegeben. Die meisten schon, aber es wurden Termine "nachgeschoben", die ich somit nachtraeglich eingegeben habe, und auch da trat das Problem nicht auf.
Hulk hat geschrieben:Und wenn beides nicht stimmt, was könnte bei mir falsch laufen?
Ich weiss es immer noch nicht. Und, hilft dir das jetzt? Ich nehme an, nein.

Hast du alles probiert, was auf den vorigen Seiten stand? Z.B. die Diskussion zwischen agon und Karl auf S. 2 des Threads ... Bei raiwo, Seite 3 des Threads, war wohl das gleiche Problem. Mehr kann ich dazu auch nicht sagen/schreiben.

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

Danke für die prompte Antwort!!

Beitrag von Hulk » So 30. Jan 2005, 22:26

Vielen Dank für die Antwort! Jetzt bin ich schlauer, aber nicht weitergekommen, OK. Bitte nichts für ungut!

Ich kapier es trotzdem nicht.

Hulk

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 30. Jan 2005, 22:35

So, und jetzt alle mal durchatmen...

Ohne, dass ich jetzt das Modul jetzt kenne oder benutzt habe, würde ich vermuten, dass die Termindaten nicht im richtigen Feld landen. Was wird ausgegeben, wenn hinter die Zeilen

Code: Alles auswählen

$termin["datum1"][$anz] = $db->f("value");
bzw.

Code: Alles auswählen

$termin["datum2"][$anz] = $db->f("value");
im Output-Bereich jeweils ein

Code: Alles auswählen

echo $db->f("value");
eingefügt wird? Wenn dort das Datum nicht im Format 2005-12-31 ... ausgegeben wird, liegt dort die Ursache. Warum das so ist -> keine Ahnung.

Ansonsten ist Contenido, sind Module i.A. und dieses Forum kostenlos, die Unterstützung ehrenamtlich und auf freiwilliger Basis.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Gesperrt