Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus Datenbank abfragen und ausgeben - Schleife verzweifelt gesucht

Einklappen

Neue Werbung 2019

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

  • Daten aus Datenbank abfragen und ausgeben - Schleife verzweifelt gesucht

    Hallo,

    ich - ein Anfänger in Sachen PHP - wandere zurzeit als Forum-Nomade durch das Internet, um mein Projekt fertigstellen zu können. Viel fehlt dazu auch nicht mehr, leider scheitere ich noch an einer Schleife, die die abgerufenen Daten aus meiner Datenbank abbilden soll.

    Meine Datenbank:

    Tabelle "Produkt"
    ProduktID | Produktname | Produkthersteller
    1, Speed PC, Pegasus
    2, Power PC, Accelerate
    3, Speed PC II, Pegasus

    Tabelle "Anschluss"
    AnschlussID | Anschlussname
    1, USB
    2, Firewire
    3, eSata

    Tabelle "Beziehung"
    ProduktID | AnschlussID
    1, 1
    1, 3
    2, 1
    2, 2
    3, 1
    3, 2
    3, 3

    Dazu meine Select Abfrage:

    Code:
    $querry = „select Produkt.*, Beziehung.AnschlussID, Anschluss.Anschlussname 
    from Produkt, Beziehung, Anschluss 
    where Produkt.Produktname like '%$Produktname%'
    and Produkt.Produktherstellter like '%$Produkthersteller%'
    and Produkt.ProduktID = Beziehung.ProduktID 
    and Beziehung.AnschlussID = Anschluss.AnschlussID“;
    Suche ich nach dem Produkthersteller "Pegasus" erhalte ich dann folgende Ausgabe (getestet in der MySQL Konsole):

    ProduktID | Produktname | Produkthersteller | AnschlussID | Anschlussname
    1, Speed PC, Pegasus, 1, USB
    1, Speed PC, Pegasus, 3, eSata
    3, Speed PC II, Pegasus, 1, USB
    3, Speed PC II, Pegasus, 2, Firewire
    3, Speed PC II, Pegasus, 3, eSata

    Das bedeutet, meine Abfrage spuckt alle Daten aus, die ich benötige. Leider habe ich das Problem, dass mir in meinem Ausgabeskript noch eine Schleife fehlt, die meine Daten abbildet, etwa wie im folgenden Beispiel:

    Pegasus Speed PC
    Anschlüsse: USB, eSate

    Pegasus Speed PC II
    Anschlüsse: USB, Firewire, eSata

    Kann mir jemand sagen, wie diese Schleife aussehen muss? Als Anfänger fehlt mir leider noch das nötige Hintergrundwissen. In der Literatur, die ich verwende, werden Daten leider weder in Beziehungstabellen geschrieben noch daraus ausgelesen.

  • #2
    Hi.

    Stelle deinen Code bitte entsprechend der Forenregeln hier ein (nutze die PHP Tags), danke. Meinst du das hier:

    http://www.w3schools.com/PHP/php_mysql_select.asp

    mfg Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Zitat von wolf29 Beitrag anzeigen
      Hi.
      Meinst du das hier:

      http://www.w3schools.com/PHP/php_mysql_select.asp

      mfg Wolf29
      So funktinoiert es eben leider nicht, weil die Daten zu einem Produkt mit meiner Select Abfrage über mehrere Zeilen ausgeben werden. Mit "while($row = mysql_fetch_array($result))" wird daher ein Produkt mehrmals aufgelistet, wenn es über mehr als einen Anschluss verfügt. Also z.B.

      Pegasus Speed PC
      Anschlüsse: USB

      Pegauss Speed PC
      Anschlüsse: eSata

      statt

      Pegasus Speed PC
      Anschlüsse: USB, eSata

      Kommentar


      • #4
        ...dann muss Du dein SQL Statement anpassen, wenn Du die Ausgabe so haben willst, dass für ein Produkt sämtliche Anschlüsse aufgelistet werden!

        mfg Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          Group_concat() ?

          Kommentar


          • #6
            Zitat von Harry_X Beitrag anzeigen
            Group_concat() ?
            Spärliche aber hoch wirkungsvolle Information!!! Habe mich an diesem Tutorial orientiert und es klappt genauso wie es soll. Ein ganz großes Danke!

            Kommentar


            • #7
              Ich habe meine Datenbank mittlerweile um eine zusätzlich m:n Beziehung erweitert und seitdem dreht es mich übel:

              Tabelle "Produkt"
              ProduktID | Produktname | Produkthersteller
              1, Speed PC, Pegasus
              2, Power PC, Accelerate
              3, Speed PC II, Pegasus

              Tabelle "Anschluss"
              AnschlussID | Anschlussname
              1, USB
              2, Firewire
              3, eSata

              Tabelle "Anschluss_Beziehung"
              ProduktID | AnschlussID
              1, 1
              1, 3
              2, 1
              2, 2
              3, 1
              3, 2
              3, 3

              Tabelle "Drahtlos"
              DrahtlosID | Drahtlosname
              1, WLAN
              2, Bluetooth
              3, Infrarot

              Tabelle "Drahtlos_Beziehung"
              ProduktID | DrahtlosID
              1, 1
              1, 2
              2, 1
              3, 1
              3, 2
              3, 3

              Ich habe versucht mit group_concat() folgende Darstellung zu erreichen (jedoch ohne Erfolg):

              ProduktID | Produktname | Produkthersteller | Anschlussname | Drahtlosname
              1 | Speed PC | Pegasus | USB, Firewire | WLAN, Bluetooth

              Ich kann mir auch nicht vorstellen, wie die Darstellung einer Select Abfrage, die zwei oder mehr m:n Beziehungen verbinden soll, ohne group_concat() aussieht. Ist das überhaupt möglich oder benötige ich mehrere Select Abfragen?

              Gute Nacht!

              Kommentar


              • #8
                wenn group_concat funktioniert, warum solltest du es dann nicht nutzen?
                du kannst mir glauben, daß diese Funktion nicht so ohne weiteres zu ersetzen ist, ich hab da schon einiges ausprobiert.

                Kommentar

                Lädt...
                X