Seite 1 von 1

Probleme mit einem Terminmodul

Verfasst: So 27. Aug 2006, 19:04
von henning83
Hallo!

ich habe vor kurzem wieder begonnen ein projekt
weiter zu bearbeiten was ich zwecks zeitmangel auf eis
legen musste...
jetzt bin ich auf ein problem mit dem terminmodul
von der halchteranerin

Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent

ist der fehler den er mir beim aufruf der uebersichtsseite ausspuckt...

Code: Alles auswählen

<?php
$gefunden=0; // um zu Ueberpruefen, ob ueberhaupt Termine vorliegen
$date = date("Y-m-d");
echo '<table border=0 cellspacing=0 cellpadding=0 width="100%" class="termin_table">';
echo "<tr><td colspan=2 class=\"termin_praetext\">CMS_HTML[1]</td></tr>"; // Weiterer Text
echo '<tr><td colspan=2>&nbsp;</td></tr>'; // Leerzeile vor der Termin-Uebersicht

$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 (= Terminuebersicht) 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 Datensaetze 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["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");
   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 5: // Ortdetail
    $termin["ortdetail"][$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["ort"], $termin["ortdetail"],
  $termin["zeit1"], $termin["zeit2"], $termin["idart"], $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 ( substr($termin["datum1"][$i],5,2) !== substr($termin["datum1"][$i-1],5,2) || $gefunden == 0 ) // Ueberpruefen, ob Monatsnahme einzufuegen ist
   {
    $farbe=0;
    if ( $gefunden == 1 )
    {
     echo '      </table>';
    }
    echo '      <table width="600" border="0" cellspacing="0" cellpadding="5" class="text" align="center">
 <tr height="10px;"><td></td></tr>
        <tr height="20">
          <td colspan="2" class="termin_headline">';
    switch (substr($termin["datum1"][$i],5,2)) {
     case 1: echo "Januar"; break;
     case 2: echo "Februar"; break;
     case 3: echo "M&auml;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 ' '.substr($termin["datum1"][$i],0,4).'</td>
        </tr>';
   }
   $gefunden=1;
   echo '        <tr';
   if ( $farbe == 1 )
   {
    //echo ' bgcolor="#EEEEEE"';
   }
   echo '>
          <td valign="top" width="100" align="left" class="termin_date_time">'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4);
   if ( strlen($termin["zeit1"][$i]) >1 )
   {
    echo ', '.$termin["zeit1"][$i].'&nbsp;Uhr';
   }
   if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 || strlen($termin["zeit2"][$i]) >1 )
   {
    echo '-<br>';
    if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 )
    {
     echo substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4);
     if ( strlen($termin["zeit2"][$i]) >1 )
     {
      echo ', ';
     }
    }
    if ( strlen($termin["zeit2"][$i]) >1 )
    {
     echo $termin["zeit2"][$i].'&nbsp;Uhr';
    }
   }
   echo '</td>
          <td width="490" valign="top" align="left" class="termin_title">'.urldecode($termin["titel"][$i]).'</td>
        </tr>';
   if ( strlen($termin["ort"][$i]) > 1 )
   {
    echo '        <tr';
    if ( $farbe == 1 )
    {
     //echo ' bgcolor="#EEEEEE"';
    }
    echo '>
           <td colspan="2" class="termin_ort"><b>Ort:</b> '.urldecode($termin["ort"][$i]).'</td>
         </tr>';
   }
   $sql2 = "SELECT CONTENT.value
    FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
    WHERE ARTLANG.idart = ".$termin["idart"][$i]." AND ARTLANG.idartlang = CONTENT.idartlang AND CONTENT.typeid = '7'";
   $db->query($sql2);
   if ($db->num_rows() != 0)
   {
    echo '        <tr';
    if ( $farbe == 1 )
    {
     //echo ' bgcolor="#EEEEEE"';
    }
    $db->next_record();
    echo '>
           <td colspan="2" class="termin_details"><b>Details:<br></b> '.urldecode($db->f("value")).'</td>
         </tr>';
   }
   if ( $farbe == 0 ) { $farbe=1; } else { $farbe=0; }
  }
 }
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
 echo ' <tr>
  <td colspan=2 class="termin_details"><b>Es liegen aktuell keine Termine vor!</b></td>
 </tr>';
}
?>
      </table>
das ist der entsprechende code des moduls bei dem der fehler auftritt...

kann mir da jemand weiterhelfen?

vielen dank im voraus
gruß

Verfasst: So 27. Aug 2006, 19:13
von i-fekt
Da sind Felder leer die der Array sortiern will.

Verfasst: So 27. Aug 2006, 21:26
von henning83
gibt es eine möglichkeit die sortierung die das multisort
durchführt anders zu realisieren?

ich hab das multisort erstmal rausgenommen, aber sobald mehrere
termine drinstehen wird es wohl kritisch...

das komische ist, dass es bis zum heutigen tage funktioniert hat...
erst als ich heute einen termin eingetragen habe meckerte er rum...

gruß

Verfasst: So 27. Aug 2006, 21:58
von henning83
hmmm.... :oops:

ich konnte mein problem nun lösen...
scheinbar gab es schon andere die dieses multisort-problem hatten...
es ist eben doch hilfreich die suchfunktion zu verwenden...

gruß

Verfasst: Mo 28. Aug 2006, 07:36
von Halchteranerin
henning83 hat geschrieben:es ist eben doch hilfreich die suchfunktion zu verwenden...
Einsicht ist der erste Weg zur Besserung. :wink: