Terminkalender alle Termine ausgeben(gelöst)

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

Terminkalender alle Termine ausgeben(gelöst)

Beitrag von rezeptionist »

hy,
so nun ist mein Latein am Ende, ich benutze folgendes Terminmodul

http://www.contenido.de/forum/viewtopic.php?t=2155

von Agon

Läuft gut soweit man Termine im vorraus darstellen lässt. Nun zu meinem Problem:

Ich will das alle Termine dargestellt werden also auch die verfallenen leider finde ich in dem oben genannten Thread nicht den entscheidenden Tipp wie das funktionieren soll. Habe auch schon versucht die entsprechende Stelle zu löschen was aber zu keinem nennenswerten Erfolg führte.

Hier mal mein Terminübersicht output code:

Code: Alles auswählen

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

$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,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
 for ($i=0; $i<=$anz; $i++)
 {
  if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum1"] >= $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="monat">';
    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;
   echo ' <div class="datum">'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4); // 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"> '.$termin["zeit1"][$i].' Uhr</div>';
   } elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
   {
    echo ' – '.substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4);
    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],0,0).'';
     }
    }
    echo '</div>';
   } else
   {
    echo '</div>';
   }
   $navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
   echo '
  <div class="terminort">'.urldecode($termin["ort"][$i]).'</div>
  <div class="terminart"><a class="archiv" href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></div>';
  }
 }
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
 echo ' <div class="keine">Es liegen aktuell keine Termine vor!</div>';
echo '</div></div>';
}

?>
</div> 
wie gesagt es sollen alle Termine ausgegeben werden ohne Ausnahme

Und hier mal die wie ich denke entscheidende Stelle

Code: Alles auswählen

  if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum1"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen
  {
wobei ich natürlich auch schon versucht habe diese Zeile zu löschen (inkl. der abschließenden Klammer)

Bitte um Hilfe Tipps etc.



greets
Zuletzt geändert von rezeptionist am Mi 18. Jan 2006, 02:07, insgesamt 1-mal geändert.
greets
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Re: Terminkalender alle Termine ausgeben

Beitrag von mvf »

rezeptionist hat geschrieben: Und hier mal die wie ich denke entscheidende Stelle

Code: Alles auswählen

  if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum1"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen
  {
wenn ich es recht aus dem code erlese, dann ist dieses snippet auch der code um die termineingabe nicht in der vergangeheit zu ermöglichen, wie ja auch die commentzeile besagt, hast du einen link zum gucken wie des im frontend aussieht?

kann des grad bei mir nicht testet
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

hi,

ich hab's damals auch versucht, Verschiedenes ausprobiert, aber das mit den abgelaufenen Terminen ist mir irgendwie nicht gelungen, so dass ich darauf verzichtet habe. Ich habe mir gedacht, dass es eigentlich auch nicht mehr interessiert, wann was gelaufen IST, da es eh' vorbei ist (was bei News etwas anderes ist, weil da noch etwas mehr als das Ereignis steht).
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 »

geht gerade schlecht da ich für den Kunden eine Notlösung bereitgestellt habe aber habe screen shots miot veränderungen

original code wie oben

Bild

alles wie es soll mit Monat oben und Jahr

mit der genannten Stelle gelöscht

Bild

nun zeigt er sie zwar an Aber wie man am 2ten Eintrag sieht eben nicht so wie er soll


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

Beitrag von rezeptionist »

Halchteranerin hat geschrieben:hi,

ich hab's damals auch versucht, Verschiedenes ausprobiert, aber das mit den abgelaufenen Terminen ist mir irgendwie nicht gelungen, so dass ich darauf verzichtet habe. Ich habe mir gedacht, dass es eigentlich auch nicht mehr interessiert, wann was gelaufen IST, da es eh' vorbei ist (was bei News etwas anderes ist, weil da noch etwas mehr als das Ereignis steht).
grins ja das dachte ich auch aber der Kunde will eben das auch die alten Termine weiter eingetragen bleiben bis er sie herrauslöscht da nach dem der Termin abgelaufen ist Bilder und Dokumente zum Download angeboten werden und eine verschiebung per Artikeleigenschaften kann ich Ihm nicht zumuten ansonste würde ich die abgelaufenen auch gerne in nen extra archiv navi punkt packen und ganz normal auslesen

grins aber vielleicht schaffen wir es ja diesmal


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

Beitrag von Halchteranerin »

rezeptionist hat geschrieben:ansonste würde ich die abgelaufenen auch gerne in nen extra archiv navi punkt packen und ganz normal auslesen
DAS hilft auch nicht mal! Ich wollte ja damals die archivierten Termine extra ausgeben (immer die Termine eines Jahres), aus diesem Grund brauchte ich die Aenderung, aber das Archiv ist nun als offline-Menuepunkt vorhanden (bevor ich die ganzen Termine wegschmeisse, hebe ich sie erstmal auf :wink:)
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 »

hm nun will er es eben so das er selbst bestimmt welche Termine noch bleiben sollen nur was ich nicht ganz verstehe ist eben das er nachdem ich die betreffende Zeile lösche mir nicht mehr den richtigen monat (moit Jahr) über der dunklen linie anzeigt bzw das modul doch eigentlich einfach nur die in der Kategorie vorhandenen Termine auslesen muss


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

Beitrag von Halchteranerin »

ja, das dachte ich auch, war aber wohl nicht. :o Ich weiss auch nicht mehr, was ich ausprobiert habe, und habe jetzt auch keine Zeit zum Testen, aber hast du es mal damit versucht (obwohl ich glaube, dass bei mir auch das nicht half)?

Code: Alles auswählen

if ( $termin["datum1"][$i] >= $date || $termin["datum1"][$i] < $date || $termin[$i]["datum1"] >= $date || $termin[$i]["datum1"] < $date) // alle Termine aufnehmen
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 »

habe es eben getestet aber kein Erfolg selbes aussehen wie im 2ten screenshoot oben

hm das ding bringt mich noch ins garb bzw aufs altenteil

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

Beitrag von rezeptionist »

Na gott sei Daank halten meine Dritten das aus es geht hm und bevor fragen auftauchen grins so sieht es aus

Bild

denn zusatz eintrag (die kleinen Pünktchen im screenshot im oberen Post) habe ich durch die veränderung der variable

Code: Alles auswählen

$anz=-1;
hinbekommen ansonsten nur noch die abfrage geändert

Code: Alles auswählen

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

$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=-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++;
  }
  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_DESC, 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] || $gefunden == 0 )
   {
    echo ' <div class="monat">';
    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;
   echo ' <div class="datum">'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4); // 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"> '.$termin["zeit1"][$i].' Uhr</div>';
   } elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
   {
    echo ' – '.substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4);
    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],0,0).'';
     }
    }
    echo '</div>';
   } else
   {
    echo '</div>';
   }
   $navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
   echo '
  <div class="terminort">'.urldecode($termin["ort"][$i]).'</div>
  <div class="terminart"><a class="archiv" href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></div>';
  }
 }

if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
 echo ' <div class="keine">Es liegen aktuell keine Termine vor!</div>';
echo '</div></div>';
}

?>
</div> 
Also bei mir gehts jetzt so wie ich es will vielleicht hilfts auch jemandem anderen


greets
greets
Gesperrt