Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-Menue

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP-Menue

    Ich würd gern ein kleines CMS System für meine HP schreiben das klappt auch soweit, nur komm ich mit dem Menue nicht klar.

    Folgende mySQL-Datenbankstruktur ist angelegt:
    wbbx_sitecat --> id, uid, name, extern, inhalt, druck

    Ich möchte ein Menue bei dem die aktuell aufgerufene Seite (id) in einer anderen Farbe erscheint und eventuelle unterseiten (uid) leicht versetzt unter diesem Menuepunkt angezeigt werden. Das sollte auch über mehrere Ebenen gehen. Wenn bei extern etwas eingetragen ist sollte ein externer Link aufgerufen werden, wenn bei inhalt etwas eingetragen ist sollte dieser rechts neben dem Menue angezeigt werden. Soweit so gut, nur wie mach ich das Menue ?

    Achja, ich will möglichst keinen html Code in der Datei, das ganze soll über templates laufen

    MfG Adm. Harry Scott
    The very young do not always do as they are told.
    (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
    [Stargate: Die Macht der Weisen / The Nox]

  • #2
    wie sollen die (internen) Seiten ausgewählt werden? über die id oder über ein anderes Feld?

    wie tief soll die struktur laufen (ich mach es jetzt erstmal unendlich - ich hoffe das ich das diesmal zum laufen bekomme )?

    Meld dich einfach mal per ICQ - maybe kann ich ja helfen


    EDIT: Du wirst ein Feld einfügen müssen das definiert ob ein Feld eine Kategorie oder ein Link ist
    Zuletzt geändert von der Eine; 06.05.2003, 20:12.

    Kommentar


    • #3
      Original geschrieben von der Eine
      wie sollen die (internen) Seiten ausgewählt werden? über die id oder über ein anderes Feld?
      es sollte nach möglichkeit alles in einer Datei stehen die site.php?id=x aufgerufen wird.

      Original geschrieben von der Eine
      wie tief soll die struktur laufen (ich mach es jetzt erstmal unendlich - ich hoffe das ich das diesmal zum laufen bekomme )?
      5 Ebenen sollten reichen

      Original geschrieben von der Eine
      Meld dich einfach mal per ICQ - maybe kann ich ja helfen
      OK, ich meld mich sobald ich Zeit hab

      Original geschrieben von der Eine
      EDIT: Du wirst ein Feld einfügen müssen das definiert ob ein Feld eine Kategorie oder ein Link ist
      Eigentlich sollte jeder Link eine Seite aufrufen, sodass die Kategoriepunkte auch nur Links wären

      Achja: nach möglichkeit will ich beim Datenbankzugriff und bei den Templates auf das wbb (2.1) zurückgreifen. Das mit der Datenbank dürfte kein Problem sein da ich schon ein paar externe Scripts über die global.php des Forums laufen hab. Das Templatesystem müsste auch auf diese Weisezugänglich sein.

      EDIT: So sieht das Ausgabescript bisher aus, es fehlt nur das Menue

      Ich habe die Datenbankstruktur ausserdem auf
      id, name, uid, data
      geändert. Also die unterscheidung fällt weg, es muss nur noch die site.php mit der jeweiligen id geladen werden

      PHP-Code:
      <?php
      $filename
      ="site.php";
      require(
      "./global.php");

      $id=$_GET["id"];

      $result=$db->query_first("SELECT * FROM site_menue WHERE id=$id");
      $data=$result[data];
      eval(
      "\$tpl->output(\"".$tpl->get("site")."\");");
      ?>
      Zuletzt geändert von Adm. Harry Scott; 06.05.2003, 21:59.
      The very young do not always do as they are told.
      (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
      [Stargate: Die Macht der Weisen / The Nox]

      Kommentar


      • #4
        PHP-Code:
        <?php

         $db 
        = @MYSQL_CONNECT("localhost","root","") or die ("Konnte keine Verbindung zur Datenbank herstellen".mysql_error($db));
           
        mysql_select_db("test");

        function 
        getsub($rowx){
        global 
        $line;
         
        $resulta=mysql_query("SELECT * FROM wbbx_sitecat WHERE `uid`='".$rowx['id']."'");
          while(
        $rowa=mysql_fetch_array($resulta)){
            if(
        $rowa['extern'] != ""){
              
        $line .= " externe Seite|";
              
        //Prozedur für externe Seiten
            
        }
            if(
        $rowa['extern'] == ""){
              
        $line .= " normaler Link|";
              
        //Prozedur für Link
              
        }
            
        getsub($rowa);
          }
        }

        $result=mysql_query("SELECT * FROM wbbx_sitecat WHERE uid='0'");
        while (
        $row=mysql_fetch_array($result)){
        if(
        $row['extern']!=""){
        $line="<br>externe Seite<br>";
        //Prozedur für externe Seiten
        }
        if(
        $row['extern']==""){
        $line="<br>normaler Link<br>";
        //Prozedur für Link
        }
         
        getsub($row);

        $code.=$line;
        }
        echo 
        $code;
        ?>
        Ich hab jetzt mal ein Script geschrieben das ohne das WBB läuft (hab bei mir kein 2.1 rumliegen )
        Wenn du es angepasst brauchst mach ich mich morgen dran - allerdings absolut ohne Funktionsgarantie da ich nicht testen kann

        ich bin jetzt u.a. auch net sicher ob du eine neue Verbindung zur DB aufbauen musst oder die aktive vom Board nutzen kannst , wie gesagt ich hab null Ahnung vom Code des WBB 2.1

        Kommentar


        • #5
          Original geschrieben von der Eine
          Ich hab jetzt mal ein Script geschrieben das ohne das WBB läuft (hab bei mir kein 2.1 rumliegen )
          Wenn du es angepasst brauchst mach ich mich morgen dran - allerdings absolut ohne Funktionsgarantie da ich nicht testen kann

          ich bin jetzt u.a. auch net sicher ob du eine neue Verbindung zur DB aufbauen musst oder die aktive vom Board nutzen kannst , wie gesagt ich hab null Ahnung vom Code des WBB 2.1
          Auch egal das das 2.1 net rumliegen hast, ich werd das Script morgen mal ausprobieren, jetzt muss ich mich erstmal um anders kümmern

          EDIT : Scheint soweit zu funzen, nur gibt er kein Menue aus
          Derzeitiger Code:

          PHP-Code:
          <?php
          $filename
          ="site.php";
          require(
          "./global.php");

          $uid="0";
          $line="";
          $id $_GET["id"];

          function 
          getsub($rowc$rowx){ 
          global 
          $line
          $resulta=$db->query_first("SELECT * FROM site_menue WHERE id=$rowx[id]");
          while(
          $rowa=mysql_fetch_array($resulta)){ 
          if(
          $rowa[extern] == ""){ 
          $line=$line+" <a href='site.php?$rowa[id]'>$rowa[name]</a><br />"
          }
          else

          $line=$line+" <a href='$rowa[href]'>$rowa[name]</a><br />"

          getsub($rowa); 

          $resultc=$db->query_first("SELECT * FROM site_menue WHERE uid=$uid");
          while(
          $rowc=mysql_fetch_array($resultc)){ 
          if(
          $rowc[extern]==""){ 
          $line=$line+"<a href='site.php?$rowc[id]'>$rowc[name]</a><br />";

          else

          $line=$line+"<a href='$rowc[href]'>$rowc[name]</a><br />";  

          getsub($rowc); 
          }
          }

          $menue=$line
          $resultb=$db->query_first("SELECT * FROM site_menue WHERE id=$id");
          $data=$resultb[data];
          eval(
          "\$tpl->output(\"".$tpl->get("site")."\");");
          ?>
          Zuletzt geändert von Adm. Harry Scott; 07.05.2003, 19:53.
          The very young do not always do as they are told.
          (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
          [Stargate: Die Macht der Weisen / The Nox]

          Kommentar


          • #6
            hehe, mittlerweile hab ich meine ganzen Menuevorstellungen über den haufen geworfen und es ist ein eigenständiges Script geworden das ohne das wbb läuft

            Öhmm, was wollt ich noch sagen? Achja, ich such Betatester da mir die geeignete Testumgebung fehlt auf welchen php Versionen es läuft

            Download


            Wer so mal testen will ohne auf seinem Webspace zu Installieren:
            Besucherseite
            Adminseite (Bneutzername und Kennwort: admin)
            The very young do not always do as they are told.
            (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
            [Stargate: Die Macht der Weisen / The Nox]

            Kommentar


            • #7
              Das Adminmenü hat noch ein paar kleinere Fehler:
              1. Wenn ich rechts oben auf irgendeinen Link klicke (Autoren verwalten z.B.), dann funktionieren die Links zu den Seiten nicht mehr (Startseite ...).
              2. Nach dem Einloggen ins Adminpanel sollte es eine automatische Weiterleitung geben - is nicht so schwer umzusetzen ...
              3. Jo, das wars - mehr is mir jetzt nicht aufgefallen ...

              Sonst alles ganz gut!

              Kommentar


              • #8
                Original geschrieben von cmE
                Das Adminmenü hat noch ein paar kleinere Fehler:
                1. Wenn ich rechts oben auf irgendeinen Link klicke (Autoren verwalten z.B.), dann funktionieren die Links zu den Seiten nicht mehr (Startseite ...).
                2. Nach dem Einloggen ins Adminpanel sollte es eine automatische Weiterleitung geben - is nicht so schwer umzusetzen ...
                3. Jo, das wars - mehr is mir jetzt nicht aufgefallen ...

                Sonst alles ganz gut!
                Zu 1.: Die funktionieren dann schon noch, nur muss man zuerst wieder eine option auswählen was man machen will, ich werd aber einen Hinweis einfügen, das man eine option wählen soll wenn man von den Optionen aus aufruft
                Zu 2.: Wenn du meinst ^^ Wird gemacht cheffe

                Und danke für's testen
                The very young do not always do as they are told.
                (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
                [Stargate: Die Macht der Weisen / The Nox]

                Kommentar


                • #9
                  Jetzt is es sehr gut!

                  Vielleicht könntest noch eine Replacefunktion einbauen. Der Autor schreibt zb: Blablabla STF blabla und daraus wird halt Blablabla Star-Trek-Forum blabla. Und damit verbunden halt die Option selber solche Replacetags zu erstellen ...

                  Is oft ganz praktisch beim News posten etc.

                  EDIT: Vielleicht auch noch eine Option html und das Codesystem gemeinsam zu nutzen ...

                  Kommentar


                  • #10
                    Original geschrieben von cmE
                    Jetzt is es sehr gut!

                    Vielleicht könntest noch eine Replacefunktion einbauen. Der Autor schreibt zb: Blablabla STF blabla und daraus wird halt Blablabla Star-Trek-Forum blabla. Und damit verbunden halt die Option selber solche Replacetags zu erstellen ...

                    Is oft ganz praktisch beim News posten etc.

                    EDIT: Vielleicht auch noch eine Option html und das Codesystem gemeinsam zu nutzen ...
                    Den ersten Punkt hab ich für die nächste Version geplant, Version 1 ist vielmehr die Grundversion die ich für meine eigene Website brauche. Für Version 1.1 hab ich das Replacesystem geplant, mal sehen was mir sonst noch so einfällt. Die Option html und das Codesystem gemeinsam zu nutzen auf einer Seite ist da schon schwieriger bisher reichts ja für den html Code ne eigene Seite anzulegen
                    The very young do not always do as they are told.
                    (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
                    [Stargate: Die Macht der Weisen / The Nox]

                    Kommentar


                    • #11
                      Wie siehts mit der Templatefähigkeit aus bzw. welche Templateclass hast du verwendet?

                      Welche sonstigen Fähigkeiten sind noch geplant?

                      Kommentar


                      • #12
                        Ist wirklich gut geworden, ich werds bei gelegenheit einbauen..

                        m.f.G. Socky
                        Das Sockylein grüßt alle wahnsinnigen ;-), besonders Arwen, Spooky, NH, Suder, Logic, Super supernova + Zefi und unseren allseits beliebten ARSCHKEKS
                        Preiset den Darthschkeks Im Werkzeugkasten liegt der Hammer

                        Kommentar


                        • #13
                          Original geschrieben von der Eine
                          Wie siehts mit der Templatefähigkeit aus bzw. welche Templateclass hast du verwendet?

                          Welche sonstigen Fähigkeiten sind noch geplant?
                          Das Aufrufen der Templates geschieht folgendermaßen:
                          PHP-Code:
                          function gettemplate($template,$endung="html") {
                              return 
                          str_replace("\"","\\\"",implode("",file($template.".".$endung)));
                          }
                          function 
                          dooutput($template) {
                              echo 
                          $template;
                          }

                          und

                          eval ("dooutput(\"".gettemplate("templates/layout")."\");"); 
                          Das Design kann in der header.html (Farben und Schriftart) und in 5 weiteren Templates (der großteil des statischen html Codes) geändert werden.

                          Für die 1.1 geplant, aber keine Ahnung ob es auch wirklich kommen wird. Alles änderungen im Adminpanel:
                          -- möglichkeit zum erstellen eigener BBCodes
                          -- möglichkeit zum ändern der Farben und Schriftarten
                          -- möglichkeit zum bearbeiten der Templates
                          The very young do not always do as they are told.
                          (Die sehr jungen tun nicht immer das, was man ihnen sagt.)
                          [Stargate: Die Macht der Weisen / The Nox]

                          Kommentar

                          Lädt...
                          X