Felix Riesterer: In einer Form Daten aufnehmen und zum Download anbieten

Beitrag lesen

Liebe Lm,

Ich würde gern wissen ob jemand mir helfen kann Ein Formular aufzusetzen. Ist es ein Formular ?

ja, dafür benutzt man ein Formular. Mehr dazu gleich.

Ich habe eine PDF (Anmeldeformular zur Kita) das komplette Layout dieser PDF soll genau so erhalten bleiben.

Wie sollen die aus dem Formular erhaltenen Daten in das PDF geschrieben werden? Dazu bedarf es einer serverseitigen Verarbeitung, die Nutzereingaben auswertet und mit irgendeiner Magie in das PDF schreibt.

Die gute Nachricht: Für alles das gibt es bereits fertige Komponenten, die man dafür nutzen kann.

Jetzt stehst Du vor einem ordentlichen Stück Weg, um zu Deinem Ziel zu gelangen. Folgende Stationen wirst Du auf Deinem Weg passieren müssen:

  • HTML einigermaßen verstehen und schreiben (für die Website, damit der Browser ein Formular anzeigen kann, welches der Besucher ausfüllen soll)
  • serverseitige Scriptsprache lernen (z.B. PHP), um serverseitige Verarbeitungen (z.B. von empfangenen Formulardaten) vornehmen zu können und maßgeschneiderte Ausgaben (wie z.B. eine generierte PDF-Datei) an den Browser zu senden
  • fertige PHP-Programme von anderen als Komponente verwenden, die PDF-Dateien als Vorlagen nehmen und darin zusätzliche Inhalte hineinschreiben können (z.B. fpdi in Verbindung mit tcpdf)

Was Du da als Projekt beschreibst, habe ich auch schon machen müssen. Daher kann ich Dich ermutigen, das alles in Angriff zu nehmen, da ich weiß, dass es alles lösbare Probleme sind. Der letzte Punkt ist der wohl komplizierteste, da Du Dich hier mit von anderen erstellten Komponenten befassen wirst, insbesondere das Verwenden von bereits vorhandenen PDF-Dateien als Vorlage, wobei man Dir hier aber bei jedem Schritt helfen kann.

Als Teaser möchte ich Dir hier ein kleines Code-Beispiel geben, welches in Ansätzen Deine Vorstellungen umsetzt. Du siehst hier ein klitzekleines PHP-Programm, welches zwei Funktionen definiert, wovon eine ein Formular ausgibt, und eine zweite eine PDF-Datei ausgibt - abhängig davon, ob ein Besucher der Seite alle benötigten Formulareingaben gemacht hat:

<?php

function send_form () {
  // vorgefertigte HTML-Datei als Vorlage nehmen
  $html = file_get_contents(__DIR__.'/res/formular.html');

  // bereits vorhandene Nutzereingaben in das Formular schreiben
  foreach ($_POST as $key => $value) {
    // ... noch zu implementieren
  }

  // an den Browser senden
  header('Content-Type: text/html; charset=UTF-8');
  echo $html;
}

function send_pdf () {
  // PDF-Programme einbinden
  include __DIR__.'/res/fpdi/fpdi.php';
  include __DIR__.'/res/tcpdf/tcpdf.php';

  // damit neue PDF-Datei anlegen
  $pdf = new Fpdi('P', 'mm', 'A4', true, 'UTF-8', true);

  // vorhandene PDF-Datei als Vorlage benutzen
  $pdf->setSourceFile(__DIR__.'/res/anmeldung.pdf');
  $pdf->useTemplate($pdf->importPage(1));

  // Nutzereingaben in die PDF-Vorlage schreiben
  foreach ($_POST as $key => $value) {
    // ... noch zu implementieren
  }

  // PDF-Datei an den Browser für den Download senden
  $pdf->save();  
}

// wurden alle benötigten Daten eingegeben?
if (
  empty($_POST['Vorname'])
  || empty($_POST['Nachname'])
  || empty($_POST['Anschrift'])
  || empty($_POST['PLZ'])
  || empty($_POST['Ort'])
  || empty($_POST['Telefon'])
) {
  // nein - Formular (erneut) anzeigen
  send_form();
} else {
  // ja - PDF-Datei erzeugen und zum Download anbieten
  send_pdf();
}

Das Code-Beispiel geht davon aus, dass Du zwei Dateien als Vorlagen hast, eine HTML- sowie eine PDF-Datei. Das Code-Beispiel selbst müsste in einer dritten Datei stehen, einer PHP-Datei. Außerdem erwartet das Beispiel, dass es prinzipiell sechs Nutzer-Angaben braucht, die sowohl im HTML-Formular, als auch in der PDF-Datei benötigt werden:

  1. Vorname
  2. Nachname
  3. Anschrift
  4. PLZ
  5. Ort
  6. Telefon

Wie Du siehst, kann man prinzipiell alle Deine Vorstellungen umsetzen. Jetzt gilt es nur herauszufinden, was Du genau alles benötigst und wie Du im Detail Dinge lösen möchtest.

Hast Du schon einen vernünftigen Editor, um damit Programmcode zu schreiben?

Liebe Grüße

Felix Riesterer