[Variablen] Eintrag wird doppelt angezeigt

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

  • [Variablen] Eintrag wird doppelt angezeigt

    hallo leute,

    heute habe ich ein schwieriges Problem zu lösen...

    ich habe ein Formular ,in welches Daten eingegeben und in eine DB gespeichert werden, das klappt auch einwandfrei

    Lass ich mir jetzt aber eine Übersichtsseite mit den Einträgen anzeigen, dann bekomme ich alle Einträge 3x angezeigt, obwohl der Eintrag nur einmal in der DB steht.

    woran könnte das liegen ?

    hier ein Ausschnitt aus dem Übersichtsscript
    PHP-Code:
    $sql "SELECT * FROM vorfall v,mitarbeiter m,
     einsatzstelle e  WHERE v.mitarbeiterID = m.mitarbeiterID ORDER BY "
    .$sort."";


    //echo $sql;
    $result mysql_query($sql);

    while(
    $row mysql_fetch_object($result))
    {
        
    $class = ($class=='row0') ? 'row1' 'row0';
        echo 
    "<tr class='".$class."'>
    <td><span class='bez'>"
    .$row->m_name."</span></td>
    <td><span class='bez'>"
    .$row->vorfall_text."</td><td>".date_mysql2german($row->date_added)."</td>";
    echo 
    "<td>
    <a href="
    .$_SERVER['PHP_SELF']."?site=VorfallUebersicht&action=del&id=".$row->vorfallID.">".
    "<img src=images/b_drop.png alt=löschen border=0>
    </td>"
    ;
    }

    echo 
    "</tr></table>"
    liegt der Fehler ev. an meiner SQL-Abfrage ? wenn ja, wie muss ich Daten aus 2 tabellen abfragen ?

    Zuletzt geändert von alexa; 21.02.2005, 16:28.

  • #2
    http://www.php-resource.de/forum/sho...threadid=50454
    unbedingt beachten!

    wozu dann in einer schleife auslesen, wenn du es nur 1 mal brauchst?

    Kommentar


    • #3
      unbedingt beachten!
      erledigt ?
      wozu dann in einer schleife auslesen, wenn du es nur 1 mal brauchst? [/B]
      das script soll die mitarbeiter anzeigen und einen link anbieten zum löschen, deshalb die tabellarische Übersicht...

      ich muss doch das resultset in einer Schleife auslesen, damit ich alle Daten bekomme ? oder verstehe ich da etwas nicht richtig ?
      Zuletzt geändert von alexa; 21.02.2005, 16:29.

      Kommentar


      • #4
        ich muss doch das resultset in einer Schleife auslesen, damit ich alle Daten bekomme?
        schleife erübrigt sich, wenn du nur ein ergebnis erwartest (was mit LIMIT noch zu unterstreichen wäre).

        Kommentar


        • #5
          Original geschrieben von penizillin
          schleife erübrigt sich, wenn du nur ein ergebnis erwartest (was mit LIMIT noch zu unterstreichen wäre).
          nein, ich erwarte eine liste mit Mitarbeitereinträgen.

          d.h. Mitarbeiter1
          darunter Mitarbeiter 2 usw.

          und die zeigt er auch an, nur eben 3x den gleichen eintrag und darunter 3x den nächsten eintrag

          Kommentar


          • #6
            aah.. gut. vergiss das mit dem LIMIT nicht!

            dann teste mal die query mit phpmyadmin oder so.

            Kommentar


            • #7
              Re: [Variablen] Eintrag wird doppelt angezeigt

              Original geschrieben von alexa
              liegt der Fehler ev. an meiner SQL-Abfrage ?
              natürlich, stichwort kreuzprodukt.

              wenn ja, wie muss ich Daten aus 2 tabellen abfragen ?
              bspw. per JOIN
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                genau wahsaga, das war das stichwort,
                jetzt habe ich den Query so umgeschrieben, dass er mir einen Datensatz nur noch 2x ausgibt
                PHP-Code:
                $sql "SELECT * FROM vorfall
                LEFT JOIN mitarbeiter
                ON vorfall.mitarbeiterID = vorfall.mitarbeiterID
                LEFT JOIN einsatzstelle 
                ON mitarbeiter.einsatzID = einsatzstelle.einsatzID 
                meine 3 tabellen:
                1.einsatzstelle
                Code:
                einsatzID  int(4)     Nein    auto_increment              
                einsatzstelle  varchar(50) 
                zusatz  varchar 
                ---------------------------------
                2. mitarbeiter
                 mitarbeiterID  int(4)    auto_increment              
                 einsatzID  int(4)     Nein  0      // FK Tabelle 1
                   m_name  
                ----------------------------------------
                3. Vorfall
                vorfallID  int(4)     Nein    auto_increment              
                mitarbeiterID  int(4)    FK
                vorfall_text  varchar
                als ergebnis möchte ich alle mitarbeiter mit einem Vorfall haben...

                Kommentar


                • #9
                  ok, hab jetzt den join hinbekommen:

                  Code:
                  SELECT * FROM vorfall 
                  LEFT JOIN mitarbeiter 
                  ON mitarbeiter.mitarbeiterID = vorfall.mitarbeiterID 
                  LEFT JOIN einsatzstelle 
                  ON mitarbeiter.einsatzID = einsatzstelle.einsatzID

                  Kommentar

                  Lädt...
                  X