HTML Code-Generator über PHP

revillo81

Grünschnabel
Hallo zusammen

Ich kenne mich mit PHP nur seehr spärlich aus.

Mein Problem ist folgendes:

Ich möchte gerne auf einer Web-basierenden Anwendung (PHP/SQL) automatisierte HTML-Mailsignaturen erstellen. Das heisst, es gibt vorgegebenen Text und Felder für Individuellen Text...z.B.


Name Vorname (individuell über Formularfeld editierbar)
Funktion (individuell über Dropdown)

Adresse (vorgegeben)
Ort (vorgegeben)

Telefon ((individuell über Formularfeld editierbar)
Fax....mail...usw...


Das ganze soll über einen Absenden-Button in eine Html-Datei ausgegeben werden, welche auf einem X-Beliebigen Verzeichnis vom Browser aus gespeichert werden kann (speichern-unter).

Hat schonmal jemand was ähnliches gemacht oder kann mir einen Tip geben, wie ich dies realisieren soll? Oder gibts s sogar was im Netz? Google hat mich noch nicht weitergebracht...

Grüsse
Oli
 
95% aller PHP-Seiten generiert HTML. Also, lies dich ienfach mal in die PHP-Grundlagen ein und du hast deine Lösung.
 
Tja das ganze ist leider nicht so einfach für mich. Es funktioniert grundsätzlich mit der Textdatei bzw. Html-Datei. Aber ich muss HTML-Code in die Textdatei generieren wo der individuelle Text über die Formularfelder ergänzt wird...

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>Signatur erstellen</title>
 </head>
<body>

<fieldset>
 <legend>Formular</legend>

<?php
/* Formularangaben in einer Textdatei speichern und auslesen */

if (isset($_POST["name"])) {
 // Gesendete Formularangaben zusammenfügen
 $text = "<html><body><br><font size="2" face="sans-serif">Freundliche Grüsse</font><br><p><font size="2" face="sans-serif"> " . $_POST["vorname"] . "\n" .
  "name = " . $_POST["name"] . "\n" .
  "</font><br><font size="0" face="sans-serif">" . $_POST["funktion"] . "\n" .
  "funktion2 = " . $_POST["funktion2"] . "\n" .
  "</p></font><br><br><img border="0" src=" . $_POST["bilddatei"] . "\n" .
  "" width="99" height="25"><br>__________________________________________<br><font size="2" face="sans-serif">Muster AG
<br>" . $_POST["agenturname"] . "\n" .
  "adresse = " . $_POST["adresse"] . "\n" .
  "ort = " . $_POST["ort"] . "\n" .
  "direktwahl = " . $_POST["direktwahl"] . "\n";

 // Formularangaben speichern
 $file = "angaben.html";
 $fp = fOpen($file,"w+");
 fPuts($fp, $text);
 fClose ($fp);
 echo 'Die Angaben wurden gespeichert! Und k&ouml;nnen hier abgerufen werden: <a href="http://192.168.1.100/project/angaben.html">Signatur</a>';
}

// Formularangaben einlesen
foreach (file("angaben.html") as $zeile) {
 if (strpos($zeile, " = ")) {
  list($variable, $value) = explode(" = ", $zeile);
  $$variable = chop($value);
 }
}

// Formular (Formularangaben ausgeben)
echo '<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="post">
 <p> Vorname: <input type="text" name="vorname" value="' . $vorname . '"> </p>
 <p> Name: <input type="text" name="name" value="' . $name . '"> </p>
 <p> Funktion: <input type="text" name="funktion" value="' . $funktion . '"> </p>
 <p> Funktion2: <input type="text" name="funktion2" value="' . $funktion2 . '"> </p>
 <p> Bilddatei: <input type="text" name="bilddatei" value="' . $bilddatei . '"> </p>
 <p> Agenturbezeichnung: <input type="text" name="agenturname" value="' . $agenturname . '"> </p>
 <p> Adresse: <input type="text" name="adresse" value="' . $adresse . '"> </p>
 <p> Ort: <input type="text" name="ort" value="' . $ort . '"> </p>
 <p> Direktwahl: <input type="text" name="direktwahl" value="' . $direktwahl . '"> </p>
 <p> <input type="submit" value="speichern"> </p>
</form>';
?>

</fieldset>

</body>
</html>

Somit ist mein Problem, dass das PHP-Script natürlich die Htmlcodierungen als sein eigen betrachtet und deshalb das ganze nicht funktioniert...

Kann ich denn irgendwie die Formularfelder in das Textfile an einer bestimmten Stelle einfügen lassen? (Variablen?)

Oder muss ich die ganzen Daten in eine SQL eingeben und dann irgendwie in eine HTML-Datei generieren? Falls Ja..müsste das natürlich alles mittels dem Button "speichern" passieren...

Das hier funktioniert bereits...

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>Signatur erstellen</title>
 </head>
<body>

<fieldset>
 <legend>Formular</legend>

<?php
/* Formularangaben in einer Textdatei speichern und auslesen */

if (isset($_POST["name"])) {
 // Gesendete Formularangaben zusammenfügen
 $text = "name = " . $_POST["name"] . "\n" .
  "vorname = " . $_POST["vorname"] . "\n" .
  "funktion = " . $_POST["funktion"] . "\n" .
  "funktion2 = " . $_POST["funktion2"] . "\n" .
  "bilddatei = " . $_POST["bilddatei"] . "\n" .
  "agenturname = " . $_POST["agenturname"] . "\n" .
  "adresse = " . $_POST["adresse"] . "\n" .
  "ort = " . $_POST["ort"] . "\n" .
  "direktwahl = " . $_POST["direktwahl"] . "\n";

 // Formularangaben speichern
 $file = "angaben.html";
 $fp = fOpen($file,"w+");
 fPuts($fp, $text);
 fClose ($fp);
 echo 'Die Angaben wurden gespeichert! Und k&ouml;nnen hier abgerufen werden: <a href="http://192.168.1.100/project/angaben.html">Signatur</a>';
}

// Formularangaben einlesen
foreach (file("angaben.html") as $zeile) {
 if (strpos($zeile, " = ")) {
  list($variable, $value) = explode(" = ", $zeile);
  $$variable = chop($value);
 }
}

// Formular (Formularangaben ausgeben)
echo '<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="post">
 <p> Name: <input type="text" name="name" value="' . $name . '"> </p>
 <p> Vorname: <input type="text" name="vorname" value="' . $vorname . '"> </p>
 <p> Funktion: <input type="text" name="funktion" value="' . $funktion . '"> </p>
 <p> Funktion2: <input type="text" name="funktion2" value="' . $funktion2 . '"> </p>
 <p> Bilddatei: <input type="text" name="bilddatei" value="' . $bilddatei . '"> </p>
 <p> Agenturbezeichnung: <input type="text" name="agenturname" value="' . $agenturname . '"> </p>
 <p> Adresse: <input type="text" name="adresse" value="' . $adresse . '"> </p>
 <p> Ort: <input type="text" name="ort" value="' . $ort . '"> </p>
 <p> Direktwahl: <input type="text" name="direktwahl" value="' . $direktwahl . '"> </p>
 <p> <input type="submit" value="speichern"> </p>
</form>';
?>

</fieldset>

</body>
</html>
 
Sorry, ich versteh echt nicht was dein Problem ist.
Du willst ein HTML-Formular in eine Textdatei speichern? Den Sinn sehe ich nicht - aber zum Speichern gibt es PHP-Befehle. zB. file_put_contents().

Also, du schreibst ein HTMl-Code in eine Textdatei.
Anschliessend leist du die Textdatei wieder aus und willst die Werte auslesen.

Warum speicherst du die Formulardaten im HTML-Format? Eine einfache Property-Tabelle reicht. Oder mach einen JSON-Code aus einem Wertearray. den kannst du nachher einfach wieder einlesen.
 
Hi Yaslaw

Sorry, hab mich etwas unklar ausgedrückt ;-)

