Navigation aus Datenbank

  • 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




    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



    Wenn ich dieses nun so ausgabe, dann bekomme ich schon das erste Problem


    PHP
    <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



    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.

  • Zitat

    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.


    Wenn PHP code im HTML (also im Quelltext der Seite) steht, dann wird der PHP code nicht interpretiert (nicht ausgeführt).
    Daher mein erster Verdacht auf eine .html Datei.


    Teste mal in der Datei ganz am Anfang ein <?php echo phpinfo(); ?>

  • Die ganze Seite besteht aus PHP und die Navigation wird mit


    PHP
    <?php 
     include_once 'inc.kopf.php';
     ?>


    eingebunden, also ist PHP 100% aktiviert und steht auch zur Verfügung, sonst wurden ja auch die ganzen anderen Funktionen wie das dynamische auslesen aus der Datenbank nicht funktionieren.

  • Wenn ich dieses ausführen lasse


    PHP
    <?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 } ?>



    Dann steht im Browser dieses :


    <li><a href="ueber-uns" <?php if($_SERVER['PHP_SELF'] == '/ueber-uns.php') echo 'class="active"' ?>>Über uns</a></li>


    Es wird also 1zu1 das ausgegeben was auch in der DB steht (siehe erstes Posting von mir

  • Ach, na jetz sehe ich erst was Du da machst :D
    Du kannst keinen PHP code aus einem String (db gibts Strings (Daten) zurück) ausführen.
    Genau genommen geht das (eval()) ist aber nicht zu raten, weil man evtl ein Scheunentor öffnet.


    Du solltest besser Werte in die Tabelle schreiben.

    PHP
    // anstatt:
    if($_SERVER[''PHP_SELF''] == 'index.php') echo 'class="active"'
    // in die tabelle zu schreiben, schreibst Du den Wert, der dabei raus kommt in die Tabelle
    if($_SERVER[''PHP_SELF''] == 'index.php') $wert = 'class="active"';


    also $wert (dessen Inhalt) imn die Tabelle

  • Verstehe ich ehrlich gesagt nicht so wirklich was du meinst? Denn schau dir mal den Bereich Leistungen an, da habe ich ja einen ganz anderen aufbau, wie müsste dieses dann in die DB geschrieben werden?

  • Werte:


    Wenn Du einen String erstellst wie zB:
    "echo $a;"
    Dann ist das ein String (Zeichenkette), aber kein PHP code.

  • Wir reden gerade aneinander vorbei, ist aber nicht schlimm. Ich erstelle 10 FTP Accounts so kann jeder rein und nach Belieben die Datei von Hand ändern.

  • Wieso vorbei?
    Du versuchst PHP code, der in der Datenbank in Tabellenfeldern steht, zu laden und auszuführen.
    Das geht (ohne eval()) nicht.


    Teste das mal:
    erstelle mal eine neue Datei (zB test.php)
    und kopiere das hier rein:

    PHP
    <?php
    $a = "echo 5+5;";
    echo $a;
    ?>


    Wenn Du die Datei ausführst, dann wird nicht 10 ausgegeben, sondern der String "echo 5+5;"

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!