Terminübersicht der aktuellen Termine

Gesperrt
Simone
Beiträge: 193
Registriert: Fr 9. Sep 2005, 06:39
Kontaktdaten:

Beitrag von Simone » Do 16. Mär 2006, 18:29

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>

7UPandDown
Beiträge: 59
Registriert: Di 14. Feb 2006, 15:06
Kontaktdaten:

Beitrag von 7UPandDown » Fr 14. Apr 2006, 13:09

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>
Contenido 4.6.15
PHP 4.4.1
MySQL 5.0.18
Host Domainfactory
Browser FireFox

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

Beitrag von Halchteranerin » Di 18. Apr 2006, 17:24

Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

Neuling
Beiträge: 78
Registriert: Di 24. Mai 2005, 14:46
Kontaktdaten:

Beitrag von Neuling » Mi 19. Apr 2006, 16:11

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

Neuling
Beiträge: 78
Registriert: Di 24. Mai 2005, 14:46
Kontaktdaten:

Beitrag von Neuling » Di 30. Mai 2006, 14:33

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!

Neuling
Beiträge: 78
Registriert: Di 24. Mai 2005, 14:46
Kontaktdaten:

Beitrag von Neuling » Mi 31. Mai 2006, 10:09

Kennt keiner das Problem das die Termine nicht richtig sortiert werden? Bzw. wo muss ich ansetzten damit die Sortierung wieder passt?

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

Beitrag von Halchteranerin » Mi 31. Mai 2006, 11:24

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. :)
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Mi 31. Mai 2006, 11:35

nimm mal den neuen aktuallisierten Code aus dem Thread "Terminmodul mit allen Terminen"
greets

Neuling
Beiträge: 78
Registriert: Di 24. Mai 2005, 14:46
Kontaktdaten:

Beitrag von Neuling » Mi 31. Mai 2006, 15:20

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?

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Mi 31. Mai 2006, 15:42

Zugang per PM !
greets

Neuling
Beiträge: 78
Registriert: Di 24. Mai 2005, 14:46
Kontaktdaten:

Beitrag von Neuling » Mi 31. Mai 2006, 15:57

Zugang per PN?

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

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Mi 31. Mai 2006, 16:10

Wenn ich mal reinschauen soll, solltest du mir per PM nen Zugang schicken :wink:
greets

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Do 1. Jun 2006, 07:11

Schaue es dir jetzt mal an wenn es ok ist

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

Ansonsten per PM
greets

Neuling
Beiträge: 78
Registriert: Di 24. Mai 2005, 14:46
Kontaktdaten:

Beitrag von Neuling » Fr 2. Jun 2006, 11:16

super, danke! Funktioniert jetzt einwandfrei!

Gesperrt