Seite 1 von 1

Problem bei der Terminüberischt

Verfasst: Sa 25. Apr 2009, 09:17
von B E A S T I E
Hallo,
ich verwende folgenden Code beider der Terminübersicht.

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=0 cellpadding=0 width=\"100%\">';

$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=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++;
  }
  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"),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/2.gif" width="100%" height="2" class="line">
</tr>
<tr>
  <td colspan=6><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 nowrap><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><p> ['.$termin["zeit1"][$i].' h]';
   } elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
   {
    echo ' –<br>  '.$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/2.gif" width="8" height="1"></td>
  <td><p id="font">'.urldecode($termin["ort"][$i]).'</p></td>
  <td><img border="0" src="images/2.gif" width="8" height="1"></td>
  <td width="65%"><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>
  <td colspan=5><b>Es liegen aktuell keine Termine vor!</b></td>
</tr>';
}
?>
</table>
aber seit heute vormittag kommt immer der folgende Fehler:
Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in /srv/www/htdocs/cms/front_content.php(770) : eval()'d code on line 196

den Fehler findet hier auf der Homepage http://www.kolping-herzogenaurach.de/cm ... p?idcat=88

Woran kann das liegen? was kann ich machen? ich habe selber nichts geändert.

Danke schon mal für Eure Hilfe

Grüsse Beastie

Re: Problem bei der Terminüberischt

Verfasst: Di 23. Jun 2009, 07:03
von Halchteranerin
Es ist schon eine Weile her, aber guckst du hier:

http://forum.contenido.org/viewtopic.ph ... nt#p103220

oder hier:

http://forum.contenido.org/viewtopic.ph ... ent#p94243

oder hier:

http://forum.contenido.org/viewtopic.ph ... ent#p88916

oder bei sonstigen Treffer von der Suche nach "Array sizes are inconsistent".

Auch wenn du nichts geändert hast: es liegt vermutlich am Provider, dass er die php-Version geändert hat. Auch ich hatte das Problem, zuletzt am 31.12.08 (ich weiß es deshalb so genau, weil unser Ortsbürgermeister mir die Fehlermeldung per E-Mail geschickt hatte), aber keine Ahnung, wie ich das behoben hatte. Ich kann dir nur die Zeilen aus dem Quelltext anbieten, in denen "array" vorkommt:

1. $termin = array (array ()); // Array erzeugen, in dem die Termine abgelegt werden;

2. $array_multisort = array ($termin["datum1"], SORT_ASC, SORT_STRING,
$termin["datum2"], SORT_ASC, SORT_STRING,
$termin["ort"],
$termin["ortdetail"],
$termin["zeit1"],
$termin["zeit2"],
$termin["idart"],
$termin["titel"]); // nach Datum sortieren

Ach, nun nützt die Modul-History doch etwas! So sah es nämlich vorher aus:
$array_multisort = ($termin["datum1"], SORT_ASC, SORT_STRING,
$termin["datum2"], SORT_ASC, SORT_STRING,
$termin["ort"],
$termin["ortdetail"],
$termin["zeit1"],
$termin["zeit2"],
$termin["idart"],
$termin["titel"]); // nach Datum sortieren