Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrageergebnis in mehreren Textfeldern

Einklappen

Neue Werbung 2019

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

  • Abfrageergebnis in mehreren Textfeldern

    Hallo,

    ich bin dabei ein Frontend in PHP für eine MySQL Datenbank zuschreiben.
    Soweit läuft alles schon ganz gut.
    Für jede Person gibt es 3 Fälle. Ergo hat jede Person 1 Ds in der tbl_person und 3 Ds in der tbl_ist. Der Foreign_key ist die Versicherungsnummer.
    Ich habe 2 Tabellen, die ich via PHP abfrage.
    -> Das klappt.
    Danach will ich die Daten in Textfeldern ausgeben.
    -> Klappt auch soweit, nur...
    Nun das Problem:

    Bei der Ausgabe der 3 Fälle, wird mir immer nur der erste angezeigt.
    Zum besseren Verständnis hier der PHP_code des Formulars:
    Wie gesagt es wird mir immer nur der erste Fall ausgegeben.
    Die Personendaten funzen wunderbar.

    WO ist mein (Denk-)fehler?

    VG und Danke für Eure Hilfe

    Cato

  • #2
    p.VersicherungsNR = i.VersicherungsNR
    and v.V_id = p.V_id
    Was ist V_id?

    Kommentar


    • #3
      Das ist die Tabelle, in der die Klarnamen und Adressen der Versicherungen stehen. Ergo, sie dient der Normaliesierung.
      Beim Erfassen wird nur die Versicherungsnummer eingegeben und in der DB gespeichert.
      Bei der Ausgabe und beim Ausdruck wird der Name der Versicherung ausgegeben.


      VG

      Cato

      Kommentar


      • #4
        Na weil Du je Datensatz immer nur einen Fall hast. Du erzeugst kein Resultset mit drei Fällen je Person, dazu müsstest Du entweder die Tabelle tbl_ist 3mal joinen oder etwas klüger mit einem mehrdimensionalen array arbeiten

        Kommentar


        • #5
          V_id ist keine Tabelle sondern ein Feld.
          Was macht V_id?

          Kommentar


          • #6
            V_id ist der primary key in der tbl_versicherung und
            der foreign key in der tbl_ist.
            In der tbl_versicherung stehen die Klarnamen und Adressen der Versicherungen.
            Wie gesagt, wird in der tbl_person nur die V_id gespeichert.
            Erst bei der Abfrage wird die V_id in den Klarnamen umgewandelt, welcher ausgegeben wird.

            Wenn ich ein echo $num_rows nach der Abfrage einsetze, wird mir bei meinem Testdatensatz die Zahl "2" ausgegeben, da ich im Testdatensatz 2 Fälle eingegeben habe.
            Die 2 Datensätze (Reihen) werden also gefunden, aber nicht ausgegeben.
            VG

            Cato

            Kommentar


            • #7
              Und was ist dann
              p.VersicherungsNR = i.VersicherungsNR
              ?
              Oder als zusammengesetzte Frage: Warum
              p.VersicherungsNR = i.VersicherungsNR
              and v.V_id = p.V_id
              ?

              Kommentar


              • #8
                p.VersicherungsNR = i.VersicherungsNR

                verbindet die tbl_ist mit der tbl_person.
                Die VersicherungsNR ist eineindeutig. Sprich, es werden nur die Falldaten ausgegeben, wo die VersicherungNR identisch ist. In meinem Testfall halt zwei.

                zB. 1234567890 | J7 | 2008-03-15 | 0000-00-00 ...
                1234567890 | H4 | 2008-04-02 | 2008-04-19...

                and v.V_id = p.V_id
                holt zur entsprechenden Person, mit entsprechender VersicherungsNR den Klarnamen aus der tbl_Versicherung.

                zB. 01 = XYZ Versicherung

                Die Ausgabe müsste also lauten:
                Nachname:
                Vorname :
                :
                :
                Versicherungsname: XYZ Versicherung
                Fall 1:
                1234567890 | J7 | 2008-03-15 | 0000-00-00 ...
                Fall 2:
                1234567890 | H4 | 2008-04-02 | 2008-04-19 ...

                Kommentar


                • #9
                  Zitat von HPR1974 Beitrag anzeigen
                  Na weil Du je Datensatz immer nur einen Fall hast. Du erzeugst kein Resultset mit drei Fällen je Person, dazu müsstest Du entweder die Tabelle tbl_ist 3mal joinen oder etwas klüger mit einem mehrdimensionalen array arbeiten
                  Wo meinst Du denn dass Du zu deiner PErson die drei Fälle aus der DB holst und wo meinst Du sie denn auszugeben?

                  Kommentar


                  • #10
                    Erstmal können wir ja gucken, ob die Abfrage überhaupt drei Datensätze liefert
                    PHP-Code:
                    // 4. Select_Komando an die Datenbank senden
                    $erg mysql_query($abfrage) or die ("Select nicht möglich: " mysql_error());

                    // 5. Ergebnis zeilenweise auslesen und Ergebnis anzeigen
                    $num_rows mysql_num_rows($erg);

                    var_dump($num_rows__FILE____LINE__); // <--- Debug

                    if ($num_rows

                    Kommentar


                    • #11
                      Holen:
                      Abfrage_code: 3. + 4. und zum Teil auch 5.
                      5. zerlegt das Abrfageergebnis in seine einzelnen Teile, entsprechend den Spalten der Tabellen.

                      Ausgeben:
                      Abfrage_code:
                      5. nach der Zerlegegung werden die entstandenen Teile den entsprechenden Eingabe(Text)feldern zugewiesen $f_id1 = $ds[7]-> siehe formular_code unter //Tabelle
                      PHP-Code:
                      <td align=\"center\"><input type=\"text\" name=\"txt_f_id1\" maxlength=\2\" size=\"20\" value=\"$f_id1\"></td> 
                      Es werden bei der Variablen $num_rows ja 2 Zeilen erkannt, nur nicht ausgegeben!

                      Kommentar


                      • #12
                        Welcher Code verhindert, dass der zweite (oder dritte, vierte, ...) Durchlauf von
                        $nachname = $ds[0];
                        $vorname = $ds[1];
                        $geburtsname = $ds[2];
                        $gebdatum = $ds[3];
                        $sn = $ds[4];
                        $versicherungsnummer = $ds[5];
                        $versicherungstraeger = $ds[6];
                        $f_id1 = $ds[7];
                        $eingang1 = $ds[8];
                        $angefordert1 = $ds[9];
                        $zus1 = $ds[10];
                        $erinnert1 = $ds[11];
                        $erledigt1 = $ds[12];
                        $stand1 = $ds[13];

                        $f_id2 = $ds[7];
                        $eingang2 = $ds[8];
                        :
                        :
                        $stand3 = $ds[13];
                        nicht alle Werte des ersten Durchlaufs restlos überschreibt?

                        Kommentar


                        • #13
                          Das weis ich nicht.
                          Der erste Datensatz wird nicht überschrieben, denn er wird ja angezeigt/ausgegeben.
                          Datensatz 2 und 3 werden halt nicht angezeigt. Aber warum?

                          Kommentar


                          • #14
                            Nochmal Dein Datenfetch aus Deiner DB wird Dir nicht das gewünschte Ergebnis bringen, da Du weder die Tabelle mit den Fällen mehrfach joinst noch ein mehrdimensionales array erzeugst.

                            In Deinem Code werden Variablen benutzt, die Du wahrscheinlich nie befüllst, da Du aber den Code durch ... maskiert hast wirst Du so Deinen Denkfehler nie in den Griff bekommen

                            Kommentar


                            • #15
                              Zitat von Cato Beitrag anzeigen
                              Das weis ich nicht.
                              Das solltest Du aber. Das passiert nicht von alleine. Du musst das programmieren.
                              Ich glaube, Du hast im Moment folgendes Problem (vereinfacht)
                              PHP-Code:
                              <?php
                              $result 
                              = array(array('Maier','pleite'),array('Schulz','reich'));
                              while(
                              $row=next($result))
                              {
                                  
                              $name $row[0];
                                  
                              $solvenz $row[1];
                              }
                              echo 
                              $name ' ' $solvenz;

                              Kommentar

                              Lädt...
                              X