Seite 1 von 1

Verfasst: Do 16. Mär 2006, 18:29
von Simone
Ich habe das Terminübersicht von rezeptionist erstellte (ich danke Dir!) Modul ausprobiert und ein wenig meinen Wünschen angepasst. Anbei der Code. Das Modul Termineintrag natürlich auch übernommen, aber ohne Änderung.
In den css-Anweisungen habe ich nur die Breitenangaben verändert und die Farbe.

Wichtig war mir, daß

1. nicht alle Termine genannt werden (also nur die aktuellen)
2. Die Reihenfolge so ist, daß die aktuellen Termine oben und die späteren unten stehen
3. die Darstellung (Uhr-Problem, Endzeit wird genannt, Beginn:, Ende:, alles schön untereinander) verbessert wird.

Beispiel einer Darstellung:

Code: Alles auswählen

Fußball SV 09 - Versammlung             Gaststätte "Rundes Leder"
25.04.2006
Beginn: 19:00 Uhr
Ende: 21:00 Uhr
OUTPUT

Code: Alles auswählen

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

$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,4);
        $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
   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 '
 
 <div class="monjahr" style="border-bottom:#CCCCCC 1px solid; font-weight:bold;">';
    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; }
   
      echo ' '.$termin["jahr1"][$i];
      echo '</div>';
      }
   $gefunden=1;
    $navmod_link ="front_content.php?&idcat=".$navmod_id."&idart=".$termin["idart"][$i]."";
    echo '
 
 <div class="details" ><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></div>
 <div class="ort" >'.urldecode($termin["ort"][$i]).'</div>
 <div class="termine">'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4).'</br>Beginn: '.$termin["zeit1"][$i].' Uhr'; // Anfangsdatum ausgeben
   if (  strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1  ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben
   {
      echo '</div><div class="zeit">&nbsp;Ende:&nbsp;'.$termin["zeit2"][$i].' Uhr</div>';
   }
      elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
   {
      echo ' bis <br>'.substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4).'<br>Ende: '.$termin["zeit2"][$i].' Uhr';
      if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat
      {
         echo $termin["monat2"][$i].'</div>';
         if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr
         {
            echo substr($termin["jahr2"][$i],0,0).'';
         }
      }
      echo '';
   }
    else
   {
      echo '</div>';
   }
      echo '</br>';
   }
    }
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
   echo ' <div><b>Es liegen aktuell keine Termine vor!</b></div>';
}
?>
</div>

Verfasst: Fr 14. Apr 2006, 13:09
von 7UPandDown
Hallo,
Hatte das selbe Problem wie Maribeauli. Die Details wurden verworfen.
Die Änderungen von Simone: abgelaufene Termine werden nicht mehr angezeigt, die aktuellen stehen als erster wurden auch übernommen.
Zudem wenn Ort oder Details leer ist, werden diese nicht angezeigt.
Damit dies aber auch richtig funktioniert, hat rezeptionist daran Hand angelegt. Ansonsten hätte ich verzweifelt.
Hier nochmals Danke.
Anschauen könnt ihr Euch dies unter www.msc-aldenhoven.de (Termine).
Gruss
Michael
-------------------------------------------------------------------------------------
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="100%">';
echo "<tr><td colspan=2 class=\"headline\">CMS_HTMLHEAD[1]</td></tr>"; // Überschrift der Seite mit der Termin-Übersicht
echo "<tr><td colspan=2 class=\"subheadline\">CMS_HTMLHEAD[2]</td></tr>"; // Weiterer Text
echo '<tr><td colspan=2>&nbsp;</td></tr>'; // Leerzeile vor der Termin-Übersicht

