Hallo,
kann sein dass ich mich an einer Stelle etwas vertan habe, aber mit meinem Vorhaben komme ich so glaube ich nicht weiter.
Mein Navigation sieht derzeit wie folgt aus
<?php
$seite = explode("/", $_SERVER['REQUEST_URI']);
if($seite[1] == 'leistung'):
$bereich = $seite[2];
endif;
$__php_self = array();
$__php_self[] = 'wachdienst';
$__php_self[] = 'event-veranstaltungsschutz';
$__php_self[] = 'gastronomieabsicherung';
$__php_self[] = 'baustellensicherung';
$__php_self[] = 'kaufhausdetektive-doorman';
?>
Alles anzeigen
<header class="logo">
<h1>CDS group</h1>
<a href="index"><img src="img/design/logo.png" alt="Logo - CDS group"></a>
</header>
<nav class="firstnav">
<ul>
<li><a href="index" <?php if($_SERVER['PHP_SELF'] == '/index.php') echo 'class="active"' ?>>Startseite</a></li>
<li><a href="leistung/wachdienst" <?php echo (in_array($bereich,$__php_self)?'class="active"':NULL) ?>>Leistungen</a></li>
<li><a href="referenzen" <?php if($_SERVER['PHP_SELF'] == '/referenzen.php') echo 'class="active"' ?>>Referenzen</a></li>
<li><a href="kontakt" <?php if($_SERVER['PHP_SELF'] == '/kontakt.php') echo 'class="active"' ?>>Kontakt</a></li>
</ul>
</nav>
Alles anzeigen
Diese steht so statisch in einer PHP Datei drin. Da an diesem Projekt zwei weitere Menschen mitarbeiten wollte ich die Navigation in die Datenbank erlagern, hab dazu eine kleine Funktion geschrieben
function top_nav($mysqli) {
$stmt = $mysqli->prepare("SELECT nav_id, nav_titel, nav_url, nav_zusatz, nav_wo, nav_status FROM web_navigation WHERE nav_wo=? AND nav_status=?");
$wo = "kopf";
$status = "1";
$stmt->bind_param("ss", $wo, $status);
$stmt->execute();
$stmt->bind_result($nav_id, $nav_titel, $nav_url, $nav_zusatz, $nav_wo, $nav_status);
while ($stmt->fetch()){
$top_navigation[] = array(
'nav_id' => $nav_id,
'nav_titel' => $nav_titel,
'nav_url' => $nav_url,
'nav_zusatz' => $nav_zusatz,
'nav_wo' => $nav_wo,
'nav_status' => $nav_status
);
}
return $top_navigation;
}
Alles anzeigen
Wenn ich dieses nun so ausgabe, dann bekomme ich schon das erste Problem
<nav class="firstnav">
<ul>
<?php
$top_navigation = top_nav($mysqli);
foreach($top_navigation as $array){ ?>
<li><a href="<?php echo $array['nav_url'];?>" <?php echo $array['nav_zusatz'];?>><?php echo $array['nav_titel'];?></a></li>
<?php } ?>
</ul>
</nav>
und zwar mit mein PHP Code der aus der Datenbank kommt nicht ausgeführt sondern wie HTML ausgeben, sprich wenn ich im Quellcode schaue steht dieser 1zu1 da. Diesen benötige ich ja um meine Navigation aktiv zu gestallten.
Meine Datenbank sieht so aus
CREATE TABLE IF NOT EXISTS `web_navigation` (
`nav_id` int(11) NOT NULL,
`nav_titel` varchar(200) NOT NULL,
`nav_url` varchar(200) NOT NULL,
`nav_zusatz` varchar(200) NOT NULL,
`nav_wo` varchar(20) NOT NULL,
`nav_status` enum('0','1') NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
--
-- Daten für Tabelle `web_navigation`
--
INSERT INTO `web_navigation` (`nav_id`, `nav_titel`, `nav_url`, `nav_zusatz`, `nav_wo`, `nav_status`) VALUES
(1, 'Startseite', 'index', 'if($_SERVER[''PHP_SELF''] == ''/index.php'') echo ''class="active"''', 'kopf', '1'),
(2, 'Über uns', 'ueber-uns', '<?php if($_SERVER[''PHP_SELF''] == ''/ueber-uns.php'') echo ''class="active"'' ?>', 'kopf', '1'),
(3, 'Leistungen', 'leistung/wachdienst', '<?php echo (in_array($bereich,$__php_self)?''class="active"'':NULL) ?>', 'kopf', '1'),
(4, 'Referenzen', 'referenzen', '<?php if($_SERVER[''PHP_SELF''] == ''/referenzen.php'') echo ''class="active"'' ?>', 'kopf', '1'),
(5, 'Kontakt', 'kontakt', '<?php if($_SERVER[''PHP_SELF''] == ''/kontakt.php'') echo ''class="active"'' ?>', 'kopf', '1'),
(6, 'Impressum', 'impressum', '', 'u_rechts', '1'),
(7, 'AGB', 'agb', '', 'u_rechts', '1');
Alles anzeigen
Die Frage ist nun kann ich meine Navigation gar nicht in die Datenbank legen? Würde gerne ungern jedem FTP Zugang geben der an der Navigation bauen möchte. Alternativ müsste ich wohl das Array und die activ Funktion anderes gestallten, weiß aber ehrlich gesagt nicht wie, hab es bis jetzt immer so gelernt wie ich es hier umgesetzt habe. Vielleicht habt ihr eine Lösung für mich.