DropDown - Forumselect

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

  • DropDown - Forumselect

    Hallo,

    ich habe folgendes, für mich derzeit unlösbar, Problem.

    Ich will ein Forum Script schreiben. Soweit geht auch alles.
    Jetzt will ich, wenn man ein neues Forum hinzufügt, entscheiden kann, ob es ein Hauptforum wird, oder als Subforum arbeiten soll.

    Ich hab ein bsp beim IPB gesehn.

    http://www.cia-base.de/image250.jpg

    Genauso soll mir auch meine Foren aufgelistet werden. Meine werde aber leider alle nur untereinander Aufgelistet, und nicht so schön unterteilt.

    Mein DB Ausbau sieht wiefolgt aus:

    http://www.cia-base.de/image251.jpg


    Ich wäre für tipps, um es zu realisieren sehr dankbar.

    EDIT:
    bitte keine übergroßen bilder direkt einbinden.
    Zuletzt geändert von wahsaga; 01.09.2005, 18:10.

  • #2
    kannst ja mal in der forumsuche und google nach "tree", "child" und vor allem "indent" schauen, mit diesem begriff bezeichet man oft dieses "einrücken", das du meinst.

    oder eben selbst was basteln - weiß ja nicht, wie du die namen ermittelst, aber wird wohl auch nicht schwer sein, die tiefe des "indent" zu berechnen.

    und nimm bitte die riesigen screenshots aus dem post - reicht ja zu sagen, dass du

    a) die foren in einem adjacency list model in einer db ablegst und
    b) beim ermitteln gern das ascii-einrücken zum zwecke der darstellung in einer select-box hättest (hier evtl. noch ein beispiel mit diesen strichen / leerzeichen).
    Zuletzt geändert von penizillin; 01.09.2005, 17:57.

    Kommentar


    • #3
      Danke für die Antwort, und nochmal sorry für die Bilder.

      So ich bin jetzt bei der Forumsuche und bei Google auf ein und das selbe Tut gekommen

      http://www.develnet.org/39.html

      Leider müsste ich nach diesem Tut meine Struktur der DB und meiner Scripte komplet ändern. Gibt es nicht eine möglichkeit, nur mit der forumid und der mainforumid (siehe Screenshot) ebenfall so einen Baum zu erstellen?

      Kommentar


      • #4
        nein, zu nested sets musst du gar nicht greifen. zeig erstmal den code, mit dem du eine select-box ohne die einrückungen generierst. evtl. sieht man das dann besser.

        Kommentar


        • #5
          Also mein Code lautet:

          PHP-Code:
          $showtype "<option value=\"0\">Main Forum</option>
                  <OPTGROUP label=\"Subforum of\">"
          ;
                  
          $result=$vwardb->query("
                     SELECT forumid, forumname
                     FROM vwar"
          .$n."_forum
                     WHERE mainforumid = '0'
                     ORDER BY categoryid
                     "
          );
                     while(
          $row=$vwardb->fetch_array($result))
                     {

                     
          $showtype .= "<option value=\"".$row["forumid"]."\">"
                                             
          .$row["forumname"]."</option>";

                     
          $result2=$vwardb->query("
                     SELECT forumid, forumname
                     FROM vwar"
          .$n."_forum
                     WHERE mainforumid = '"
          .$row["forumid"]."'
                     "
          );
                     while(
          $raw=$vwardb->fetch_array($result2))
                     {

                     
          $showtype .= "<option value=\"".$raw["forumid"]."\">
                           &nbsp;&nbsp;&nbsp;&nbsp;"
          .$raw["forumname"]."</option>";

                     }
                     }
                     
          $vwardb->free_result($result); 
          Nur ist das Problem, das er mir nur immer das erste Subforum anzeigt.

          Nur wie bekomme ich die unterforen aus den unterforen?

          Wie man oben aus dem SCreenshot sehen kann,
          fehlen bspweise die unterforen wie WIN98 WIN2000 etc unter dem unterforum Windows.

          Folgender Code wird derzeit ausgegeben:

          PHP-Code:
          <select size="1" id="mainforumid" name="mainforumid"">
                  <option value="
          0">Main Forum</option>
          <OPTGROUP label="
          Subforum of">
                  <option value="
          42">Betriebssysteme</option>
                  <option value="
          52">&nbsp;&nbsp;&nbsp;&nbsp;Windows</option>
                  <option value="
          53">&nbsp;&nbsp;&nbsp;&nbsp;Linux</option>
                  <option value="
          48">Games</option>
                  <option value="
          49">&nbsp;&nbsp;&nbsp;&nbsp;Ego-Shooter</option>
                  <option value="
          50">&nbsp;&nbsp;&nbsp;&nbsp;Strategie</option>
                  <option value="
          51">&nbsp;&nbsp;&nbsp;&nbsp;Simulation</option>
                  <option value="
          45">CPU's</option>
                  <option value="
          44">Mainboards</option>
                  <option value="
          43">Grafikkarten</option>
                  <option value="
          47">Sort out</option>
                  <option value="
          46">Off Topic</option>
                  </select> 
          Mir wurde auch mal zugetragen, das eine whileschleife in einer whileschleife nicht so toll sei, stimmt dies?
          Zuletzt geändert von toxiclein; 02.09.2005, 13:23.

          Kommentar


          • #6
            brich bitte deinen code um, damit man nicht horizontal scrollen muss.

            und anstelle der verschachtelten db-anfragen solltest du eine rekursive funktion benutzen, wenn du schon adjacency list model benutzst.

            Kommentar


            • #7
              Ja, ich habe jetzt eine Seite gefunden, die mir mit der rekursive funktion erklären, wo sogar das beispiel drauf ist, was ich suchte.

              http://www.php-homepage.de/artikel/artikel13.html

              Danke nochmals.

              So habe ich es jetzt gelöst.

              PHP-Code:
              function get_forum($who,$ebene)
              {
                global 
              $GPC$vwardb$n,$showtype;

               
              $result=$vwardb->query("
                         SELECT forumid, forumname
                         FROM vwar"
              .$n."_forum
                         WHERE mainforumid = 
              $who
                         ORDER BY categoryid
                         "
              );

                while (
              $mainforum=$vwardb->fetch_array($result)) {
                  
              $showtype .= "<option value=\"".$mainforum[forumid]."\">".$ebene.$mainforum[forumname]."</option>";
                  
              #echo $ebene.$mainforum[forumname]."<br>";
                  
              get_forum($mainforum[forumid],$ebene."&nbsp;&nbsp;&nbsp;&nbsp;");
                }

              Danke nochmals
              Zuletzt geändert von toxiclein; 02.09.2005, 14:34.

              Kommentar

              Lädt...
              X