ich verwende die folgende Service Navi:
Input
Code: Alles auswählen
/***********************************************
* INPUT
************************************************/
// selected category
$selected = "CMS_VALUE[4100]";
$selected2= "CMS_VALUE[4101]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr valign=\"top\">
<td class=\"text_medium\">Kategorie wählen, deren Unterkategorien<br> angezeigt werden sollen:</td>
<td class=\"text_medium\">
<select class=\"text_medium\" name=\"CMS_VAR[4100]\">";
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>
<tr valign=\"top\">
<td class=\"text_medium\">Zurückkategorie wählen:</td>
<td class=\"text_medium\">
<select class=\"text_medium\" name=\"CMS_VAR[4101]\">";
if($selected2!="0" && $selected2!=""){
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 ($selected2 == $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
/***********************************************
* OUTPUT
************************************************/
include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");
// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************
// SQL-Injection Überprüfungen und Work-Arounds
// lokale Variabeln initialisieren um Injections zu unterbinden
$db2 = "";
$catStart = "";
$catPrev = "";
$sTmpStr = "";
$db2_sql = "";
$catIds = "";
$key = "";
$val = "";
$sql = "";
// ****************************************************************************************************
// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;
// Hole aus der Artikeldefinition die Ausgewählte Navigationsebene
$catStart = "CMS_VALUE[4100]";
$catPrev = "CMS_VALUE[4101]";
// * get catPrec Category and output CatName as [ BackTo ] nav item
if ($catStart != "") {
$sTmpStr = "";
// Datenbankabfrage ( SQL QUERY ) aufbauen
$sql = "SELECT
CAT.idcat AS idcat,
name
FROM
".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$catPrev."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";
// Datenbankabfrage durchführen
$db->query($sql);
// die einzelnen Recordsets der Datenbankabfrage durchgehen
while ( $db->next_record() ) {
// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . '<a class="navi" href="front_content.php?idcat='.$db->f("idcat").'">Zurück zu '.$db->f("name").'</a>';
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . ' | <a class="navi" href="front_content.php?idcat='.$db->f("idcat").'">Zurück zu '.$db->f("name").'</a>';
} // end if
} // end while
$db2_sql = " SELECT
*
FROM ". $cfg["tab"]["cat"] ." AS A
WHERE
A.parentid = ". $catStart . "
ORDER BY A.preid
";
// Abfrage ausführen
$db2->query($db2_sql);
// Ermittlung aller Kategorie IDs der ausgesuchten
// Navigationsebene und speicherug in einem Array
while ( $db2->next_record() ) {
// $catIds[] = $db2->f("idcat");
$test_1[$db2->f("preid")] = $db2->f("idcat");
}
/*
PREID => IDCAT ( $test_1 )
Array (
[0] => 50
[26] => 27
[27] => 28
[28] => 29
[29] => 30
[30] => 31
[31] => 32
[32] => 33
[33] => 38
[34] => 35
[35] => 36
[36] => 37
[38] => 34
[50] => 26
)
------------------------------------
*/
// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";
for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
$ires = $test_1[$lpre];
$test_3[] = $test_1[$lpre];
$lpre = $ires;
}
// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------
// Überprüfung ob $catIds wirklich ein Array ist
if ( is_array($catIds) ) {
// die einzelnen IDs durchgegen
foreach($catIds as $key=>$val) {
// Datenbankabfrage ( SQL QUERY ) aufbauen
$sql = "SELECT
CAT.idcat AS idcat,
name
FROM
".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";
// Datenbankabfrage durchführen
$db->query($sql);
// die einzelnen Recordsets der Datenbankabfrage durchgehen
while ( $db->next_record() ) {
// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . '<a class="subnavi" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>';
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . ' | <a class="subnavi" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>';
} // end if
} // end while
} // end foreach
// Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
echo ' ' . $sTmpStr;
} // end if (is_array)
}
?>
Hatte eine Lösung für eine Standard-Navi schon gesehen, doch diese lässt sich leider nicht auf meine Seite anwenden (bzw. die Parameter in dem Output Code von meiner Service-Navi sind ganz andere).
Ich würde mich sehr über Hilfe freuen.
meine Seite:
http://www.elektrisch-sampler.de/cms