Es geht konkret um folgendes:

Ich möchte für Lotus Notes eine einheitliche Mailsignatur erstellen. Da diese auch Links und Grafiken beinhalten soll, muss dies über HTML geschehen. Die Signatur sieht etwas so aus:

HTML:
<html>
<body>
<font size="2" face="sans-serif"><br>Freundliche Grüsse<br>
<br>Name Vorname</font>
<br>
<font size="0" face="sans-serif"><p>Funktion<br>Funktion2</p></font><br>
<br>
<img border="0" src="logo.jpg" width="99" height="25">
<br>
<br>
__________________________________________
<br>
<font size="2" face="sans-serif">Firma<br>Agentur<br>Adresse<br>
<br>
Direktwahl XXXXXXXXXX
<br>
Fax XXXXXXXXXXX
<br>
Mobile XXXXXXXXXXXX
<br>
<a href="mailto:muster@muster.com">muster@muster.com</a>
<br>
<a href="http://www.muster.com">http://www.muster.com</a>
<br>
__________________________________________
<br>
</font>
</body>
</html>

Das ganze muss aber durch den 0815-User über eine GUI erstellt werden können.

Somit benötige ich ein Web-Basierendes Formular, bei welchem der User nur noch seine Daten wie Name, Tel, Adresse usw. eintragen kann und mittels Button wird diesem diese oben genannte, personalisierte HTML-Datei geliefert.

