Dynamische Seitennavigation

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

  • Dynamische Seitennavigation

    Hallo,

    Ich möchte meine Seitennavigation in Blöcke unterteilen.

    Hierfür habe ich 2 Tabellen angelegt

    die erste Tabelle beinhaltet die Namen (VARCHAR) und eine Spalte order(INT) für die Reihenfolge.

    die zweite Tabelle beinhaltet den Linknamen, den Link selber (beides VARCHAR) und die Zugehörigkeit(INT).

    Nun habe ich hier meinen Denkfehler wie ich das sinnvoll realisiere beim auslesen.
    Ich könnte "theoretisch" die anzahl der Einträge in der ersten Tabelle auslesen und mit der Anzahl und einer FOR schleife alles nach der reihe durchgehen, zimlich aufwendig (kommt mir mal vor?)

    ginge das auch schneller ?

    mfg
    christian

  • #2
    der ersten tabelle fehlt schonmal die id.

    was interessiert dich die anzahl??

    darf ich das so deuten, das tab1 die kategorien sind und tab2 die links (die in die kats sortiert werden)?

    Kommentar


    • #3
      sorry ab ich vergessen natürlich haben beide tabellen eine spalte "id".

      genau die erste Tabelle hat die Blöcknamen (Kategorien)
      und die zweite Tabelle hat den jeweiligen inhalt.

      Kommentar


      • #4
        Dann schau dir JOINS und Gruppenwechsel an.

        Kommentar


        • #5
          habs momentan so gelöst:
          (zur verständniss)

          PHP-Code:
          <?php
          require("connectdb.php");

          $result mysql_query('SELECT * FROM blocks');
          $num_rows mysql_num_rows($result);
          echo 
          "$num_rows Rows\n";


          for(;
          $num_rows<1;$num_rows--)
          {
              
          $blockinhalt mysql_query('SELECT * FROM blockinhalt WHERE block="'.$num_rows.'"');
              echo 
          $num_rows."-Block";
              while (
          $row mysql_fetch_array($blockinhalt)) {
                  echo 
          $row['linkname'];         
                  echo 
          $row['link'];
                  }
          }
          ?>

          EDIT:

          Habe mich bezüglich JOIN mal schlau gemacht:

          PHP-Code:
          $result mysql_query('
              SELECT * FROM blocks
              INNER JOIN blockinhalt ON blocks.id = blockinhalt.block'
          ); 
          Hoffe das geht so in ordnung ?
          doch nun habe ich irgendwie alle in diesem $result drein und möchte das doch eig. noch irgendwie geordnet ausgeben ??
          Zuletzt geändert von christian000; 31.12.2006, 16:48.

          Kommentar


          • #6
            Alle Ergebnisse sind in $result, du musst sie nur mit einer while-schleife und z.B. mysql_fetch_array durchlaufen. Sortieren kannst du mittels ORDER BY <spaltenname> im SQL-Statement.
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #7
              Danke ;-)

              ich hab das nun alles erweitert:
              Doch so habe ich nur eine Ausgabe

              Blockname
              Linkname
              Link

              und das für jeden Eintrag.
              Ich möchte aber für jeden Block die dazugehörigen links dabei haben und nicht alle der reihe nach.

              Momentan ist die ausgabe so:

              Code:
              about me
              test
              test
              
              
              about me
              test3
              test3
              
              
              about me
              test4
              test4
              
              
              test2
              test2
              test2
              
              
              test2
              test5
              test5
              das Sollte aber so aussehen:
              Code:
               
              about me
              test
              test3
              test4
              und
              Code:
               
              test2
              test2
              test5
              PHP-Code:
              <?php
              require("connectdb.php");

              $result mysql_query('
                  SELECT * FROM blocks
                  INNER JOIN blockinhalt ON blocks.id = blockinhalt.block ORDER BY blockinhalt.block'
              );

              while (
              $row mysql_fetch_array($result)) {
              echo 
              $row['bname'].'<br>';
              echo 
              $row['linkname'].'<br>';    
              echo 
              $row['link'].'<br>';
              echo 
              '<br><br>';
              }
                  
              ?>

              Kommentar


              • #8
                ich weiß zwar nicht ob ich dich jetzt richtig verstanden habe,
                aber ich glaube wir machen beide das selbe.. schau mal
                auf www.xjonx.com die navigation an...

                dafür verwende ich eine tabelle mit allen infos zu den seiten.

                mein script kann derzeit:
                Kategorien mit ein und ausgeblendeten links
                Seiten mit ein und ausgeblendeten unterseiten
                Einzelseiten
                Versteckteseiten

                sag einfach bescheid und ich klär dich über meine lösung auf.
                Design & Coding with a breeze of madness at xjonx

                Kommentar


                • #9
                  Nicht ganz:
                  Ich habe das ganze nun nochmal verständlicher (hoffe ich) erstellt:


                  Tabelle 1:
                  ---------------
                  ID | Blocknamen
                  ---------------
                  1 | Block 1
                  2 | Block 2

                  Tabelle 2:
                  ----------------------------
                  ID | Block | Linkname | Link
                  ----------------------------
                  1 | 1 | Link1 | Link1
                  2 | 1 | Link2 | Link2
                  3 | 1 | Link3 | Link3
                  4 | 1 | Link4 | Link4
                  5 | 2 | Link5 | Link5
                  6 | 2 | Link6 | Link6
                  7 | 2 | Link7 | Link7
                  8 | 2 | Link8 | Link8

                  In der Tabelle 2 Spalte "Block" ordne ich auf Tabelle 1 "id" zu.
                  Am ende will ich über mein Adminmenü einfach einen Link zu einem Block hinzufügen bzw. entfernen.
                  Bei Der Ausgabe soll er nun:


                  ---------
                  |Block 1|
                  ---------
                  Link1
                  Link2
                  Link3
                  Link4

                  ---------
                  |Block 2|
                  ---------
                  Link5
                  Link6
                  Link7
                  Link8

                  Kommentar


                  • #10
                    nun gut... dann kann ich dir gerade nicht helfen.
                    wobei:

                    nachgetragen:

                    PHP-Code:
                    $b_result mysql_query('SELECT * FROM blocks');
                    while (
                    $block mysql_fetch_array($b_result)) {

                           echo 
                    $block['name'] ;

                        
                    $result mysql_query("SELECT * FROM links WHERE block = '".$block['id']."'");
                        while (
                    $link mysql_fetch_array($result)) {
                        
                            echo 
                    $link['id'] ;
                        
                        }


                    Zuletzt geändert von xJonx; 31.12.2006, 19:19.
                    Design & Coding with a breeze of madness at xjonx

                    Kommentar


                    • #11
                      ARGH...
                      vor lauter kompliziert denken ....

                      PHP-Code:
                      while ($row mysql_fetch_array($bloecke)) {
                      echo 
                      $row[bname].'<br><br>';

                      $inhalt mysql_query('SELECT * FROM blockinhalt WHERE block="'.$row['id'].'"');
                          while (
                      $data mysql_fetch_array($inhalt))
                          {
                              echo 
                      $data['link'].'<br>';
                          }


                      und schon habe ich was ich will....
                      sogesehen komplett simpel.

                      naja danke für die hilfe

                      Kommentar


                      • #12
                        hehe, was heißt den hier: naja
                        wenn ich mir, und ist natürlich schon spät, das mal so angucke,
                        ist das so ziemlich das selbe. oder liege ich da falsch?

                        ach ja: frohes neues!!!
                        Design & Coding with a breeze of madness at xjonx

                        Kommentar

                        Lädt...
                        X