Anpassung Terminmodul, nächste Termin

Gesperrt
Calimero
Beiträge: 60
Registriert: Do 4. Aug 2005, 13:44
Kontaktdaten:

Anpassung Terminmodul, nächste Termin

Beitrag von Calimero »

Hallo Jungs,

ich benutze zur Zeit folgendes Terminmodul

Code: Alles auswählen

<?
$t01 = mi18n("Januar");
$t02 = mi18n("Februar");
$t03 = mi18n("M&auml;rz");
$t04 = mi18n("April");
$t05 = mi18n("Mai");
$t06 = mi18n("Juni");
$t07 = mi18n("Juli");
$t08 = mi18n("August");
$t09 = mi18n("September");
$t10 = mi18n("Oktober");
$t11 = mi18n("November");
$t12 = mi18n("Dezember");
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen 
$date = date("Y-m-d"); 
echo "<table border=0 cellspacing=2 cellpadding=0 width='100%'>";

$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid, ARTLANG.idartlang 
      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= -1; 
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++; 
      } 
      if (isStartArticle($db->f("idartlang"),$idcat,$lang)==FALSE) 
      { 
      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,0); 
        $termin["monat2"][$anz] = substr($db->f("value"),0,0); 
        $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 
   echo "
<tr>
<td></td>
<td style=width:300px;></td>
</tr>";


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 ) // ueberpruefen, ob Monatsnahme einzufuegen ist
   {
    echo "
<tr>
  <td colspan=2 style=\"font-size:14px;font-weight:bold;color:#ff0000\">";
    switch ($termin["monat1"][$i]) {
     case 1: echo "$t01"; break;
     case 2: echo "$t02"; break;
     case 3: echo "$t03"; break;
     case 4: echo "$t04"; break;
     case 5: echo "$t05"; break;

     case 6: echo "$t06"; break;
     case 7: echo "$t07"; break;
     case 8: echo "$t08"; break;
     case 9: echo "$t09"; break;
     case 10: echo "$t10"; break;
     case 11: echo "$t11"; break;
     case 12: echo "$t12"; break; }
    if ( $i>1 && $termin["jahr1"][$i] != $termin["jahr1"][$i-1] ) // ueberpruefen, ob Jahr einzufuegen ist
    {
     echo " ".$termin["jahr1"][$i];
    }
    echo "</td>
</tr><tr><td height=10px></td></tr>";
   }
   $gefunden=1;
   echo " <tr align='left' valign='top'>
  <td nowrap><strong><p id='font'>".$termin["tag1"][$i].".".$termin["monat1"][$i].".".$termin["jahr1"][$i]."</strong>"; // Anfangsdatum ausgeben
   if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben
   {
      echo "<br>".urldecode($termin["zeit1"][$i])."&nbsp;Uhr</p></td>";
   } elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
   {
    echo '–'.$termin["tag2"][$i].'.'.$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=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
   echo "</p></td>
  <td width='65%'><p><a href='".$sess->url("$navmod_link")."' id='font'>".urldecode($termin["titel"][$i])."</a></p></td>
</tr><tr><td colspan=6>&nbsp;</td>
</tr>"
;
  }
}
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
echo " <tr align='left' valign='top'>
  <td colspan=6><b>".mi18n("Es liegen aktuell keine Termine vor!")."</b></td>
</tr>";
}
?>
</table> 

Dieses Terminmodul funktioniert auch einwandfrei und liefert mir die Termine in einem Jahr.

Ich möchte jetzt aber auf einer seperaten Seite immer den nächsten Termin (automatisch) anzeigen lassen.
Hat jemand so etwas schon gebaut oder bzw. was müsste ich anpassen?!

Über jeden Rat, wäre ich dankbar.

Gruß calimero
Calimero
Beiträge: 60
Registriert: Do 4. Aug 2005, 13:44
Kontaktdaten:

Beitrag von Calimero »

kennt keiner diesen Fall bzw. diese Funktion ^^
ich habe schon versucht mit Select top 1 oder so zu arbeiten. funzt aber net.

schade
Gesperrt