Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Report zeigt nicht alle Datensätze

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Report zeigt nicht alle Datensätze

    Hallo,

    ich habe folgendes Problem.

    Mit fpdf erstelle ich einen Report aus meiner MySQL Datenbank. Soweit funktioniert das auch ...

    Jetzt soll aber ein Report erstellt werden, wo alle Datensätze ausgegeben werden, die einem bestimmten Kriterium entsprechen (z.B. Datum der Erstellung).

    Der Report wird auch erfolgreich erstellt, leider fehlt ein Datensatz (von 3 werden nur 2 ausgegeben).

    Ich habe gerade mal die Probe gemacht und einen vierten DS angelegt. Jetzt gibt der Report 3 aus (der 4. fehlt immer noch).

    Wie ich jetzt festgestellt habe, handelt es sich um den ersten Datensatz in der Datentabelle ...

    Hier mal der Code ...(auszugsweise)

    PHP-Code:
    $ip $_SERVER["REMOTE_ADDR"];
    define('FPDF_FONTPATH','fpdf/font/');
    require(
    'fpdf/fpdf.php');

    //$id = 86;
    $id $_POST["auswahl"]; // Übergabe der AMOK ID aus der Auswahl
    include('include/dbconnect.inc.php');
    $sql="SELECT * FROM tbl_XXX a, tbl_Schulen o  WHERE a.XXX_Objekt = o.ID_Schule";
    $abfrage=mysql_query($sql);
    $ergebnis=mysql_fetch_array($abfrage);
    //
    // Abfrage nach vorhandenen Dokumenten, die zum Fall gehören
    // werden unten aufgelistet

    ...

    $pdf=new PDF('P','mm','A4');
    $pdf->AliasNbPages();
    $pdf->SetDisplayMode('fullpage');

    ...

    while (
    $ergebnis=mysql_fetch_array($abfrage))

    {
    // Arial 12
    $pdf->SetFont('Arial','B',12);
        
    // Hintergrundfarbe
    $pdf->SetFillColor(200,220,255);
        
    // Titel
    $pdf->Cell(0,6,"Abschnitt 1: Grunddaten des Sachverhaltes",1,1,'L',1);
        
    // Zeilenumbruch
    $pdf->Ln(4);
    // Ab hier beginnt die Ausgabe der Grunddaten zum XXX-Fall
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'XXX-ID: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['XXX_ID'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Datum: ',0);
    $pdf->SetFont('Arial','',10);
    $strDatum date_mysql2german($ergebnis['XXX_datum1']);
    $pdf->Cell(150,8,$strDatum,0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'aktuelle XXX: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['XXX_aktuell'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'beendet am: ',0);
    $pdf->SetFont('Arial','',10);
    $strdatum69 date_mysql2german($ergebnis['XXX_SV_beendet']);
    $pdf->Cell(150,8,$strdatum69,0);
    $pdf->Ln();
    $pdf->Cell(0,5,'_______________________________________________________________________________________________');
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Objektname: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_AmtlicheBezeichung'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Schulform: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_Schulform'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Straße/HausNr.: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_Straße'] . ' ' $ergebnis['Schule_Hausnummer'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'PLZ/Ort/Stadtteil: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_PLZ'] . ' ' $ergebnis['Schule_Ort'] . '-' $ergebnis['Schule_Ortsteil'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Telefon: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_Telefon'], 0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8'Fax: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_FAX'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(0,5,'_______________________________________________________________________________________________');
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Ansprechpartner: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_Ansprechpartner'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Funktion: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_Funktion'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'EMail: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_EMail'], 0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8'Webseite: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8$ergebnis['Schule_Internet'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Schülerzahl: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->Cell(150,8,$ergebnis['Schule_Schueleranzahl'],0);
    $pdf->Ln();
    $pdf->SetFont('Arial','B',10);
    $pdf->Cell(40,8,'Bemerkungen: ',0);
    $pdf->SetFont('Arial','',10);
    $pdf->MultiCell(150,8,$ergebnis['Schule_Bemerkungen'],0);
    $pdf->Ln();
    //
    }
    //
    $pdf->Output();
    $pdf->exit(); 

    Hat jemand eine Idee?


  • #2
    Der übliche Newbie-Fehler ...

    PHP-Code:
    $abfrage=mysql_query($sql);
    $ergebnis=mysql_fetch_array($abfrage); 
    Hier holst du dir bereits den ersten Datensatz, der „Zeiger“ wird damit auf den zweiten gesetzt - also startet deine While-Schleife logischerweise mit der Verarbeitung des zweiten Datensatzes.

    Kommentar


    • #3
      Zitat von ChrisB Beitrag anzeigen
      Der übliche Newbie-Fehler ...

      PHP-Code:
      $abfrage=mysql_query($sql);
      $ergebnis=mysql_fetch_array($abfrage); 
      Hier holst du dir bereits den ersten Datensatz, der „Zeiger“ wird damit auf den zweiten gesetzt - also startet deine While-Schleife logischerweise mit der Verarbeitung des zweiten Datensatzes.

      ... OK, fällt also bei der "normalen" Ausgabe nicht so auf, erst, wenn ich mit der While Schleife dran gehe ...

      ... unklar ist für mich jetzt aber, was ich da ändern soll/muss????

      Kommentar


      • #4
        Diese Zeile löschen:
        $ergebnis=mysql_fetch_array($abfrage);

        SELECT * schreibt man auch nicht, sondern führt alle gewünschten Spalten explizit auf.
        PHP-Code:
        if ($var != 0) {
          
        $var 0;

        Kommentar


        • #5
          ... uppps ... habe den fehler gefunden ... ich starte die Abfrage zwei mal ...

          jetzt sollte es nur noch so aussehen
          PHP-Code:
          $abfrage=mysql_query($sql);  

          ....
          while (
          $ergebnis=mysql_fetch_array($abfrage))

          jetzt habe ich auch alle 4 DS wieder (freu) ...

          .... Danke für den Denkanstoss ---

          Kommentar


          • #6
            Zitat von Wolla Beitrag anzeigen
            Diese Zeile löschen:
            $ergebnis=mysql_fetch_array($abfrage);

            SELECT * schreibt man auch nicht, sondern führt alle gewünschten Spalten explizit auf.
            benötige aber alle Spalten der Tabelle .... für die Gesamtausgabe ... muss ich dann auch alle Spaltennamen benennen???

            Kommentar


            • #7
              Ja!
              http://hallophp.de

              Kommentar


              • #8
                Zitat von Asipak Beitrag anzeigen
                Ja!
                ... und warum? Ich meine da müsste ich knapp 150 Felder benennen? Worin liegt der Vorteil/Nachteil?

                Kommentar


                • #9
                  Datenbanken - Warum soll ich nicht SELECT * schreiben?

                  Ich meine da müsste ich knapp 150 Felder benennen?
                  Das ist eventuell auf ein falsches Datenbankdesign zurückzuführen.
                  http://hallophp.de

                  Kommentar


                  • #10
                    Zitat von Asipak Beitrag anzeigen
                    Datenbanken - Warum soll ich nicht SELECT * schreiben?

                    Das ist eventuell auf ein falsches Datenbankdesign zurückzuführen.
                    nein, dass ist schon nach der Normalisierung ... das ist ein Riesending ...

                    Kommentar


                    • #11
                      Dein Beispiel sieht nicht nach 150 Spalten aus. Hast du da pro Zeile nochmal 80 Spalten für die Namen der Schüler, oder was bläht die Zeile so auf?
                      PHP-Code:
                      if ($var != 0) {
                        
                      $var 0;

                      Kommentar


                      • #12
                        Zitat von Wolla Beitrag anzeigen
                        Dein Beispiel sieht nicht nach 150 Spalten aus. Hast du da pro Zeile nochmal 80 Spalten für die Namen der Schüler, oder was bläht die Zeile so auf?

                        ... lach ... nein, das ist nur ein kleiner Auszug aus dem Code ... insgesamt gibt es für den Report 1957 Codezeilen ...

                        Kommentar


                        • #13
                          Was die Frage aber nicht beantwortet, wieso die Tabelle so viele Spalten braucht.
                          PHP-Code:
                          if ($var != 0) {
                            
                          $var 0;

                          Kommentar

                          Lädt...
                          X