Ankündigung

Einklappen
Keine Ankündigung bisher.

PDF aus DB via ODBC

Einklappen

Neue Werbung 2019

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

  • PDF aus DB via ODBC

    Hallo,

    habe folgendes Problem.

    Ich muss via ODBC auf eine Datenbank zugreifen und
    BLOBS in Form von PDF daten auslesen und anzeigen.

    Habe mir eine Testdatei geschrieben die leider kein
    Ergebnis liefert.

    Wenn ich per Access auf diese DB schaue kann ich die BLOBS super anzeigen.

    Es liegt wohl an mir

    Hier mal der Code :

    Code:
    header("Content-type: application/pdf");
    $connid = odbc_connect($dbname,$user, $passwort, SQL_CUR_USE_ODBC)
    $sqlab="SELECT \"AR_Objekt\" FROM \"tblArchiv\" WHERE \"AR_ID\"=2;";
    $erg = odbc_exec($connid,$sqlab)
    odbc_binmode($erg,ODBC_BINMODE_RETURN);
    odbc_longreadlen($erg,0);
    $ausg=odbc_result($erg,"AR_Objekt");
    echo $t;
    Dies bringt leider kein Ergebnis.

    Wenn jemand probleme mit den \"FELDNAME\" hat, dat mut so...


    Greatz

    Werner
    [/quote]
    * * * * COMMODORE C64 BASIC V2 * * * *
    64K RAM SYSTEM 38911 BASIC BYTES FREE
    READY


  • #2
    PHP-Code:
    <?php
    error_reporting
    (E_ALL); ini_set('display_errors'true);

    $connid odbc_connect($dbname,$user$passwortSQL_CUR_USE_ODBC); // Semikolon vergessen => parse error

    /* "Wenn jemand probleme mit den \"FELDNAME\" hat, dat mut so..."
        Glaube ich nicht. Weg damit oder genauer erklären, warum dat so mut.
    */
    $sqlab='SELECT AR_Objekt FROM tblArchiv WHERE AR_ID=2';

    $erg odbc_exec($connid,$sqlab); // wieder Semikolon vergessen => parse error

    // Fehlerbehandlung
    if (!$erg)
        die(
    odbc_errormsg());
        
    odbc_binmode($erg,ODBC_BINMODE_RETURN);
    odbc_longreadlen($erg0);

    /* !!!!
     After odbc_fetch_row() is called, the fields of that row can be accessed with odbc_result().
    !!!! */
    if (!odbc_fetch_row($erg))
        die(
    'kein passender Datensatz gefunden');

    $ausg odbc_result($erg'AR_Objekt');
    // Fehlerbehandlung
    if (FALSE===$ausg)
        die(
    'odbc_result: 'odbc_errormsg());

    if (!
    headers_sent())
    {
        
    /* erst jetzt Contenttype setzen.
            sollte bis hier eine Fehlerausgabe auftreten, ist es noch text/html
            und wird somit richtig im browser angezeigt
        */
        
    header("Content-type: application/pdf");
        echo 
    $t;
    }
    ?>

    Kommentar


    • #3
      Jou,

      Problem mit den Gänsefüßchen ist folgendes :
      ODBC löst die Feld und Tabellennamen nicht richtig auf, wenn man die nicht in Gänsefüßchen setzt!

      Wenn ich die weglasse findet er nicht mal die Tabelle.

      Klappt auch mit allen anderen Datensätzen und Tabellen wunderbar.

      Die Fehlermeldung hier :

      kein passender Datensatz gefunden.

      Kopiere ich den SQL-Befehl in Access und führe ihn aus, findet er den Datensatz !

      Ich aktiviere dann den Datensatz und sehe die PDF Datei.

      Nur bei PHP macht er mucken.

      Noch einen Vorschlag ?

      Gruss,

      Werner
      * * * * COMMODORE C64 BASIC V2 * * * *
      64K RAM SYSTEM 38911 BASIC BYTES FREE
      READY

      Kommentar


      • #4
        So gehts jetzt aber---

        <?PHP
        include "config.inc.php";
        $conn=OCILogon($db_user,$db_pass,$db_name);
        $req='SELECT "AR_Objekt" FROM "tblArchiv" WHERE "AR_ID"=1';
        $stmt=OCIParse($conn, $req);
        OCIExecute($stmt);
        OCIFetch($stmt);
        $bdatalob=OCIResult($stmt, "AR_Objekt");
        $bdata=$bdatalob->load();
        header("Content-type: application/pdf");
        echo $bdata;
        ?>

        Ungeachtet davon das auch hier keine Fehler abgefangen werden, da es ja eine Testdatei ist. wird hier jetzt was gefunden, Aber es kommen nur merkwürdige Zeichen auf dem Monitor.

        Schonmal ein Schritt weiter.

        Aber leider immer noch nicht das gewünschte Ergebnis.

        Was mach ich jetzt falsch ?
        * * * * COMMODORE C64 BASIC V2 * * * *
        64K RAM SYSTEM 38911 BASIC BYTES FREE
        READY

        Kommentar


        • #5
          Noch einen Schritt weiter

          Acrobat Reader meldet

          Fehler in der Datei.

          oder

          Datei kann nicht repariert werden

          oder

          Datei beginnt nicht mit %PDF

          Irgendwas ist komisch.
          * * * * COMMODORE C64 BASIC V2 * * * *
          64K RAM SYSTEM 38911 BASIC BYTES FREE
          READY

          Kommentar


          • #6
            Zitat von Solitaer
            Acrobat Reader meldet

            Fehler in der Datei.

            oder

            Datei kann nicht repariert werden

            oder

            Datei beginnt nicht mit %PDF

            Irgendwas ist komisch.
            Die Daten, die aus der Datenbank kommen, sind nicht PDF-Konform.
            www.fpdf.org hilft dir, das korrekt anzeigen zu lassen!

            Kommentar


            • #7
              Irgendwas ist komisch.
              Wie werden denn die PDFs erstellt ?

              www.fpdf.org hilft dir, das korrekt anzeigen zu lassen!
              www.fpdf.de mit deutscher Doku auch

              Kommentar


              • #8
                Hm

                Daran liegt es nicht.

                Es wird kein Fehler ausgegeben.

                Aber die Datei beginnt auch nicht mit %PDF

                Sondern mit merkwürdigen Zeichen gefolgt von einem Verzeichnissbaum wo die Datei ursprünglich mal gelegen hat.

                Ist das vieleicht nur eine Verknüpfung mit angehangener Datei?

                Ist eine Oracle Datenbank.

                Brech hier gleich echt ins Essen.

                Bitte Hilfe


                Gruss,
                Werner
                * * * * COMMODORE C64 BASIC V2 * * * *
                64K RAM SYSTEM 38911 BASIC BYTES FREE
                READY

                Kommentar


                • #9
                  PDF ist nicht einfach Text

                  Hallo Solitaer,

                  du musst eine Klasse wie FPDF verwenden, denn PDF's haben eine Struktur und sind grundsätzlich verschlüsselt.
                  Daher kannst du nicht einfach nach einem Header den gewünschten Inhalt des Dokuments senden.

                  Gruss
                  Henning

                  Kommentar


                  • #10
                    Wenn dem so wäre -wie auch immer das möglich sein sollte, nur mal für einen Moment angenommen- wie könnten dann pdfs, die statisch als Datei vorliegen, von einem Webserver ausgeliefert werden?
                    Du siehst: Quatsch.

                    Kommentar


                    • #11
                      Adobe Reader entschlüsselt das ganze.
                      Schau dir doch mal mit Wordpad ne PDF an... Kannst du das lesen? NEIN

                      Kommentar


                      • #12
                        Das hat a) nichts mit Verschlüsselung zu tun - kann, muss aber nicht.
                        b) Hat das doch keinen Einfluss auf den Transportweg.
                        Was hindert jetzt Deiner Meinung nach OP daran, die Daten in der Datenbank zu speichern, später wieder auszulesen und per http auszuliefern? Nichts.
                        Nur darum geht es hier doch.

                        Kommentar


                        • #13
                          Gut und schön

                          Jetzt habe ich viele Meinungen.

                          Mit dem Header funktioniert es nicht.

                          Aber wie soll es mit FPDF gehen. Ich habe die Datei doch in
                          einer Variable vorliegen.

                          Ich müsste die ja vorher speichern, oder ?

                          Wenn ich das einfach mit

                          fopen
                          fputs
                          fclose

                          in eine Datei schreibe und die dann öffnen will, gibts auch Mecker.
                          ! Die Datei ist beschädigt und kann nicht repariert werden !

                          Hat jemand einen Programmcode für fpdf ?

                          Greatz und Danke
                          * * * * COMMODORE C64 BASIC V2 * * * *
                          64K RAM SYSTEM 38911 BASIC BYTES FREE
                          READY

                          Kommentar


                          • #14
                            Vergiss (erstmal) fpdf. Das bräuchtest Du, wenn Du das pdf jedes Mal neu erzeugen lassen wolltest.
                            Du hast aber bereits ein fertiges pdf, dasss Du nur abspeichern bzw auslesen willst.
                            Das ist nichts andres, als in einer Datei abspeichern - nur komplizierter.

                            Wurden die Daten vielleicht schon fehlerhaft in die Datenbank geschrieben? Kein tool direkt für oracle zur Hand, um mal eben "direkt" in der DB nachzusehen?


                            Ansonsten: http://www.fpdf.org/

                            Kommentar


                            • #15
                              Jo

                              Ich habe eine ODBC Verbindung mit
                              Access das die PDF super ausliest.

                              Nur ich bin zu blöd.

                              Das heißt eigentlich zweifel ich auch an ein fehlerhaftes Eingeben der PDF Daten in die Datenbank denn ACCESS liest ja richtig.

                              :wink:

                              Hm. Frage ist jetzt nur : Wie zeige ich die Datei an ? Ich muss auch nichts ergänzen oder Speichern in die DB nur Anzeigen.


                              Das muss doch möglich sein !

                              Oder ?

                              Mittlerweile ist auch egal ob mit ODBC oder OCI.



                              Gruss,

                              Werner
                              * * * * COMMODORE C64 BASIC V2 * * * *
                              64K RAM SYSTEM 38911 BASIC BYTES FREE
                              READY

                              Kommentar

                              Lädt...
                              X