Meine Frage dazu, ist es möglich, mittels einem einfachen PHP-Script dies zu realisieren? Wenn ja, in welche Richtung soll ich da gehen? Mit dem angefügten Script bin ich neben den Schienen, das ist mir klar.

..oder geht das ganze nur über eine DB, in welcher die User-Daten erfasst werden und dann in ein File zusammen mit dem restl. HTML Code (ebenfalls Bestandteil der DB) geschrieben wird?
 
Das Problem ist, du kannst nicht direkt auf den PC speichern. Aber du kannst mit header() das so machen, dass nach der Eingabe der User das Speichern als-Dokument kriegt

PHP:
<?php 
//Formular nur einblenden wenn keine Daten geschickt wurden
if(!isset($_POST['submit'])){
?>


<form method="post">
    Name: <input type="text" name="name" />
    Vorname: <input type="text" name="vorname" />
    <!-- TODO: Weitere Felder -->
    <input type="submit" name="submit" />
</form>


<?php
//Wenn Daten gesendet wurden, den Code abarbeiten
}else{
    //TODO: Hier Plausibilitätschecks einbauen
    $name = $_POST['name'];
    $vorname = $_POST['vorname'];
    
    //HTML-Text erstellen mit den folgenden Syntaxen um es übersichtlicher zu halten
    // a) Heredoc-Syntax:  http://ch2.php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc
    // b) Complex (Curly) Syntax: http://ch2.php.net/manual/de/language.types.string.php#language.types.string.parsing.complex
    $signatur = <<<HTML
<html>
<body>
<font size="2" face="sans-serif"><br>Freundliche Grüsse<br>
<br>{$name} {$vorname}</font>
<br>
<font size="0" face="sans-serif"><p>Funktion<br>Funktion2</p></font><br>
<br>
<img border="0" src="logo.jpg" width="99" height="25">
<br>
<br>
__________________________________________
<br>
<font size="2" face="sans-serif">Firma<br>Agentur<br>Adresse<br>
<br>
Direktwahl XXXXXXXXXX
<br>
Fax XXXXXXXXXXX
<br>
Mobile XXXXXXXXXXXX
<br>
<a href="mailto:muster@muster.com">muster@muster.com</a>
<br>
<a href="http://www.muster.com">http://www.muster.com</a>
<br>
__________________________________________
<br>
</font>
</body>
</html>
HTML;

    // Wir werden eine HTML Datei ausgeben
    header('Content-type: text/html; charset=utf-8');
    
    // Definieren dass es eine Download-Datei ist
    // Es wird name_vorname_signatur.html benannt
    header("Content-Disposition: attachment; filename='{$name}_{$vorname}_signatur.html'");
    
    //Inhalt ausgeben
    echo $signatur; 
    
}
?>
 
Zurück