PDF Generierung aus DB fehlerhaft

  • PHP

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    PDF Generierung aus DB fehlerhaft

    2.Nachtrag:
    Nutze nun DomPDF. Damit geht alles einwandfrei.

    Nachtrag:
    Problem mit der Variable gelöst.
    Neues Problem:
    Tabellenbreite fest festlegen - aber wie?

    Guten Abend,

    ich versuche zurzeit die Datensätze meiner MySQL Datenbank in eine PDF-Datei zu bekommen. Ich nutze, um die Reihen automatisch dynamisch anzupassen, das hier. Trage ich die Werte manuell ein, geht es wunderbar. Lese ich das Ganze allerdings aus meiner Datenbank aus, so wird die Variable fälschlicherweise in der Tablle angezeigt und nicht der Inhalt.

    Vielleicht steh ich auch gerade auf dem Schlauch, aber irgenwie weiß ich nicht weiter, wobei das Problem eigentlich ziemlich simpel ist. Vielleicht habe ich heute aber einfach schon zu viel programmiert und überseh es einfach.

    Ich wäre euch auf jeden Fall über Hilfe sehr dankbar!

    PHP-Quellcode

    1. $htmlTable='<TABLE>';
    2. $htmlTable .='<TR><TD>ID</TD></TR>';
    3. $readout = mysqli_query($conn, "SELECT * FROM Table WHERE geschlossen=0");
    4. while($read = mysqli_fetch_object($readout)){
    5. $htmlTable .= '<TR><TD>$read->ID</TD></TR>';
    6. }
    7. $htmlTable .='</TABLE>';
    8. $output = $htmlTable; //absichtlich mal so, um zu testen, ob dies das Problem löst.
    9. $pdf=new PDF_HTML_Table();
    10. $pdf->AddPage(l);
    11. $pdf->SetFont('Arial','',10);
    12. $pdf->WriteHTML("<BR>$output<BR>");
    13. $pdf->Output();

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „GCAsk“ ()

    dotdev schrieb:

    Versuche mal folgendes:

    PHP-Quellcode

    1. $htmlTable .= '<TR><TD>' . $read->ID . '</TD></TR>';


    Heist auch die Spalte ID oder id? Groß/Kleinschreibung.

    Tatsächlich. Es war so einfach. Muss ich mir merken, hab das gestern total übersehen. Das gleiche Problem hatte ich nämlich auch bei dem von 3daycliff erwähnten Thread.

    Habe allerdings noch ein Problem.

    Und zwar passt sich die Reihe zwar an der Größe an, allerdings nur in der Höhe. Kleine Spalten, z.B. die ID, will ich aber nur eine kleine Spaltenbreite zuweisen. Weiß jemand, wie ich das hier mit dem hier machen kann? <TD STYLE=..> oder wie? Danke euch im Voraus!

    dotdev schrieb:

    Füge ein THEAD hinzu und setze für die überschrift die Breite z.B.

    HTML-Quellcode

    1. <th width="10">ID</th>

    So sparst du dir das für den Rest (td wo die ID steht).
    w3schools.com/tags/att_th_width.asp

    Wie man eine Tabelle aufbaut, ist mir natürlich bewusst.

    Mein Anliegen ist aber auf das hier bezogen.
    THEAD und TH funktionieren nicht, da wird mir Müll angezeigt.
    width='irgendwas' ändert nichts.

    Wie kann ich die Größe der Spalte manuell festlegen?
    Müll?? Vielleicht hast du irgendwo ein TAG nicht richtig geschlossen etc...
    Du kannst auch die weniger attraktive Variante Probieren
    (Zeile 2 deines Codes)

    PHP-Quellcode

    1. $htmlTable .='<TR><TD style=\"width: 40px;\">ID</TD></TR>';

    oder

    PHP-Quellcode

    1. $htmlTable .= '<thead><tr><th width=\"20\">ID</th></tr></thead>';

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dotdev“ ()

    dotdev schrieb:

    Müll?? Vielleicht hast du irgendwo ein TAG nicht richtig geschlossen etc...
    Du kannst auch die weniger attraktive Variante Probieren

    PHP-Quellcode

    1. $htmlTable .='<TR><TD style=\"width: 40px;\">ID</TD></TR>';

    oder

    PHP-Quellcode

    1. $htmlTable .= '<thead><tr><th width=\"20\">ID</th></tr></thead>';


    Nein, Tags sind alle geschlossen.

    TH kennt das Skript wohl nicht. Da wird stattdessen ne komische Linie angezeigt.
    Die weniger attraktive Variante funktioniert auch nicht :(

    Und noch ein Problem. Ich habe eine Spalte mit "ß". Sie heißt "Maßnahmen". Nun habe ich das Problem, dass diese leer bleibt beim Auslesen. Notepad++ ist aber auf UTF-8 ohne BOM eingestellt. mysqli_set_charset ist auch auf utf-8 (Umlaute werden auch korrekt ausgelesen). Selbst mit utf8_decode($read->Maßnahmen) geht es nicht. Woran liegt das?
    &szlig hatte ich auch schon versucht, ebenfalls ohne Erfolg. Auch mit Semikoleon. Beide Male sind dann Spalten vertauscht und ODP (was auch immer das bedeutet?) steht zusätzlich drin.

    var_dump oder print_r geben mir jeweils nur die Tabelle wieder (Maßnahmen sind leer!) beziehungsweise var_dump nur einen string und die Zeichenanzahl von über 3000


    War zu doof. hab die Variable $htmlTable genommen, anstatt die einzelne Spalte.

    Also, folgendes:

    Eine funktionierende Spalte gibt mir aus: string(113). Die Spalte Maßnahmen hingegen (die das selbe testweise beinhaltet) gibt mir anstelle string(113) nur string(9) aus und dazu ist sie sogar noch leer (zumidnest gibt mir var dump nichts aus im Gegensatz zur funktionierenden Spalte, da steht der Inhalt. string(9) - Maßnahmen hat 9 Buchstaben - ob das damit zusammenhängen könnte? @dotdev

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GCAsk“ ()

    dotdev schrieb:

    Sind die Daten auch richtig in der DB?
    Ich bräuchte mehr Details um dir helfen zu können. Die volständige Funktion und wie die DB ausschaut mit BSP. Daten.

    Die Daten sind richtig in der DB.
    Ich lese die Daten ja zusätzlich bei einer anderen Datei in einer Tabelle aus und lasse sie mir dort ausgeben.

    Werde dir morgen, wenn du möchtest, eine PN mal zusenden.
    Nebenbei bzgl Umlaute und shit - was hast du denn für nen Zeichensatz in der Datenbank? Ich verwende immer utf8_unicode_ci. Dann muss natürlich noch in den Mysql Verbindungsoptionen der Charset eingestellt sein (alternativ [b][/b]PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"[b][/b]) und der meta charset der Seite muss passen.

    Link :thumbup:
    Hello World
    Ja, ist auch auf UTF-8 gestellt.

    Da ist kein Fehler, denn beim normalen Skript (Auslesen der Datensätze in Tabelle) geht auch alles wunderbar. Schätze, dass das irgendwie an diesem HTML2PDF Skript liegt.

    string(9) kommt übrigens dadurch zustande, dass der String ja noch <TD></TD> beinhaltet (-> 9 Zeichen).

    Werde echt noch wahnsinnig. Zudem kriege ich es immer noch nicht hin, eine feste Spaltenbreite zu definieren.
    Hi,

    ich weiß dass es bei html2pdf mit den Spaltenbreiten klappt, wenn man der table über CSS ein width von 100% gibt und dann den einzelnen Spalten zusätzlich feste Werte (th und td). In Millimeter.

    $pdf = new HTML2PDF('P', 'A4', 'de', true, 'UTF-8'); <- hier auch UTF8 eingestellt?

    Link :thumbup:
    Hello World

    Link schrieb:

    Hi,

    ich weiß dass es bei html2pdf mit den Spaltenbreiten klappt, wenn man der table über CSS ein width von 100% gibt und dann den einzelnen Spalten zusätzlich feste Werte (th und td). In Millimeter.

    $pdf = new HTML2PDF('P', 'A4', 'de', true, 'UTF-8'); <- hier auch UTF8 eingestellt?

    Link :thumbup:

    Werde ich später mal probieren.

    Nur vorab: Reden wir vom gleichen Skript? fpdf.org/en/script/script70.php