Next Events - Modul
@Herr B
Ja du hast ja recht aber die Lösung für mein Problem gibt es ja schon! Das Modul funktioniert ja eignetlich genauso wie die Terminübersicht und dort wurde das Problem gefixt! ich würde es ja auch selber anpassen wenn ich wüsste was "damals" bei dem anderen Modul gefixt wurde!
@Tono
Danke, geht aber auch nicht! Das gleiche PRoblem wie bei dem Modul was ich bisher verwende...
Ja du hast ja recht aber die Lösung für mein Problem gibt es ja schon! Das Modul funktioniert ja eignetlich genauso wie die Terminübersicht und dort wurde das Problem gefixt! ich würde es ja auch selber anpassen wenn ich wüsste was "damals" bei dem anderen Modul gefixt wurde!
@Tono
Danke, geht aber auch nicht! Das gleiche PRoblem wie bei dem Modul was ich bisher verwende...
Dann bitte ich Dich nochmal um eine Fehlerbeschreibung. Ich dachte es geht darum, das auf der Startseite die nächsten x Termine ausgegeben werden sollen, und dass das nicht in der richtigen Reihenfolge geschieht.
Und poste Deinen Modulcode nochmal, wenn keiner mehr weiß wie's damals gefixed worden ist, dann wirds eben jemand neu fixen.
Und poste Deinen Modulcode nochmal, wenn keiner mehr weiß wie's damals gefixed worden ist, dann wirds eben jemand neu fixen.
Also das Problem ist folgendes:
Ich verwende für meine Terminverwaltung zwei Module. Eins für die Terminein- und ausgabe und eins für eine Terminübersicht. Bei dem Modul für die Terminübersicht hatte ich das Problem das Artikel (Termine) die neu erstellt wurden immer an den Schluss angefügt wurden. Das heißt die Sortierung war falsch.
Siehe auch: http://contenido.org/forum/viewtopic.php?t=2155&start=0
Rezeptionist hat sich darufa hin das Modul angeschaut und irgendetwas gefixt. Nun funktioniert es ohne Probleme.
Genau das gleiche Problem habe ich nun mit einem anderen Modul das mir die 5 aktuellsten Termine auf der Startseite anzeigen sollte. Es zieht sich immer erst die 5 älteren Artikel.
LiveDemo:
http://www.tsv-goldbach.de/productive_s ... p?idcat=12
Auf der Startseite werden nicht die aktuellen Artikel angezeigt.
http://www.tsv-goldbach.de/productive_s ... p?idcat=86
So wäre das Ganze richtig!!!
So und hier meine verwendeten Module...
Termin Ein- und Ausgabe:
Input ist leer!
Output:
Dieses Modul funktioniert eigentlich soweit!
Terminübersicht:
Input ist leer!
Output:
Hier wurde der Fehler bereits gefixt! Aber ich weiß nicht wo und was...
Terminübersicht auf der Startseite:
Input:
Output:
Danke schon mal für eure Hilfe!
#################### EDIT
Der Output Code funktioniert jetzt! Danke Tono!
Ich verwende für meine Terminverwaltung zwei Module. Eins für die Terminein- und ausgabe und eins für eine Terminübersicht. Bei dem Modul für die Terminübersicht hatte ich das Problem das Artikel (Termine) die neu erstellt wurden immer an den Schluss angefügt wurden. Das heißt die Sortierung war falsch.
Siehe auch: http://contenido.org/forum/viewtopic.php?t=2155&start=0
Rezeptionist hat sich darufa hin das Modul angeschaut und irgendetwas gefixt. Nun funktioniert es ohne Probleme.
Genau das gleiche Problem habe ich nun mit einem anderen Modul das mir die 5 aktuellsten Termine auf der Startseite anzeigen sollte. Es zieht sich immer erst die 5 älteren Artikel.
LiveDemo:
http://www.tsv-goldbach.de/productive_s ... p?idcat=12
Auf der Startseite werden nicht die aktuellen Artikel angezeigt.
http://www.tsv-goldbach.de/productive_s ... p?idcat=86
So wäre das Ganze richtig!!!
So und hier meine verwendeten Module...
Termin Ein- und Ausgabe:
Input ist leer!
Output:
Code: Alles auswählen
<?php
if(strstr($REQUEST_URI,"changeview=edit") || $submit=="editcontent" || strstr($REQUEST_URI,"area=con_editcontent")) // Überprüfen, ob im Editiermodus aufgerufen
{
$submit="";
echo " <script language=\"JavaScript\" src=\"../contenido/scripts/calendar1.js.php?contenido=".$sess->id."\"></script>"; // Kalender einbinden
$sql = "SELECT ARTLANG.idartlang, CONTENT.idtype, CONTENT.typeid, CONTENT.value, CONTENT.idcontent
FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["content"]." AS CONTENT
WHERE ARTLANG.idart = ".$idart." AND ARTLANG.idartlang = CONTENT.idartlang
ORDER BY CONTENT.typeid ASC";
$db->query($sql); // Artikelangaben einlesen
if ($db->num_rows() != 0)
{
$termin = array();
$exists = array();
$db->next_record();
$idartlang = $db->f("idartlang");
for ($i=0; $i<$db->num_rows(); $i++)
{
if ( $db->f("idtype") == 3 )
{
$j = $db->f("typeid");
$termin[$j] = $db->f("value");
$exists[$j] = 1;
}
$db->next_record();
}
}
if($termin[6]=="") // falls noch kein Titel eingetragen, Seitentitel einlesen
{
$sql = "SELECT ARTLANG.title
FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG
WHERE ARTLANG.idart = ".$idart."";
$db->query($sql);
$db->next_record();
$termin[6] = $db->f("title");
}
if($senden==1) // falls das Terminformular abgeschickt wurde, Daten in Datenbank schreiben
{
$senden=0;
$date = date("Y-m-d H:i:s");
$author = $auth->auth["uname"];
if (strlen($datum1)==10)
{
$termin[0] = $datum1;
} else
{
$termin[0] = "";
}
$termin[1] = $zeit1;
if (strlen($datum2)==10 && $datum2 >= $datum1)
{
$termin[2] = $datum2;
} else
{
$termin[2] = "";
}
$termin[3] = $zeit2;
$termin[4] = $ort1;
$termin[5] = $ort2;
$termin[6] = $titel;
for ($i=0; $i<=6; $i++)
{
if($exists[$i]==1)
{
$sql = "UPDATE ".$cfg["tab"]["content"]."
SET value='".$termin[$i]."', lastmodified='".$date."'
WHERE idartlang = ".$idartlang." AND idtype='3' AND typeid='".$i."'";
$db->query($sql);
} else
{
$sql = "INSERT INTO ".$cfg["tab"]["content"]."
(idcontent, idartlang, idtype, typeid, value, author, created, lastmodified)
VALUES('".$db->nextid($cfg["tab"]["content"])."', '".$idartlang."', '3', '".$i."', '".$termin[$i]."', '".$author."', '".$date."', '".$date."')";
$db->query($sql);
}
}
}
// ab hier das Formular für die Editieransicht
echo "<form action=\"".$REQUEST_URI."\" method=\"post\" name=\"eintrag\">
<table border=0 cellspacing=2 cellpadding=1>
<tr>
<td align=\"left\">Titel</td>
<td align=\"left\"><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=27 class=Input></td>
</tr>
<tr>
<td nowrap>Startdatum <b class=klein>jjjj-mm-tt</b></td>
<td align=\"left\"><input type=\"text\" name=\"datum1\" value=\"".$termin[0]."\" size=11 class=Input>
<a href=\"javascript:startcal.popup('','".$cfg['path']['contenido_fullhtml']."templates/standard/');\">
<img src=\"".$cfg['path']['contenido_fullhtml']."images/calendar.gif\" width=16 height=16 border=0 alt=\"Startzeitpunkt wählen\"></a></td>
</tr>
<tr>
<td align=left>Start-Uhrzeit <b class=klein>hh:mm</b></td>
<td align=left><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=6 class=Input></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td align=left>Enddatum <b class=klein>jjjj-mm-tt</b></td>
<td><input type=\"text\" name=\"datum2\" value=\"".$termin[2]."\" size=11 class=Input>
<a href=\"javascript:endcal.popup('','".$cfg['path']['contenido_fullhtml']."templates/standard/');\">
<img src=\"".$cfg['path']['contenido_fullhtml']."images/calendar.gif\" width=16 height=16 border=0 alt=\"Endzeitpunkt wählen\"></a></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td align=left>End-Uhrzeit <b class=klein>hh:mm</b></td>
<td><input type=\"text\" name=\"zeit2\" value=\"".$termin[3]."\" size=6 class=Input></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td align=left>Ort</td>
<td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=Input></td>
<td class=klein>(erscheint <i>auch</i> in der Übersicht)</td>
</tr>
<tr>
<td align=left>Ort - Detail</td>
<td><input type=\"text\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\" size=27 class=Input></td>
<td class=klein>(erscheint <i>nicht</i> in der Übersicht)</td>
</tr>
<tr>
<td colspan=3 align=center>
<input type=\"submit\" value=\" Absenden \" class=InputButton> <input type=\"hidden\" name=\"senden\" value=1>
<input type=\"reset\" value=\" Abbrechen \" class=InputButton>
</td>
</tr>
</table>
</f"."orm>
<p>Beschreibung/Inhalte: CMS_HTML[7]</p>
<script language=\"JavaScript\">
var startcal = new calendar1(document.forms['eintrag'].elements['datum1']);
startcal.year_scroll = true;
startcal.time_comp = false;
var endcal = new calendar1(document.forms['eintrag'].elements['datum2']);
endcal.year_scroll = true;
endcal.time_comp = false;
</script>";
} else // ab hier Terminausgabe für Frontend-Ansicht bzw. Vorschau
{
$tag1 = substr("CMS_TEXT[0]",8,2);
$monat1 = substr("CMS_TEXT[0]",5,2);
$jahr1 = substr("CMS_TEXT[0]",0,4);
$tag2 = substr("CMS_TEXT[2]",8,2);
$monat2 = substr("CMS_TEXT[2]",5,2);
$jahr2 = substr("CMS_TEXT[2]",0,4);
$datum1 = $tag1.".".$monat1.".".$jahr1;
$datum2 = $tag2.".".$monat2.".".$jahr2;
$date1 = getdate(mktime(0,0,0,$monat1,$tag1,$jahr1));
$date2 = getdate(mktime(0,0,0,$monat2,$tag2,$jahr2));
switch ($date1[wday]) {
case 1: $wtag1 = "Montag"; break;
case 2: $wtag1 = "Dienstag"; break;
case 3: $wtag1 = "Mittwoch"; break;
case 4: $wtag1 = "Donnerstag"; break;
case 5: $wtag1 = "Freitag"; break;
case 6: $wtag1 = "Samstag"; break;
case 0: $wtag1 = "Sonntag"; break; }
switch ($date2[wday]) {
case 1: $wtag2 = "Montag"; break;
case 2: $wtag2 = "Dienstag"; break;
case 3: $wtag2 = "Mittwoch"; break;
case 4: $wtag2 = "Donnerstag"; break;
case 5: $wtag2 = "Freitag"; break;
case 6: $wtag2 = "Samstag"; break;
case 0: $wtag2 = "Sonntag"; break; }
echo "<h1 class=\"headline\">CMS_TEXT[6]</h1>
<font id=\"font\"><p> ".$wtag1.", ".$datum1;
if ( "CMS_TEXT[1]"!=="" )
{
echo ", CMS_TEXT[1]";
if ( "CMS_TEXT[3]"=="" )
{
echo " Uhr";
}
}
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" )
{
echo " – ";
if ( strlen($datum2)==10 )
{
echo $wtag2.", ".$datum2;
}
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" )
{
echo ', ';
}
if ( "CMS_TEXT[3]"!=="" )
{
echo "CMS_TEXT[3] Uhr";
}
}
echo "</p>
<p> <b>CMS_TEXT[4]</b>";
if ( "CMS_TEXT[5]" )
{
echo ", CMS_TEXT[5]";
}
echo "</p>
<p><br>CMS_HTML[7]</p></font>";
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."";
echo '<p><br><a href="'.$sess->url("$navmod_link").'" id="font">Zurück zur Terminübersicht</a></p>';
}
?>
Terminübersicht:
Input ist leer!
Output:
Code: Alles auswählen
<?php
//Eigene Anpassung
$absatz=0;
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
echo '<table border=0 cellspacing=0 cellpadding=0 width="100%">';
echo "<tr><td colspan=2 class=\"headline\">CMS_HTMLHEAD[1]</td></tr>"; // Überschrift der Seite mit der Termin-Übersicht
echo "<tr><td colspan=2 class=\"subheadline\">CMS_HTMLHEAD[2]</td></tr>"; // Weiterer Text
echo '<tr><td colspan=2> </td></tr>'; // Leerzeile vor der Termin-Übersicht
$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' AND CONTENT.idtype = '3'
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 ($db->next_record()) { // alle Datensätze durchlaufen
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,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;
}
}
}
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 || $termin[$i]["datum2"] <= $date || $termin[$i]["datum2"] <= $date ) { // nur Termine, die noch aktuell sind, aufnehmen
if ( $termin["monat1"][$i] !== $termin["monat1"][$i-1] || $termin["jahr1"][$i] !== $termin["jahr1"][$i-1] || $gefunden == 0 ) { // überprüfen, ob Monatsnahme einzufügen ist
$farbe=0;
if ( $gefunden == 1 )
{
$absatz=1;
echo '</table>';
}
echo '<table width="100%" border="0" cellspacing="0" cellpadding="5" class="text">
<tr>
<td colspan="2" class="headline" style="border: 1px; border-left: 0px; border-right:0px; border-color: #000000; border-style: solid; background-color: #EEEEEE">';
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 '</tr>';
}
$gefunden=1;
echo ' <tr';
if ( $farbe == 1 )
{
echo ' bgcolor="#EEEEEE"';
}
echo '>';
echo '<td colspan="2" width="490" valign="top" class="eventtitle" align="left">'.urldecode($termin["titel"][$i]).'</td>
</tr>';
echo ' <tr';
if ( $farbe == 1 )
{
echo ' bgcolor="#EEEEEE"';
}
echo '>
<td colspan="2" valign="top" width="100" align="left"><b>Datum: </b>'.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].' Uhr';
}
if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 || strlen($termin["zeit2"][$i]) >1 )
{
echo ' <b>bis</b> ';
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].' Uhr';
}
}
echo '</td></tr>';
if ( strlen($termin["ort"][$i]) > 1 )
{
echo ' <tr';
if ( $farbe == 1 )
{
echo ' bgcolor="#EEEEEE"';
}
echo '>
<td colspan="2"><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"><b>Ansprechperson/Details:</b> '.urldecode($db->f("value")).'</td>
</tr>';
}
if ( $farbe == 0 ) { $farbe=1; } else { $farbe=0; }
}
if ( $absatz == 1 )
{
echo '<br>';
$absatz=0;
}
}
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
echo ' <tr>
<td colspan=2><b>Es liegen aktuell keine Termine vor!</b></td>
</tr>';
}
?>
</table>
Terminübersicht auf der Startseite:
Input:
Code: Alles auswählen
// selected category
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr>
<td>Überschrift</td>
<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td>
</tr>
<tr valign=\"top\">
<td>Kategorie wählen:</td>
<td>
<select name=\"CMS_VAR[0]\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
$cfg["tab"]["cat"]." AS B, ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
"AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
"AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
Code: Alles auswählen
<?php
$navmod_id = ((int) "CMS_VALUE[0]" == 0) ? $idcat : (int) "CMS_VALUE[0]";
$gefunden = 0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\" style=\"border: 1px; border-color: #c0c0c0; border-style: solid\">";
echo "<caption style=\"font-family:sans-serif;font-size:11px;color:000;white-space:nowrap;background:#c0c0c0;color:#fff;font-weight:bold;margin-bottom:0.3em;padding:0.2em\">Coming soon...</caption>";
//echo "<tr><td style=\"border: 1px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px\" class=\"headline\" colspan=\"2\">CMS_VALUE[1]</td></tr>"; //Überschrift der Termin-Übersicht
// Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind * nur contenido 4.4.x
$sql = "SELECT
ARTLANG.idart,
ARTLANG.idartlang,
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 = '" . $navmod_id . "' AND
CAT.idclient = '" . $client . "' AND
ARTLANG.online = '1' AND
CATART.is_start='0'
ORDER BY
ARTLANG.idart,
CONTENT.typeid ASC";
$db->query($sql);
$j = 0;
$anz = -1;
if ($db->num_rows() > 0) {
$termin = array (
array ()
); // Array erzeugen, in dem die Termine abgelegt werden;
while ($db->next_record()) { // alle Datensätze durchlaufen
if ($db->f("idart") > $termin["idart"][$anz]) {
$anz++;
}
if (isStartArticle($db->f("idartlang"), $navmod_id, $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, 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;
}
}
}
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["datum2"][$i] >= $date) // nur Termine, die noch aktuell sind, aufnehmen
{
$gefunden++;
echo ' <tr>';
echo '
<td valign="top" width="40" class="text"><b>' . substr($termin["datum1"][$i], 8, 2) . '.' . substr($termin["datum1"][$i], 5, 2) . '.' . substr($termin["datum1"][$i], 0, 4);
$navmod_link = "front_content.php?client=" . $client . "?=" . $lang . "&idcat=" . $navmod_id . "&idart=" . $termin["idart"][$i] . "";
echo '</b></td></tr><tr>
<td valign="top" class="text"><a class="text" href="' . $sess->url("$navmod_link") . '" id="font">' . urldecode($termin["titel"][$i]) . '</a></td>
</tr>';
}
/*Untenstehend ist die gewünschte Anzahl der anzuzeigenden Termine ggf. anzupassen.
In diesem Fall werden 5 Termine aufgelistet. */
if ($gefunden == 5)
break;
}
}
if ($gefunden == 0) // falls kein aktueller Termin vorliegt
{
echo ' <tr>
<td colspan=2 class=\"text\"><b>Es liegen aktuell keine Termine vor!</b></td>
</tr>';
}
echo "</table>";
?>
#################### EDIT
Der Output Code funktioniert jetzt! Danke Tono!
Zuletzt geändert von Neuling am Di 11. Jul 2006, 09:02, insgesamt 1-mal geändert.
Wo passiert denn das sortieren?? Mit array_multisort(). Jetzt schau dir mal die beiden Zeilen an, in dem Modul das funktioniert und in dem das nicht fuktioniert.
Fällt was auf??????
In dem Modul das nicht funktioniert ist die richtige Zeile auskommentiert, und dafür wird da ein Array mit dem Namen $array_multisort erstellt, in das irgendein Unsinn kopiert wird, das aber nie mehr abgefragt wird.
array_multisort() ist eine Funktion. s.a. http://de2.php.net/manual/de/function.a ... tisort.php
Fällt was auf??????
In dem Modul das nicht funktioniert ist die richtige Zeile auskommentiert, und dafür wird da ein Array mit dem Namen $array_multisort erstellt, in das irgendein Unsinn kopiert wird, das aber nie mehr abgefragt wird.
array_multisort() ist eine Funktion. s.a. http://de2.php.net/manual/de/function.a ... tisort.php
Das habe ich mur auch schon gedacht!
Ich habe die Zeilen:
durch diese Ersetzt:
Das einzigste was sich ändert ist das ich ejtzt eine " array_multisort() Exception" bekomme! An der Sortierung ändert sich gar nichts! Der Fehler muss wo anders liegen!
Ich habe die Zeilen:
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
$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"]
);
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
Wenn array_multisort() eine Exception ausgibt, dann heißt das, dass es seine Arbeit nicht tun kann. Deshalb sind die Arrays natürlich nicht sortiert.
Wenn Du solche Fehlermeldungen ins Forum schreibst, solltest Du auch darauf achten anzugeben welche Exception Du erhälst. Das kannst Du im Zweifelsfall im Errorlog unter Administration->System nachschauen.
In deinem Fall müsste es sich um eine "inconsistent Array Sizes" gehandelt haben. Folgende 2 Fehler sind noch in Deinem Code:
1. in das SQL-Statement zwischen SELECT und FROM einfügen:
2. in der Zeile
$idcat durch $navmod_id ersetzen.
Ist beides übrigens in dem Modul auf das ich hingewiesen habe ersichtlich.
Wenn Du solche Fehlermeldungen ins Forum schreibst, solltest Du auch darauf achten anzugeben welche Exception Du erhälst. Das kannst Du im Zweifelsfall im Errorlog unter Administration->System nachschauen.
In deinem Fall müsste es sich um eine "inconsistent Array Sizes" gehandelt haben. Folgende 2 Fehler sind noch in Deinem Code:
1. in das SQL-Statement zwischen SELECT und FROM einfügen:
Code: Alles auswählen
ARTLANG.idartlang,
Code: Alles auswählen
if (isStartArticle($db->f("idartlang"), $idcat, $lang) == FALSE) {
Ist beides übrigens in dem Modul auf das ich hingewiesen habe ersichtlich.
ok, schade! Jetzt bekomme ich doch wieder eine Exception!
Eintrag aus dem Log:
Ich habe seit dem eignetlich nur einen Artikel der verändert/überarbeitet und einen neuen hinzugefügt der aber in dieser Anzeige nicht angezeigt wird (anderes Modul)
Wo liegt mein Fehler?
Eintrag aus dem Log:
Code: Alles auswählen
[11-Jul-2006 10:20:36] PHP Warning: array_multisort(): Array sizes are inconsistent in /home/www/web10/html/productive_system/cms/front_content.php(793) : eval()'d code on line 982
Wo liegt mein Fehler?
Das Problem liegt wahrscheinlich daran, dass von den im array_multisort gelisteten Feldern eines oder mehrere leer sind. Wenn alle Felder die dort sortiert werden Inhalte haben, kann der array_multisort durchlaufen.
Ich habe leider momentan auch keine Lösung für dieses Problem, vielleicht hat jemand eine Idee?
Ich habe leider momentan auch keine Lösung für dieses Problem, vielleicht hat jemand eine Idee?
Gruss,
Michael
"Keep on riding this Bike!" (Jackson Mulham)
Michael
"Keep on riding this Bike!" (Jackson Mulham)
wenn sie leer sind kann man mittels $array = array_filter($array) die leeren einträge entfernen.
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Füg nochmal in die WHERE-Klausel des SQL-Statements ein.
Grundlegend kann man sagen der Code der Terminübersicht, die ja funktioniert, und der Terminteaserseite muss exakt identisch sein, bis auf die echo-Anweisungen zur Ausgabe und der Zeile
Vielleicht kannst Du dann noch verbliebene Fehler leichter selbst finden.
Code: Alles auswählen
AND CONTENT.idtype = '3'
Grundlegend kann man sagen der Code der Terminübersicht, die ja funktioniert, und der Terminteaserseite muss exakt identisch sein, bis auf die echo-Anweisungen zur Ausgabe und der Zeile
Code: Alles auswählen
if ($gefunden == 5)
break;