Problem mit Terminliste

Gesperrt
ReneFFM
Beiträge: 11
Registriert: Fr 17. Feb 2006, 12:59
Wohnort: Langen D-63225
Kontaktdaten:

Problem mit Terminliste

Beitrag von ReneFFM »

Hallo,

ich habe ein kleines Problem mit der Terminliste (Modul von der Contenide Seite heruntergeladen), welches ich nicht in den Griff bekomme. Leider haben mir auch die anderen, alten Threads nicht weitergeholfen.

Wenn der code für das Sortieren der Termin so aussieht:

Code: Alles auswählen

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
bekomme ich eine Fehlermeldung wie die folgende:

Code: Alles auswählen

Warning: array_multisort(): Array sizes are inconsistent 
und die Termin sind nicht sortiert.

In einem anderen alten Thread habe ich folgendes gefunden, was angeblich den Fehler beheben soll:

Code: Alles auswählen

$array_multisort = array( 
		$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
Dies behebt aber nicht den Fehler, sondern sorgt nur dafür, dass die Fehlermeldung nicht mehr auftritt - Die Termine werden damit leider auch nicht sortiert...

So sieht es momentan aus:
http://www.realized-it-solutions.com/la ... hp?idart=5

Ich hässte gerne sortierte Termine...

Der komplette code, den ich aktuell einsetze:

Code: Alles auswählen

<?php 
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen 
$date = date("Y-m-d"); 
echo "<h1>CMS_HTMLHEAD[1]</h1>"; // Überschrift der Seite mit der Termin-Übersicht 
echo '<table border=0 cellspacing=2 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 = array( 
		$termin["datum1"], 
		$termin["datum2"], 
  		$termin["jahr1"], SORT_ASC, SORT_STRING,
  		$termin["monat1"], SORT_ASC, SORT_STRING,
  		$termin["tag1"], SORT_ASC, SORT_STRING,
  		$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 align="left" valign="top"> 
<td><img border="0" src="images/_leer.gif" width="50" height="1" class="line"> 
<td><img border="0" src="images/_leer.gif" width="70" height="1" class="line"> 
<td><img border="0" src="images/_leer.gif" width="10" height="1" class="line"> 
<td><img border="0" src="images/_leer.gif" width="100" height="1" class="line"> 
<td><img border="0" src="images/_leer.gif" width="10" height="1" class="line"> 
<td><img border="0" src="images/_leer.gif" width="300" height="1" class="line"> 
</tr> 
<tr align="left" valign="top"> 
  <td colspan=6 class="text"><b>'; 
    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 '</b></td> 
</tr>'; 
   } 
   $gefunden=1; 
   echo ' <tr align="left" valign="top"> 
  <td nowrap class="text"><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 class="text"><p>'.urldecode($termin["zeit1"][$i]).'&nbsp;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><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 border="0" src="images/_leer.gif" width="10" height="1"></td> 
  <td class="text"><p id="font">'.urldecode($termin["ort"][$i]).'</p></td> 
  <td><img border="0" src="images/_leer.gif" width="10" height="1"></td> 
  <td width="65%" class="text"><p><b><a href="'.$sess->url("$navmod_link").'" id="font">'.urldecode($termin["titel"][$i]).'</a></b></p></td> 
</tr>'; 
  } 
} 
} 
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt 
{ 
echo ' <tr align="left" valign="top"> 
  <td colspan=5 class=text><b>Es liegen aktuell keine Termine vor!</b></td> 
</tr>'; 
} 
?> 
</table> 
Ich versuche jetzt schon seit Stunden, eine Lösung zu finden, bekomme es aber nicht hin :(

Kann mir hier jemand einen Tipp geben ?

Ich nutze übrigens Version 4.6.15

Vielen Dank im Voraus
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Problem mit Terminliste

Beitrag von Dodger77 »

ReneFFM hat geschrieben:Kann mir hier jemand einen Tipp geben ?
Mit der Fehlermeldung als Suchbegriff lassen sich hier diverse Threads finden. Entweder man findet dort den richtigen um das Problem zu beheben oder man nimmt ein Modul, das zur Zeit recht aktiv weiterentwickelt wird, z.B.:

http://contenido.org/forum/viewtopic.php?t=13425
schlaucher
Beiträge: 444
Registriert: Mi 14. Sep 2005, 10:38
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von schlaucher »

ReneFFM hat geschrieben:bekomme ich eine Fehlermeldung wie die folgende:

Code:
Warning: array_multisort(): Array sizes are inconsistent
Das Problem kommt dann, wenn Du bei den einzelnen Terminen nicht alle Felder gefüllt oder zumindest definiert hast.

Versuch mal folgendes füge an den vorhandenen Code die weiteren Zeilen an:

vorhanden:

Code: Alles auswählen

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"); 
anfügen:

Code: Alles auswählen

$termin["datum2"][$anz] = '';
$termin["zeit1"][$anz] = '';
$termin["jahr2"][$anz] = '';
$termin["monat2"][$anz] = '';
$termin["tag2"][$anz] = '';
$termin["zeit2"][$anz] = '';
$termin["ort"][$anz] = '';
$termin["titel"][$anz] = '';
Dadurch werden alle Felder, die im array_multisort() angegeben sind, vorbesetzt, auch wenn Sie in der Datenbank nicht definiert wurden.

Gruß
schlaucher
ReneFFM
Beiträge: 11
Registriert: Fr 17. Feb 2006, 12:59
Wohnort: Langen D-63225
Kontaktdaten:

Re: Problem mit Terminliste

Beitrag von ReneFFM »

@Dodger77:

Danke... Habe mir jetzt die Aktuelle Version (2.4) drauf gemacht und es funktioniert.

Ich frage mich allerdings, wieso ist diese uralte Version im Downloadbereich der offiziellen Cointenido-Seite zu finden, und nicht einer dier vielen aktuelleren ???
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Problem mit Terminliste

Beitrag von Dodger77 »

ReneFFM hat geschrieben:Ich frage mich allerdings, wieso ist diese uralte Version im Downloadbereich der offiziellen Cointenido-Seite zu finden, und nicht einer dier vielen aktuelleren ???
Der Downloadbereich auf contenido.org ist halt nicht aktuell (die neuesten Module darunter sind über 2 Jahre alt), da eine neue Modulsammlung und -verwaltung in Vorbereitung ist. Zur Zeit sollte man sich einfach an die Module in diesem Forum hier halten.
Gesperrt