Aber vielleicht habe ich ja etwas übersehen. Klärt mich auf!

Guido
ich glaube nicht, dass Du etwas uebersehen hast, zumindest ist mir Dein Problem auch aufgefallen. Ich wollte mal die Ausgabe aendern, so dass der Endtermin mit ausgegeben wird (bzw. nachschauen, ob das so sein sollte und warum das ggf. nicht klappt), bin aber noch nicht dazu gekommen. Der Termin wird auch fuer die Tage X+1, X+2 ... Y angezeigt, nur mit dem Termin X, und das ist genauso verwirrend.pinkernell hat geschrieben:Ist das so vorgesehen, dass ein Termin mit Anfangsdatum X und Enddatum Y in der Terminübersicht nur am Datum X erscheint? Eigentlich unsinnig, da dieser Termin auch für die Tage nach X gültig ist und daher angezeigt werden sollte.
Aber vielleicht habe ich ja etwas übersehen. Klärt mich auf!
Hast Du das so schon realisiert? So verwirrend wäre das nicht, wenn man für solche Mehrtagestermine, deren Anfangsdatum X vor dem aktuellen Datum liegen, wie folgt gelistet werden: "_Seit_ Datum X ..." anstelle "Datum X"Halchteranerin hat geschrieben:Ich wollte mal die Ausgabe aendern, so dass der Endtermin mit ausgegeben wird (bzw. nachschauen, ob das so sein sollte und warum das ggf. nicht klappt), bin aber noch nicht dazu gekommen. Der Termin wird auch fuer die Tage X+1, X+2 ... Y angezeigt, nur mit dem Termin X, und das ist genauso verwirrend
Ja ok, 'seit Datum X' waere die andere Moeglichkeit. Bei mir ist das zur Zeit so (wobei ich dachte, dass es beim urspruenglichen Modul auch so war, ist es denn nicht?), dass ja nur die aktuellen Termine angezeigt werden. Heute ist der 10.6. Wenn der erste Termin vom 8.-11.6 laeuft und der zweite am 25.7. stattfindet, dann steht in meiner Uebersicht:pinkernell hat geschrieben: Hast Du das so schon realisiert? So verwirrend wäre das nicht, wenn man für solche Mehrtagestermine, deren Anfangsdatum X vor dem aktuellen Datum liegen, wie folgt gelistet werden: "_Seit_ Datum X ..." anstelle "Datum X"
Finde ich sogar deshalb besser, da ein solcher Mehrtagestermin jederzeit als solcher kenntlich werden sollte. Damit man am Datum X+5 auch sieht, dass dieser Termin schon lange läuft.
Bei mir wird auch das Enddatum mit angegeben: "8.6. bis 11.6.". Wenn bei aktuellem Datum 10.6. dann "Seit dem 8.6. bis 11.6." stehen würde, dann dürfte das "Seit" auf den ersten Blick signalisieren, dass dieses Datum älter ist.Halchteranerin hat geschrieben: Ja ok, 'seit Datum X' waere die andere Moeglichkeit. Bei mir ist das zur Zeit so (wobei ich dachte, dass es beim urspruenglichen Modul auch so war, ist es denn nicht?), dass ja nur die aktuellen Termine angezeigt werden. Heute ist der 10.6. Wenn der erste Termin vom 8.-11.6 laeuft und der zweite am 25.7. stattfindet, dann steht in meiner Uebersicht:
8.6.2004 Termin 1
25.7.2004 Termin 2.
Stimmt. Da aber bei mir - und auch bei Deiner anderen Terminübersicht - auch das Enddatum angegeben wird, wäre die von mir oben skizzierte Lösung wohl sinnvoll (und mir am liebstenHalchteranerin hat geschrieben: Ich finde das deshalb verwirrend, weil derjenige, der am 10.6. auf die Seite guckt und den Termin mit dem 8.6. sieht, denken koennte, der Termin ist aus Versehen drin geblieben, und er rechnet nicht zwingend damit, dass es ein mehrtaegiger Termin ist.
Ach so ... wenn das Enddatum schon mit angegeben wird, dann sollte das doch ausreichen, oder? Wenn Du zusaetzlich noch ...pinkernell hat geschrieben: Bei mir wird auch das Enddatum mit angegeben: "8.6. bis 11.6.". Wenn bei aktuellem Datum 10.6. dann "Seit dem 8.6. bis 11.6." stehen würde, dann dürfte das "Seit" auf den ersten Blick signalisieren, dass dieses Datum älter ist.
... das aktuelle Datum mit ausgibst, dann allemal!pinkernell hat geschrieben:Ich überlege auch, an den Anfang meiner Übersichtstabelle das aktuelle Datum einzublenden: "Heute ist der 10.06.2004"
Code: Alles auswählen
<?php echo "<span class="small">Heutiges Datum:</span> "; echo "<span class="small">".date("d.m.Y")."</span>" ?>
Wenn Du das unbedingt mit dem Text 'seit dem ...' haben willst, schick mir den von Dir benutzen Quelltext per PM, ich kann mal gucken, ob ich das hingebogen kriege.pinkernell hat geschrieben: Stimmt. Da aber bei mir - und auch bei Deiner anderen Terminübersicht - auch das Enddatum angegeben wird, wäre die von mir oben skizzierte Lösung wohl sinnvoll (und mir am liebsten)
Nee. Das Problem ist ja, das der mehrtägige Termin (dessen Enddatum in der Übersicht immer dabei ist) aus der Übersicht verschwindet, sobald das Startdatum vorbei ist. Und zwar auch dann, wenn das Enddatum noch nicht erreicht ist.Halchteranerin hat geschrieben: Ach so ... wenn das Enddatum schon mit angegeben wird, dann sollte das doch ausreichen, oder?
Ach so, jetzt verstehe ich das! Ich muss das mal eben bei mir testen. In der Terminuebersicht fuer die Startseite bleibt bei mir der Termin bis zum letzten Tag drin, und bei der anderen (ausfuehrlichen) Terminuebersicht habe ich nicht darauf geachtet. Ich werde mal jetzt einen mehrtaegigen Termin eingeben und gucken, ob er noch in der Terminuebersicht auftaucht ...pinkernell hat geschrieben:Nee. Das Problem ist ja, das der mehrtägige Termin (dessen Enddatum in der Übersicht immer dabei ist) aus der Übersicht verschwindet, sobald das Startdatum vorbei ist. Und zwar auch dann, wenn das Enddatum noch nicht erreicht ist.
mhl, hast du bei dir Obiges ueberprueft?pinkernell hat geschrieben:In dem Code meiner Terminübersicht war ein "Dreher" drin, so dass die Bedingung "Enddatum >= heutiges Datum" nicht gelesen wurde.
Code: Alles auswählen
<?php
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
echo "<p class=headline>CMS_HTMLHEAD[1]</p>"; // Überschrift der Seite mit der Termin-Übersicht
echo "<font class=subheadline>CMS_HTMLHEAD[2]</font>"; // Sub-Überschrift der Seite mit der Termin-Übersicht
echo '<table border=0 cellspacing=0 cellpadding=0 width=\"100%\">';
$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid
FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND ARTLANG.idartlang = CONTENT.idartlang
AND ARTLANG.idlang = '".$lang."' AND CAT.idcat = '".$idcat."' AND CAT.idclient = '".$client."'
AND ARTLANG.online = '1' AND CATART.is_start='0'
ORDER BY ARTLANG.idart, CONTENT.typeid ASC"; // Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind
$db->query($sql);
$j=0; $anz=0;
if ($db->num_rows() != 0)
{
$termin = array(array()); // Array erzeugen, in dem die Termine abgelegt werden;
while ($j < $db->num_rows()) // alle Datensätze durchlaufen
{
$db->next_record();
if ($db->f("idart") > $termin["idart"][$anz])
{
$anz++;
}
switch ($db->f("typeid")) {
case 0: // Anfangstermin
$termin["datum1"][$anz] = $db->f("value");
$termin["jahr1"][$anz] = substr($db->f("value"),0,4);
$termin["monat1"][$anz] = substr($db->f("value"),5,2);
$termin["tag1"][$anz] = substr($db->f("value"),8,2);
$termin["idart"][$anz] = $db->f("idart");
break;
case 1: // Anfangsuhrzeit
$termin["zeit1"][$anz] = $db->f("value");
$termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz];
break;
case 2: // Endtermin
$termin["datum2"][$anz] = $db->f("value");
$termin["jahr2"][$anz] = substr($db->f("value"),0,4);
$termin["monat2"][$anz] = substr($db->f("value"),5,2);
$termin["tag2"][$anz] = substr($db->f("value"),8,2);
break;
case 3: // Enduhrzeit
$termin["zeit2"][$anz] = $db->f("value");
$termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz];
break;
case 4: // Ort
$termin["ort"][$anz] = $db->f("value");
break;
case 6: // Titel
$termin["titel"][$anz] = $db->f("value");
break;
}
$j++;
}
array_multisort ( $termin["datum1"], SORT_ASC, SORT_STRING, $termin["datum2"], SORT_ASC, SORT_STRING,
$termin["jahr1"], $termin["monat1"], $termin["tag1"], $termin["zeit1"],
$termin["jahr2"], $termin["monat2"], $termin["tag2"], $termin["zeit2"],
$termin["idart"], $termin["ort"], $termin["titel"] ); // nach Datum sortieren
for ($i=0; $i<=$anz; $i++)
{
if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum2"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen
{
if ( $termin["monat1"][$i] !== $termin["monat1"][$i-1] || $gefunden == 0 ) // überprüfen, ob Monatsnahme einzufügen ist
{
echo ' <tr>
<td colspan=6><img border="0" src="images/transparent.gif" width="100%" height="2">
</tr>
<tr>
<td colspan=6><p class="breadcrumb">';
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 '</p></td>
</tr>';
}
$gefunden=1;
echo ' <tr>
<td valign="top" width="110" height="15"><p class="text">'.$termin["tag1"][$i].'.'; // Anfangsdatum ausgeben
if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben
{
echo '</p></td><td width="80" valign="top"><p class="text"> '.$termin["zeit1"][$i].' Uhr';
} elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
{
echo ' – '.$termin["tag2"][$i].'.';
if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat
{
echo $termin["monat2"][$i].'.';
if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr
{
echo substr($termin["jahr2"][$i],2,2).'.';
}
}
echo '</p></td><td width="80"><p>';
} else
{
echo '</p></td><td valign="top"><p class="text">';
}
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
echo '</p></td>
<td><img border="0" src="images/transparent.gif" width="8" height="1"></td>
<td valign="top" width="90"><p class="text">'.urldecode($termin["ort"][$i]).'</p></td>
<td><img border="0" src="images/transparent.gif" width="8" height="1"></td>
<td valign="top" width="230"><p><a href="'.$sess->url("$navmod_link").'" class="text">'.urldecode($termin["titel"][$i]).'</a></p></td>
</tr>';
}
}
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
echo ' <tr>
<td colspan=5 class=text>Es liegen aktuell keine Termine vor!</td>
</tr>';
}
?>
</table>
Code: Alles auswählen
<?
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Terminuebersicht
* Author : agon
* Copyright : Contenido - four for business
* Created : 22-08-2002
* Modified : 22-08-2002
* Modifiziert für's Johanneum Lingen: April 2004 von GMP
************************************************/
$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="3"><h2>Zeit</h2></td>
<td colspan="2"><h2>Ort</h2></td>
<td colspan="1"><h2>Details (Klick!)</h2></td></tr>
<tr>
<td colspan=6><img src="upload/bilder/blind.gif" height="6"></td>
</tr>';
$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["datum2"][$i] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen
{
if ( $termin["monat1"][$i] !== $termin["monat1"][$i-1] || $gefunden == 0 ) // überprüfen, ob Monatsnahme einzufügen ist
{
echo '
<tr>
<td colspan=6 class="liste_1"><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 colspan=6 class="liste_2"><img src="upload/bilder/blind.gif" height="3"></td>
</tr>';
if ( $termin["datum1"][$i] < $date)
{
echo '
<tr>
<td nowrap valign="top"><p id="font">Seit '.$termin["tag1"][$i].'.'; // Anfangsdatum ausgeben
if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben
{
echo '</p></td><td nowrap valign="top"><p>'.$termin["zeit1"][$i].' Uhr';
} elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
{
echo '<br>bis '.$termin["tag2"][$i].'.';
if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat
{
echo $termin["monat2"][$i].'.';
if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr
{
echo substr($termin["jahr2"][$i],2,2).'.';
}
}
echo '</p></td><td><p>';
} else
{
echo '</p></td><td><p>';
}
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
echo '</p></td>
<td><img src="upload/bilder/blind.gif" border="0" width="8"></td>
<td valign="top"><p>'.urldecode($termin["ort"][$i]).'</p></td>
<td><img src="upload/bilder/blind.gif" border="0" width="8"></td>
<td width="65%" valign="top"><b><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></b></td>
</tr>';
}
else
{
echo'
<tr>
<td nowrap valign="top"><p id="font">'.$termin["tag1"][$i].'.'; // Anfangsdatum ausgeben
if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben
{
echo '</p></td><td nowrap valign="top"><p>'.$termin["zeit1"][$i].' Uhr';
} elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
{
echo '<br>bis '.$termin["tag2"][$i].'.';
if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat
{
echo $termin["monat2"][$i].'.';
if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr
{
echo substr($termin["jahr2"][$i],2,2).'.';
}
}
echo '</p></td><td><p>';
} else
{
echo '</p></td><td><p>';
}
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
echo '</p></td>
<td><img src="upload/bilder/blind.gif" border="0" width="8"></td>
<td valign="top"><p>'.urldecode($termin["ort"][$i]).'</p></td>
<td><img src="upload/bilder/blind.gif" border="0" width="8"></td>
<td width="65%" valign="top"><b><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></b></td>
</tr>';
}
echo '
<tr>
<td colspan=6><img src="upload/bilder/blind.gif" height="3"></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>