Posts mit dem Label PHP werden angezeigt. Alle Posts anzeigen
Posts mit dem Label PHP werden angezeigt. Alle Posts anzeigen

Montag, 20. Juli 2015

Externe PDF Datei zu FPDF dazu einbinden

Ich habe lange nach der Lösung gesucht. Genau das was für meine Aufgabe hilfreich wäre habe ich nicht gefunden, aber selber dazu gekommen. Falls es jemandem hilft:

Nehmen wir an, Sie erzeugen mit Hilfe FPDF Klasse eine PDF Datei und möchten eine Externe PDF Datei zu dem Inhalt dazu einfügen.

  1.  FPDI Klasse downloaden: http://www.setasign.com/products/fpdi/downloads/#p-162
  2. Der FPDI Ordner zu dem Projekt einfügen
  3.  Nach der Zeile include('pdf/fpdf.php');  in Ihrem FPDF Projekt die Zeile Einfügen: include('pdf/fpdi/fpdi.php');
  4. Statt $pdf = new FPDF(); schreiben wir $pdf = new FPDI();  
  5. Auf der Stelle wo die externe FPD eingefügt werden soll: 
            $pageCount = $pdf->setSourceFile("/dateipfad/dateiname.pdf");
     $tplIdx = $pdf->importPage(1);
     $pdf->addPage();    
     $pdf->useTemplate($tplIdx, 10, 0, 200);

Fertig!

Dienstag, 2. Juni 2015

PDF Dokument mit Daten aus der MySQL Datenbank mit Bilder und Tabellen erzeugen

Die Aufgabe lautet: aus bestehenden Daten aus der MySQL Datenbank eine Vorlage im PDF Format zu erzeugen. In meinem Fall handelt es sich umeinen Kundenangebot.

Die Option wird mit Hilfe PHP klasse fpdf() abgewickelt.
Die Klasse fpdf() ist hier zum Downloaden: http://fpdf.de/downloads/releases/

Zu der Lösung gehören die folgende Schritte:
1) Bild integrieren (Logo), auch ein Produktbild, abhängig vom Art der Bestellung. Als Grunggerüst gilt die Anleitung: http://www.php-space.info/php-tutorials/58-pdf,dokument,mit,php,erstellen.html
2) Daten aus der Datenbank auszulesen. In meinem fall habe ich über 300 Variablen. Für jede soll auch eine Abfrage stattfinden.
3) Tabelle aufzubauen. Für den Fall gilt nicht die triviale HTML Tabelle, sondern es gibt eine spezielle Methode für fpdf() Klass.


Dienstag, 11. November 2014

Daten in Unicode von PHP Formular zu MSSQL übertragen

Wie überträgt man die Daten mit PHP Formular an MSSQL Datenbank.
Zwischen klassische Lösungen  PHP <-> MySQL und PHP<->MSSQL gibt es einige Unterschiede. Dazu gehört: die Datentransferierung in Unicode. Da unsere Daten mehsprachig sein können, ist das Thema Unicode besonders gut zu beachten. Folgende Besonderheiten sollen berücksichtigt werden:
  1. Die Columns (Spalten in der Tabelle), die für Unicode Inhalt gedacht sind müssen als nvarchar Type haben.
  2. Erstellung der Tabelle: $table - Tabellename, ID- automatische Zeilenzähler, tickertext  und kategoriy haben NVARCHAR Type.  $result = mssql_query("CREATE TABLE $table ( ID int IDENTITY(1,1) PRIMARY KEY,  tickertext NVARCHAR( 200 ) NOT NULL ,  kategory NVARCHAR( 150 ) ) ") or die(mysql_error());
  3. Vor der Datenbankverbindung ini_set('mssql.charset', 'UTF-8'); 
  4. Im Form Tag <form METHOD="post"  action="ticker-formmailer.php" ENCTYPE="multipart/form-data" name="ticker" accept-charset="utf-8">
  5. Datenübergabe:  Es gibt zwei Lösungen dafür.
    1. $tabele = "DWNews_Ticker"; //Tabellename
      $tickertext = $_POST['tickertext']; //Datenübergabe vom Formular mit POST Methode
      $kategorie  = $_POST['kategorie']; //Datenübergabe vom Formular mit POST Methode
      $result = mssql_query("INSERT INTO DWNews_Ticker (tickertext, kategory) VALUES (N'$tickertext',N'$kategorie')");
      Nachtei von der Übertragung, dass die Daten in einer verzehrter Codierung übertragen wurden. Dafür aber auf der Webseite, Benutzer-Oberfläche korrekt ausgelesen.
    2. $tickertext = iconv('UTF-8', 'UTF-16LE', $_POST['tickertext']); //Konvertierung durch native encoding
      $tickertext = bin2hex($tickertext); //Konvertierung durch hexadecimal
      $tickertext = '0x'.$tickertext;
      Gleiche für die zweite nvarchar:
      $kategorie = iconv('UTF-8', 'UTF-16LE', $_POST['kategorie']); //convert into native encoding
      $kategorie = bin2hex($kategorie); //convert into hexadecimal
      $kategorie = '0x'.$kategorie;
      Hier werden die Daten in die Datenbank gespeichert
       
      $result = mssql_query("INSERT INTO DWNews_Ticker (tickertext, kategory) VALUES (CONVERT(nvarchar(2000),  $tickertext), CONVERT(nvarchar(2000),  $kategorie))");
      Mit der Übertragung werden die Sätze aus dem Formular als Unicode in der Datenbank kopiert.