$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,4);
$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 5: // Ortdetail
$termin["ortdetail"][$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["ortdetail"], $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
{
$farbe=0;
if ( $gefunden == 1 )
{
echo ' </table>';
}
echo ' <table width="480" border="0" cellspacing="0" cellpadding="5" class="text">

<tr>
<td colspan="2" class="headline" style="border: 1px; border-left: 0px; border-right:0px; border-color: #4779A0; border-style: solid; background-color: #EEEEEE">';
switch (substr($termin["datum1"][$i],5,2)) {
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; }

echo ' '.$termin["jahr1"][$i];
echo '</div>';
}
$gefunden=1;
echo ' <tr';
if ( $farbe == 1 )
{
echo ' bgcolor="#CCFFCC"';
}
echo '>
<td valign="top" width="200" align="left">'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4);
if ( strlen($termin["zeit1"][$i]) >1 )
{
echo ', '.$termin["zeit1"][$i].'&nbsp;Uhr';
}
if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 || strlen($termin["zeit2"][$i]) >1 )
{
echo '–<br>';
if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 )
{
echo substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4);
if ( strlen($termin["zeit2"][$i]) >1 )
{
echo ', ';
}
}
if ( strlen($termin["zeit2"][$i]) >1 )
{
echo $termin["zeit2"][$i].'&nbsp;Uhr';
}
}
echo '</td>
<td width="470" valign="top" align="left"><b>'.urldecode($termin["titel"][$i]).'</b></td>
</tr>';
if ( strlen($termin["ort"][$i]) == "" )
{}
if ( strlen($termin["ort"][$i]) > 1 )
{
echo ' <tr';
if ( $farbe == 1 )
{
echo ' bgcolor="#CCFFCC"';
}
echo '>
<td colspan="2"><b>Ort:</b> '.urldecode($termin["ort"][$i]).'</td>
</tr>';
}
$sql2 = "SELECT CONTENT.value
FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
WHERE ARTLANG.idart = ".$termin["idart"][$i]." AND ARTLANG.idartlang = CONTENT.idartlang AND CONTENT.typeid = '7'";
$db->query($sql2);
if ($db->num_rows() != 0)
{
echo ' <tr';
if ( $farbe == 1 )
{
echo ' bgcolor="#CCFFCC"';
}
echo '>';
$db->next_record();
if ($termin["ortdetail"][$i] !== ""){
echo '><td colspan="2">';
echo '<b>Details:</b> '.urldecode($termin["ortdetail"][$i]).'</td></tr>';}
}
if ( $farbe == 0 ) { $farbe=1; } else { $farbe=0; }
}
}
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
echo ' <tr>
<td colspan=2><b>Es liegen aktuell keine Termine vor!</b></td>
</tr>';
}
?>
</table>

Verfasst: Di 18. Apr 2006, 17:24
von Halchteranerin

Verfasst: Mi 19. Apr 2006, 16:11
von Neuling
Hi

ich verwende folgendes Modul:
http://contenido.org/forum/viewtopic.php?t=2155&start=0

Ich habe das Problem das die Sortierung meiner Termine nicht ganz richtig funktioniert! Habe keine Ahnung woran es leigen könnte.
Dachte vielleicht daas ihr den "Fehler (?)" behoben habt! Aber leider nicht!

Mein Problem seht ihr hier:
http://www.tsv-goldbach.de/productive_s ... p?idcat=86

Verfasst: Di 30. Mai 2006, 14:33
von Neuling
Mein Problem mit der Sortierung der Termine besteht immer noch!
Im Log steht folgender Fehler:

Code: Alles auswählen

[29-May-2006 23:18:32] PHP Warning:  Call-time pass-by-reference has been deprecated - argument passed by value;  If you would like to pass it by reference, modify the declaration of [runtime function name]().  If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.  However, future versions may not support this any longer.  in /home/www/web10/html/productive_system/cms/front_content.php(793) : eval()'d code on line 666
Hat das was damit zu tun? Kennt jemand diesen Effekt?

Wie ihr unter den oben geposteten Link sehen könnt habe ich 3 neue Terimie für Juni 06 eingetragen! Diese werden aber erst nach dem Januar 07 angezeigt!

Verfasst: Mi 31. Mai 2006, 10:09
von Neuling
Kennt keiner das Problem das die Termine nicht richtig sortiert werden? Bzw. wo muss ich ansetzten damit die Sortierung wieder passt?

Verfasst: Mi 31. Mai 2006, 11:24
von Halchteranerin
Neuling hat geschrieben:Bzw. wo muss ich ansetzten damit die Sortierung wieder passt?
Pauschal, ohne mir das weiter angeschaut zu haben, wuerde ich sagen in der SELECT-Anweisung im ORDER BY-Bereich. Wenn du damit nichts anfangen kannst, dann empfehle ich dir die Lektuere eines SQL-Buchs. :)

Verfasst: Mi 31. Mai 2006, 11:35
von rezeptionist
nimm mal den neuen aktuallisierten Code aus dem Thread "Terminmodul mit allen Terminen"

Verfasst: Mi 31. Mai 2006, 15:20
von Neuling
Also ich habe das von dir angesprochene Modul getestet!
Ohne Erfolg! Es ist genau der Geliche Effekt wie bei dem was ich aktuell verwende.

Ich habe den Code vom ersten Posting verwendet! Hoffe mal das war/ist auch der aktuelle! oder?

Verfasst: Mi 31. Mai 2006, 15:42
von rezeptionist
Zugang per PM !

Verfasst: Mi 31. Mai 2006, 15:57
von Neuling
Zugang per PN?

Also wenn du mir ne Nachricht schicken wolltest, dann ist die NICHT angekommen! In meinem Posteingang ist nichts...

Verfasst: Mi 31. Mai 2006, 16:10
von rezeptionist
Wenn ich mal reinschauen soll, solltest du mir per PM nen Zugang schicken :wink:

Verfasst: Do 1. Jun 2006, 07:11
von rezeptionist
Schaue es dir jetzt mal an wenn es ok ist

http://www.communido.net/front_content.php?idcat=36 :wink:

Ansonsten per PM

Verfasst: Fr 2. Jun 2006, 11:16
von Neuling
super, danke! Funktioniert jetzt einwandfrei!