Mehrere Datensätze in Variable speichern

  • Hallo zusammen


    Ich möchte mit Hilfe von fpdf ein .pdf-File erstellen. Im meinem .pdf-File sind auch angaben aus meiner Datenbank.


    Damit es mir die Werte aus der DB übernimmt, habe ich die Abgefragten Ergebnisse in eine Variable geschrieben und die dem Text beigefügt. Die Abgefragten Werte direkt eintragen geht nicht.


    PHP
    $pdf->Cell (30,0,"Text mit $variablen",0,0,'L')


    das geht


    PHP
    $pdf->Cell (30,0,"Text mit $row_abfrage['datum']",0,0,'L')


    Das geht nicht


    Damit könnte ich leben, ich schreib die Werte einfach zuerst in die Variable und gut ist.


    Nun habe ich aber das Problem, dass ich aus einer Verknüpfungstabelle, mehrere Ergebnisse in mein .pdf-File schreiben möchte.


    Hat jemand eine Idee wie ich das machen könnte? Wie schreib ich mehrere Datensätze in mein PDF?


    Vielen Dank schon jetzt für Eure Unterstützung


    Gruss
    PhipsCH

  • Du kannst den String "Text mit ..." unterbrechen/verketten.
    Bsp:

    PHP
    $str = "das ist mein " . $text_zu_verketten . " und das " . $diesunddas . " ... und so ...";


    In Deinem Bsp:

    PHP
    $pdf->Cell (30,0,"Text mit " . $row_abfrage['datum'],0,0,'L')
  • Oh. vielen dank wieder einen Schritt eigespart.


    Aber wie mach ich denn, wenn ich mehrere Datensätze habe?


    Ich habe zum Beispiel aus einer Verknüpfungstabelle 3 Datensätze die zum Aktuellen Datensatz gehören.
    Diese möchte ich alle auch anzeigen.

  • Kommt daraus an, wie Du sie ausgeben willst.
    In der gleichen Zelle? Oder alle in einer eigenen Zelle?


    Ich denke mal Du hast ein Array aus der DB wie zB

    Code
    array(
        0 => array( 'datum' => ..., 'dies' => ..., 'das' => ...),
        1 => array( 'datum' => ..., 'dies' => ..., 'das' => ...),
    ...
    )


    dann machst Du für jedes (foreach()) zB

    PHP
    foreach($db_datensaetze as $key => $array)
    {
        $pdf->Cell (30, 0, "Text mit " . $array['datum'] . " und " . $array['dies'] . " und " .$array['das'] , 0, 0, 'L');   
    }
  • Ich habe es jetzt mal so versucht.


    PHP
    do { 
    if ($row_podidate['podizei_datum'] != "" ) 
    { 
    $MeinArray[] = array( 
    'datum' => $row_podidate['podizei_datum'], 
    ); 
    } 
    } while ($row_podidate = mysql_fetch_assoc($podidate));




    Und danach


    PHP
    $pdf->Cell(50,0,"" . $MeinArray[0]['datum'] . ", " . $MeinArray[1]['datum'] . ", " . $MeinArray[2]['datum'] . ", " . $MeinArray[3]['datum'] . ", " . $MeinArray[5]['datum'] . ", " . $MeinArray[5]['datum'],0,0,'L');


    Aber irgendwie entspricht das nicht meinem Wunsch.
    Die Komas sind etwas unschön. Macht da eine Abfrage sinn, ob etwas im Array steht? und erst dann das Koma?


    Oder gibt es eine andere Lösung?

  • Das war schon fast richtig. (obwohl es kein "richtig" gibt, denn viele Wege ...)
    So würde ich es machen: (ein while ist mMn "schöner" als ein do while)

  • Kann ich denn das Datumformat auch bei einem Array formatiert (d.m.Y) ausgeben?


    Ich hab es mit date("d.m.Y") versucht. jetzt hab ich immer das aktuelle Datum drin. Ich will aber das aus der Datenbank.


    Gruss


    Philipp

  • Iah habe das ganze nun einmal so versucht umzusetzen.



    Woher kommt das Aktuelle Datum und die Aktuelle Uhrzeit?


    Gruss


    PhipsCH

  • Jetzt steht bei mir nicht mehr das aktuelle Datum, sondern 01.01.1970.


    Die Anzahl der Daten die er ausgibt, sind richtig, es sind 3 Datensätze. aber dreimal steht 01.01.1970

  • Was ist das für ein Format, was aus der DB kommt?
    DATE oder DATETIME?
    Die date() Funktion braucht einen "Unix Timestamp".
    Den bekommst Du zB mit strtotime() http://php.net/function.strtotime

    PHP
    $MeinArray[] = date("d.m.Y", strtotime($row_podidate['podizei_datum']));
    // bsp: echo date("d.m.Y", strtotime('2014-11-20 04:19:53'));


    EDIT:
    info: immer wenn Du " 01.01.1970" siehst, kannst Du davon ausgehen, dass die date() Funktion den Wert 0 (Zahl Null) bekommen hat.
    01.01.1970 ist das Datum, "an dem die Zeitrechnung" begann.

  • In der DB habe ich das Format DATE. da steht das Datum auch als 2015-08-07 drin


    PHP
    $MeinArray[] = date("d.m.Y", strtotime($row_podidate['podizei_datum']));


    gibt auch 01.01.1970

  • wenn ich

    PHP
    echo $row_podidate['podizei_datum'];


    ausgebe, erhalte ich das Datum, welches in der DB steht im "Ami-Format"


    Wenn ich:

    PHP
    var_dump($row_podidate['podizei_datum']);


    ausgebe, erhalte ich NULL.


    woher kommt das? Hat es möglicherweise damit zu tun, das ich das Format in der DB mal nachträglich von VARCHAR auf DATA geändert habe?

  • Was Du da schreibst passt irgend wie vorn und hinten nicht zusammen :D


    Wenn Du an der gleichen Stelle im Script, beim gleichen Ablauf ein echo und ein var_dump ausgibst,
    dann kann das eine nicht ein Datum sein und das andere NULL.


    var_dump gibt den Typ und Inhalt einer Variable aus. Das heißt: wenn var_dump NULL "sagt", dann ist es NULL =)
    Zeig mal den Teil des Scripts.


    Wenn Du in der DB ein Feld von VARCHAR auf DATE (ich denke Du meinst DATE) stellst, dann sind entweder noch (umgewandelte) Datensätze vorhanden, oder eben nicht.
    Ein "komisches" oder "kaputtes" Format, das nicht mehr richtig geht o.ä. gibt es nicht.

  • Führe mal das hier aus und poste das Ergebnis:

  • Wenn ich den Code einfüge bekomme ich einen Fehler, das in Zeile 9 etwas nicht stimmt.


    das finde ich ja auch so seltsam.


    Hier die mySQL-Abfrage:


    und hier die Ausgabe:

    PHP
    do { ?> 
    <?php echo $row_podidate['podizei_datum']; ?> <?php echo $row_podidate['podizei_idpodi'];echo "<br />" ?> 
    <?php } while ($row_podidate = mysql_fetch_assoc($podidate)) ; ?> 
    
    
    
    
    <?php var_dump($row_podidate['podizei_datum']);
  • Ähm ja kein Wunder *schäm* 'Array to string conv...' ? ^^


    Bekommst gleich noch was..
    Also hier das was du mal ausführst .. ohne irgendwas anderes in der Datei: (Daten am Anfang natürlich anpassen)


    Und hier das Ergebnis was ich bekomme:


    Bitte Poste dein Ergebniss dann

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!