Steffi: Links in einer Tabelle mit 2 Spalten ausgeben

Hallo,
ich arbeite gerade an einem kleinen CMS und arbeite gerade an der Navigation. Bis jetzt gibt der PHP Teil die Links nur untereinander aus (jeweils ein Oberpunkt mit Unterpunkten). Es gibt also nur 1 Spalte, ich hätte aber gerne, dass man die Links in 2 Spalten ausgibt. Also zum Beispiel (halt geordnet in einer Tabelle):

Hauptmenü
Startseite Impressum
Chat Forum
Seite5 Seite6

etc.

Im Moment wird es nämlich so erzeugt:

    if ($menu_row['URLAnhang'] == $getAnhang) {  
      $menu .= "<tr><td>{$menu_row['MenueName']}" .  
      "</td></tr>\n";  
    } else {  
      $menu .= "<tr><td><a href='?{$menu_row['URLAnhang']}'>" .  
      "{$menu_row['MenueName']}</a></td></tr>\n";  
    }  
  } 

Man müsste das also irgendwie so hinbekommen, dass 2<td>'s in einer <tr> steht. Hat jemand eine Idee, wie man das macht? Vielleicht in der MySQL Tabelle eine weitere ID hinzufügen und je nach ID etwas anderes ausgeben lassen (z.B. gerade IDs anfangen lassen mit <tr> und ungerade IDs schließen diese wieder mit </tr> oder so)?

Vielen Dank.

