Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei multidimensionale MySQL Arrays nach Query sortieren und "verbinden"

Einklappen

Neue Werbung 2019

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

  • Zwei multidimensionale MySQL Arrays nach Query sortieren und "verbinden"

    Seid gegrüßt!

    Mir fehlt gerade irgendwie eine logische Verknüpfung um folgende Problematik zu lösen.
    Ich habe eine MySQL-DB mit Daten aus zwei getrennten Tabellen, welche folgende Ausgabe liefern:

    Kategorien (Tabelle: sections)

    secid | title
    ──────┼───────────
    1 | Start
    5 | Corporate
    7 | Editorial
    11 | Fashion
    8 | Reise
    9 | Vita
    10 | Kontakt


    Unterseiten (Tabelle: pages)

    secid | title
    ──────┼───────────
    1 | Reportage I
    1 | Reportage II
    1 | Reportage III
    5 | Unternehmen 1
    5 | Unternehmen 2
    5 | Unternehmen 3
    7 | Porträt I
    7 | Porträt II
    7 | Porträt III
    7 | Nachrichten
    7 | Panorama
    8 | Land 1
    8 | Land 2
    8 | Land 3
    8 | Land 4


    Soweit so gut, die beiden Tabellen kann ich mir in zwei getrennten Queries mittels foreach genau in dieser Form ausgeben lassen. Nun möchte ich aber anhand der "Schnittstelle", nämlich der "secid", die jeweiligen Unterseiten direkt den Kategorien unterordnen. Am Beispiel "Reise" sähe das also wie folgt aus:

    11 Fashion
    8 Reise

    8 Land 1
    8 Land 2
    8 Land 3

    9 Vita
    10 Kontakt


    Hat jemand da einen Tipp für mich? Da es sich um ein vorgefertigtes CMS handelt, kann an der Struktur der MySQL-DBs nichts verändert werden. Das ganze soll, wie man sich denken kann, später als Menü für eine Portfolioseite dienen.

    Danke schonmal für jeglichen Input!


  • #2
    Ich bin kein Experte aber habe eine Lösung gefunden, 2 Foreach Schleifen und 2 Abfragen... Ich bin mir allerdings sicher dass es eine elegantere Lösung gibt, und man das ganze auch mit einer Abfrage erledigen kann.

    Daher bitte ich um Lösungsansätze wie man das besser machen kann.

    PHP-Code:
    // DB Connection
    $db = new mysqli('#''#''#''#');

    // Query für die Ausgabe der Sections
    $qry_sections 'select * from sections';
    $sections $db->query($qry_sections);

    // Durch das Array mit den Sections schleifen
    foreach ($sections as $section) {

        echo 
    $section["title"] . "<br/>";

       
    // Query für die Pages der aktuellen Section
        
    $qry_pages 'SELECT pages.title
                      FROM pages
                      INNER JOIN sections ON pages.secid = sections.secid
                      WHERE sections.title = "'
    .$section["title"].'"';    

        
    $pages $db->query($qry_pages);

        
    // Durch die Pages schleifen und den Titel jeder Page ausgeben...
        
    foreach ($pages as $page) {
            echo 
    "-" $page["title"] . "<br/>";
        }


    Sorry für mein Denglisch

    Kommentar


    • #3
      ich würde die beiden Tabellen erst per Join* verbinden und dann mit Gruppenbruch** arbeiten

      * http://www.dofactory.com/sql/join
      ** https://php-de.github.io/jumpto/gruppenbruch/
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar

      Lädt...
      X