Problem bei der Terminüberischt

Gesperrt
B E A S T I E
Beiträge: 14
Registriert: Fr 25. Nov 2005, 18:29
Kontaktdaten:

Problem bei der Terminüberischt

Beitrag 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
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Problem bei der Terminüberischt

Beitrag 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
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!
Gesperrt