Liebe Grüße
Steffi

  1. Liebe Steffi,

    Du solltest eine Navi nicht mit HTML-Mitteln in eine bestimmte Darstellung zwingen, sondern diese Aufgabe <http://de.selfhtml.org/css/layouts/navigationsleisten.htm@title=rein mit den Mitteln von CSS lösen>.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Liebe Steffi,

      Du solltest eine Navi nicht mit HTML-Mitteln in eine bestimmte Darstellung zwingen, sondern diese Aufgabe <http://de.selfhtml.org/css/layouts/navigationsleisten.htm@title=rein mit den Mitteln von CSS lösen>.

      Liebe Grüße,

      Felix Riesterer.

      Hallo Felix,

      vielen Dank für deine Antwort. Gut, das ist natürlich auch eine Möglichkeit. Habe nicht wirklich gewusst, dass ich die Darstellung, die ich mir vorstelle auch mit CSS machen kann (oder irre ich mich?). Damit ist aber noch nicht mein Problem gelöst. Ich hätte gerne so eine Navigation um insgesamt Platz zu sparen, da es sehr viele Inhalte geben wird. Wie kann man dieses nun mittels PHP/MySQL umsetzen, dass die Links in 2 Spalten ausgegeben werden?

      Vielen Dank.

      Liebe Grüße
      Steffi

      1. Wie kann man dieses nun mittels PHP/MySQL umsetzen, dass die Links in 2 Spalten ausgegeben werden? <<

        <h1> Steffi
        <article>
        Du führst dir vor Augen, dass du dieses Muster benötigst:

        <tr>
         <td></td>
         <td></td>
        </tr>

        etc. Es läuft also immer gleich ab. Wenn du deine Links aus der Datenbank beziehst, nutzt du eine While-Schleife. Die Anzahl wieviel Links vorhanden sind, sei unbekannt und das ist auch der while Schleife so klar. ;)

        Der einfachste Weg ist jetzt, jedem Datensatz der angefordert wird, eine "Nummer" zu verpassen oder zählen zu lassen, wieviel Datensätze es gibt. Das erreichst du am einfachsten, indem du erst vor der While-Schleife eine Variable gleich null setzt.

        D.h.
        $i = 0;

        In der While-Schleife notierst du einfach
        $i++; bzw. $i = $i + 1;
        Den Rest schaffst du dann mit einer if Anweisung. Du musst nurnoch logisch entscheiden, wo du das $i++; hinsetzt, nach der if Anweisung oder davor.
        <article>
        <footer>
         Nachdenken macht am meisten Spaß :D
        </footer>

        1. [latex]Mae  govannen![/latex]

          Wie kann man dieses nun mittels PHP/MySQL umsetzen, dass die Links in 2 Spalten ausgegeben werden? <<

          <h1> Steffi
          <article>
          Du führst dir vor Augen, dass du dieses Muster benötigst:

          <tr>
          <td></td>
          <td></td>
          </tr>

          *Nein*. Es wird genau das HTML-Markup benötigt, auf das Felis verlinkt hat.

          Ob die Navigation dann 1-spaltig, 2-spaltig, horizontal, vertikal oder wie auch immer dargestellt wird, wird ausschließlich mit CSS geregelt.

          Stur lächeln und winken, Männer!
          Kai
          --
          It all began when I went on a tour, hoping to find some furniture
           Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
          SelfHTML-Forum-Stylesheet

          1. Das ist richtig, deswegen habe ich den Beitrag von Felix nicht in Frage gestellt ;D Ich habe es so verstanden, dass sie es genau auf diesen Lösungsansatz hinaus möchte.

            Alles via CSS und Listen zu machen, ist der richtige Weg, der tabellarische aber sicher einer der einfachsten :)

            Ich habe vor vielen Jahren sehr gerne, alles mit verschachtelten Tabellen gemacht, die Seiten wurden auch schön angezeigt und alles war perfekt. Dann kam die Javascript/CSS-Zeit mit IE und FX :-)

            1. @@Rowland:

              nuqneH

              Alles via CSS und Listen zu machen, ist der richtige Weg

              Ja. Ohne Wenn und Aber.

              der tabellarische aber sicher einer der einfachsten :)

              Nein. Spätestens, wenn aus der Zweispaltigkeit Einspaltigkeit oder gar heilige Dreispaltigkeit werden soll, ist’s mit der Einfachheit vorbei. Dann müsste das Markup geändert werden, und das evtl. an vielen Stellen – auf allen Seiten.

              Und an responsive design ist bei Tabellenlayout gar nicht zu denken.

              Qapla'

              --
              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
              (Mark Twain)
          2. Das ist mir jetzt nicht so klar. Gut, ich gestalte die gesamte Navigation mit Css, dann werden auch Ul und li Elemente benutzt. Diese muss man dann nach seinen Bedürfnissen mit php ausgeben.Aber dann habe ich ja schon mal einen Ansatz. danke dafür. :)

            *Nein*. Es wird genau das HTML-Markup benötigt, auf das Felis ver

            Ob die Navigation dann 1-spaltig, 2-spaltig, horizontal, vertikal oder wie auch immer dargestellt wird, wird ausschließlich mit CSS geregelt.

            Stur lächeln und winken, Männer!
            Kai

            It all began when I went on a tour, hoping to find some furniture
            Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
            SelfHTML-Forum-Stylesheet

      2. @@Steffi:

        nuqneH

        Ich hätte gerne so eine Navigation um insgesamt Platz zu sparen, da es sehr viele Inhalte geben wird.

        Hast du dir das gut überlegt, ob es sinnvoll ist, dem Nutzer ein ellenlanges Menü mit zig Punkten zu präsentieren, wo er sich den passenden wie die Nadel im Neuhaufen heraussuchen muss? Vielleicht solltest du eine hierarchische Menüstruktur mit (mindestens) 2 Ebenen (Hauptkategorien und Unterpunkte) anbieten.

        Wie kann man dieses nun mittels PHP/MySQL umsetzen, dass die Links in 2 Spalten ausgegeben werden?

        Nicht. Sondern mittels CSS.

        Wie sollen die Menüpunke angeordnet sein?

        1 2
        3 4
        5 6
        7

        oder

        1 5
        2 6
        3 7
        4

        Daraus ergibt sich, ob inline-block oder multi-column layout das Mittel der Wahl ist.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Wie kann man dieses nun mittels PHP/MySQL umsetzen, dass die Links in 2 Spalten ausgegeben werden?

          Nicht. Sondern mittels CSS.

          Wie sollen die Menüpunke angeordnet sein?

          1 2
          3 4
          5 6
          7

          oder

          1 5
          2 6
          3 7
          4

          Daraus ergibt sich, ob inline-block oder multi-column layout das Mittel der Wahl ist.

          Qapla'

          Gut, ich weiß, dass man die Navigation nun mittels CSS gestaltet. Allerdings werden die Links über PHP in der while-Schleife ausgegeben. Da kann man sich nicht erst im Nachhinein mit CSS umändern?
          Vielen Dank für die Links. Ich werde erstmal versuchen mit inline-block zu arbeiten.

          1. Om nah hoo pez nyeetz, Steffi!

            Gut, ich weiß, dass man die Navigation nun mittels CSS gestaltet. Allerdings werden die Links über PHP in der while-Schleife ausgegeben. Da kann man sich nicht erst im Nachhinein mit CSS umändern?

            Dein PHP-Programm erzeugt ein HTML-Dokument. Dieses wird ausschließlich über CSS gestaltet.

            Matthias

            --
            1/z ist kein Blatt Papier.

          2. @@Steffi:

            nuqneH

            Gut, ich weiß, dass man die Navigation nun mittels CSS gestaltet.

            Allerdings werden die Links über PHP in der while-Schleife ausgegeben.

            Das ist für einen Browser völlig egal. Er kriegt von PHP überhaupt nichts mit. Wenn im Browser

            <nav>  
              <ul>  
                <li><a href="foo">Foo</a></li>  
                <li><a href="bar">Bar</a></li><li><a href="quz">Quz</a></li>  
              </ul>  
            </nav>
            

            ankommt, dann weiß der nichts davon, dass das mit einer Schleife

            <nav>  
              <ul>  
            [code lang=php]<?php while(…): ?>
            

            <li><a href="<?php echo $currentMenuItem['url']; ?>"><?php echo $currentMenuItem['title']; ?></a></li>
            <?php endwhile; ?>
              </ul>
            </nav>[/code]

            erzeugt wurde.

            Da kann man sich nicht erst im Nachhinein mit CSS umändern?

            Ich weiß nicht, wie ich deine Frage verstehen soll. Meinst du, du könntest nicht @style-Attribute im generierten HTML-Quelltext ändern? Stimmt. Aber solche sollte da auch gar nicht drin sein! Sondern ausschließlich das o.g. Markup.

            Und das Stylesheet (CSS-Datei, wo alle Darstellungsangaben drinstehen) kannst du natürlich umändern.

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. Hi,

              <nav>

              <ul>
              [code lang=php]<?php while(…): ?>

              
              >     <li><a href="`<?php echo $currentMenuItem['url']; ?>`{:.language-php}">`<?php echo $currentMenuItem['title']; ?>`{:.language-php}</a></li>  
              > `<?php endwhile; ?>`{:.language-php}  
              >   </ul>  
              > </nav>[/code]  
                
              auch wenn das Beispielcode sein soll: bitte nie den Kontextwechsel vergessen. Die Werte `$currentMenuItem['url']`{:.language-php} und `$currentMenuItem['title']`{:.language-php} sollten durch `htmlspecialchars()`{:.language-php} laufen.  
                
              Bis die Tage,  
              Matti
              
              -- 
              [Webapplikationen in C++ entwickeln](http://tntnet.org/)
              
              1. @@Matti Mäkitalo:

                nuqneH

                auch wenn das Beispielcode sein soll: bitte nie den Kontextwechsel vergessen. Die Werte $currentMenuItem['url'] und $currentMenuItem['title'] sollten durch htmlspecialchars() laufen.

                Wenn die Werte im $currentMenuItem-Array vollständig unter Kontrolle des eigenen Scripts stehen, sollte das nicht erforderlich sein.

                Qapla'

                PS: Es war mir doch glatt entgangen, in diesem Thread auf Punkt 10 der zehn meist-missachteten Homepage-Design-Richtlinien [Nielsen] hinzuweisen: „Verlinke niemals auf die aktuelle Seite.“

                S.a. https://forum.selfhtml.org/?t=208531&m=1418182

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
  2. Hallo Steffi,

    du solltest dein PHP erst mal liegen lassen und statt dessen eine html-Struktur entwickeln, die enthält was du benötigst: Navigationsbereich, Inhaltsbereich, evtl. auch noch Kopf- und Fußbereich. Dann erstellst du ein CSS, damit die Seite wie gewünscht aussieht. Und dann kannst du anfangen, die Seite automatisch per PHP zu erstellen. Ich würde nicht mit PHP anfangen.

    Und noch eine Anmerkung zum Thema CMS: Du solltest dir gut überlegen bzw. abschätzen, wie oft die Seiten aufgerufen werden, und wie oft sich deren Struktur / Navigation ändert. Danach kannst du entscheiden, ob es sinnvoll ist, die Seiten bei jedem Aufruf neu zu berechnen, ein sinnvolles Caching einzurichten, oder das CMS statische Seiten erstellen zu lassen. Leistungsstarke Server bzw. deren CPU-Zeit kosten auch.

    Gruß, Jürgen