Terminein- und Ausgabe PHP/ SQL

Gesperrt
cmsuser
Beiträge: 3
Registriert: Sa 27. Nov 2004, 21:29
Kontaktdaten:

Terminein- und Ausgabe PHP/ SQL

Beitrag von cmsuser »

Hallo,

Das Modul Terminein - und Ausgabe funktioniert soweit. Wenn man jedoch den Artikel bezüglich der Terminzeit bzw. des Datums ändert werden diese Angaben in der Überschrift der Detailansicht nicht mehr aktualisiert. Wie kann ich dies erreichen? Ansosnten müssten die Artikel erst gelöscht und wieder neu erstellt werden, was aufwendiger wäre.


Quelltext: [auch unter http://www.contenido.de/front_dev/uploa ... usgabe.txt]



Terminübersicht:
<?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=4 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 ( $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></td>
</tr>
<tr>
<td colspan=6><h2><img src="images/dart-right.gif" border="0">&nbsp;';
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 width="65%"><p><b><a href="'. $navmod_link . '" id="font">'.urldecode($termin["titel"][$i]).'</a></b><br>'.urldecode($termin["ort"][$i]).'</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>

Modulname : Terminein- und -ausgabe
Beschreibung :

Für die Artikel des Ordners 'Termine', die nicht Startartikel sind.
Genutzt werden die css-Klassen 'klein' (für kleinere Schrift, ggf. durch 'id=font#' ersetzen), 'Input' und 'InputArea' (damit die Textfelder und Klickbuttons schöner aussehen) sowie das Tag '<h1>'.

C-Version : 4.3.x / 4.4.x


/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Terminein- und -ausgabe
* Author : agon
* Copyright : Contenido - four for business
* Created : 22-08-2002
* Modified : 22-08-2002
************************************************/

empty





/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Terminein- und -ausgabe
* Author : agon
* Copyright : Contenido - four for business
* Created : 22-08-2002
* Modified : 22-08-2002
************************************************/

<?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=\"".$cfg['path']['contenido_fullhtml']."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>Titel</td>
<td><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><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>Start-Uhrzeit <b class=klein>hh:mm</b></td>
<td><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=6 class=Input></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td>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=\"Startzeitpunkt wählen\"></a></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td>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>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>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>&nbsp;&nbsp;<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));
$wochentag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
echo "<h1>CMS_TEXT[6]</h1>
<font id=\"font\"><p>&nbsp;&nbsp;".$wochentag[$date1[wday]].", ".$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 $wochentag[$date2[wday]].", ".$datum2;
}
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" )
{
echo ', ';
}
if ( "CMS_TEXT[3]"!=="" )
{
echo "CMS_TEXT[3] Uhr";
}
}
echo "</p>
<p>&nbsp;&nbsp;<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 Übersicht</a></p>';
}

?>
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Terminein- und Ausgabe PHP/ SQL

Beitrag von emergence »

cmsuser hat geschrieben:Das Modul Terminein - und Ausgabe funktioniert soweit. Wenn man jedoch den Artikel bezüglich der Terminzeit bzw. des Datums ändert werden diese Angaben in der Überschrift der Detailansicht nicht mehr aktualisiert. Wie kann ich dies erreichen? Ansosnten müssten die Artikel erst gelöscht und wieder neu erstellt werden, was aufwendiger wäre.
erklär es bitte nochmal einfacher...
was machst du genau ?
wenn du etwas änderst passiert was ?
wie hätte das ergebniss sein sollen ?
ach ja code bitte nicht quoten... ist unlesbar...
*** make your own tools (wishlist :: thx)
Gesperrt