Matchtabelle

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

  • Matchtabelle

    Hallo,

    ich habe 3 tabellen:
    - person (p_id, name, vorname)
    - interessen (int_id, hobby)
    - pers_int_zuord (pers_int_id, p_id, in_id)

    Ich möchte das die eingetragenen Personen mit "ihren" jeweiligen
    Hobbys angezeigt werden.

    Bsp.: Martin, Fussball, Schwimmen
    Heino, Handball, Schwimmen
    usw.

    Die Hobbys haben in der interessen tab eine eindeutige id
    int_id1 = Fussbal
    int_id2 = SChwimmen
    int_id3 = Handball
    usw.

    Dieses Script listet mir bisher nur die Datensätze aus der tab person auf.
    Die Datensätze aus der tab interessen fehlen und ich habe keine Ahnung
    warum. Kann mir jemand helfen???

    Danke im voraus !!!

    PHP-Code:
    <?php 
    include("hidden/db_connect2.inc"); 
    require(
    "hidden/biblio2.inc"); 
    seitenAnfang(""); 

    if(@
    mysql_connect($host$user)) 
      { 
      if(@
    mysql_select_db($dbname)) 
        { 
           
    //Hier werden erstmal grundsätzlich alle Personen aus der Datenbank geholt 
        
    $erg mysql_query("SELECT p_id, name, vorname FROM person ORDER BY name"); 
        if(
    $erg
            { 
            echo 
    "<table border='1'>"
            echo 
    "<tr>"
            echo 
    "<th>Name</th>"
            echo 
    "<th>Vorname</th>";
            echo 
    "<th>Interessen</th>";
            echo 
    "</tr>"
            while(
    $row=mysql_fetch_row($erg))
                {
                echo 
    "<tr>";
                for(
    $i=1$i<mysql_num_fields($erg); $i++)
                    {
                    echo 
    "<td>" $row[$i] . "</td>";
                    }
                }
                 
                
    //Hier werden nun alle Interressen der Jeweiligen Person nachselectiert 
                
    $sql "SELECT i.hobby FROM pers_int_zuord pz, 
                interessen i Where pz.p_id = '
    $row[p_id]' and i.int_id = pz.int_id ORDER BY i.hobby";
                
    $result mysql_query($sql) ;
                echo 
    "<td>"
                 
                
    //Hier werden alle Hobbys der Person in der Spalte untereinander aufgelistet 
                
    while($row2=mysql_fetch_row($result)) 
                    { 
                    echo 
    "".$row2[hobby]."/n"
                    } 
                echo 
    "</td>"
                echo 
    "</tr>"
            } 
            else
            {
            echo 
    "Nix da";
            }
            echo 
    "</table>"
        } 
        else 
        echo (
    "Keine Verbindung zur Datenbank"); 
       } 
    seitenEnde(); 
    ?>

  • #2
    Das musst du über JOINS machen.
    Nutz mal die Suche hier im Forum, da findest du garantiert was.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      gibt es keine Möglichkeit das es mit dem Script von oben funzt,
      bzw. wie muss ich was ändern.

      mfg

      Kommentar


      • #4
        doch, die gibt es bestimmt

        aber mit nem JOINhast du nur eine abfrage, les dich doch einfach mal ein
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Hi,

          bekomme mit diesem Script:

          PHP-Code:
          $erg mysql_query("SELECT p.vorname, p.name, i.hobby FROM person p 
                               INNER JOIN pers_int_zuord pz USING (p_id) INNER JOIN interessen i USING (int_id) ORDER BY p.name"
          ); 
              if(
          $erg
                  { 
                  echo 
          "<table border='1'>"
                  echo 
          "<tr>"
                  echo 
          "<th>Name</th>"
                  echo 
          "<th>Interessen</th>"
                  echo 
          "</tr>"
                  while(
          $row=mysql_fetch_row($erg)) 
                   { 
                   echo 
          "<tr>"
                   for(
          $i=1$i<mysql_num_fields($erg); $i++) 
                      { 
                      echo 
          "<td>" $row[$i] . "</td>"
                      } 
                   } 

          diese Ausgabe:

          Name Interessen
          horstmann fussball
          Mueller handball

          die beiden Personen haben aber noch mehr Hobbys. z.B. hat Mueller auch Fussball als Hobby, wie kann ich das zusätzlich ausgeben??????

          Danke

          Kommentar


          • #6
            1.) steht diese weitere zuordnung in der tabelle?
            2.) </tr> sollte auch irgendwo auftauchen
            3.) was kriegst du, wenn du die ausgabe in phpmyadmin laufen lässt?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              hi,
              das </tr> gibt es.

              Die Ausgabe in PHPMYADMIN ist die gleiche wie im IE.

              name interesse

              Mueller fussball


              ich hätte aber gern:

              name interesse

              Mueller fussball, handball

              Die Hobbys stehen in der Tab interessen:

              int_id hobby
              1 fussball
              2 handball
              3 schwimmen
              usw.

              in der Tab pers_zu_ord kann ich aber leider den Personen nur eine int_id zuweisen:

              pers_int_id = 1

              p_id = 1(Mueller)

              int_id = 1

              Wo bringe ich jetzt die int_id 2 für "Handball" unter???
              wie krieg ich's hin das er beide ausgibt

              Kommentar


              • #8
                mach einen neuen datensatz in pers_int_zuord mit p_id = 1 und int_id = 2
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  hi,

                  das war auch meine Lösung.

                  Das Problem ist, wir haben in unserem Jugendtreff so ca. 30
                  "ständige Mitglieder". Die haben natürlich auch zig verschiedene
                  Interessen. Da muss ich für jeden zig neue Zeilen eintragen.
                  Genau das wollte ich vermeiden, da ich gelesen habe das Mehrfacheinträge
                  nicht so gut für die Performance sind. Ok, bei 30 Leuten ist es kein Problem,
                  aber was ist wenn es doch mal 1000 werden ???

                  Mit der lösung kann ich ja dann die Interessen für die einzelnen Leute ja auch gleich in der person Tab speichern. Nur dann kommt dort wohl ca. 20mal fussball, 15mal Pc usw. vor.

                  Ich dachte das ihr Profis hier ne andere Lösung vorschlagen könnt.
                  Gibts da wirklich keine, das können die doch in Datenbanken die
                  zigtausende Kunden verwalten doch nicht so machen. Oder hat dort jeder Kunde eine eigene Tab mit seinen daten?

                  mfg

                  Kommentar


                  • #10
                    deine idee mit drei tabellen, eine für personen, eine für interessenund eine für die zuordnung personen <- -> interessen is genau richtig
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar

                    Lädt...
                    X