Hallo AnnaK,
auch mich hat dieses Thema gewurmt, weil ich öfters auch daraufhin angesprochen wurde. Leider konnte Dir keiner so richtig weiterhelfen
,
aber .... ich kann es erst einmal, vielleicht etwas linkisch,
das ist mir aber egal, denn ich bin kein PHP-JavaScriptProgrammierer.
und es funktioniert.
Als erstes erstellst Du Dir eine Blanco-Gutschein/ Rabattschein als Scan und speicherst diesen als "gutschein.png". Ich habe diesen in das root-verzeichnis abgelegt.
Dort hinein lege auch das PHP-script
gutschen.php und
graph.class.php
Im Backend erzeugt Du Dir eine Struktur für diesen Gutschein, darin ein Formular, das ein paar Angaben zur Personalisierung braucht,
onsubmit-Javascript kannst Du bei Google finden, wie man da die Inhalte per Javascript abtestet.
------------------------------------------------------------
-----Gutschein
---------Text mit Bild
---------WYSIWYING HTML (Formular)
-----GutscheinDruck (verstekt)
---------WYSIWYING HTML/ Text mit Bild mit nachfolgendem Inhalt (
beachte das PHP-Script. Dort wird das neue Rabatt.png erzeugt und in /picture gespeichert)
-------------------------------------------------------------
Code: Select all
<p>[PRINT]<!--NO_PRINT_END//-->{IMAGE:Rabatt.png} <!--NO_PRINT_START//-->[/PRINT]</p>
Einziges Manko noch, mit dem Klick auf das Bild Gutschein erhälst Du zwar eine Druckmöglichkeit, aber die URL wird ganz oben noch angezeigt, wie bekommt man diese nun noch weg
-- Formularscript --
Code: Select all
<form onsubmit="return chkFormular()" action="gutschein.php" method="post">
<table width="350" cellspacing="0" cellpadding="2" border="0" style="border-collapse: collapse;">
<tbody>
<tr>
<td width="50%">
<p style="text-align: center;">Wie viele Mitarbeiter <br />
(incl. Azubis ...)<br />
sind bei uns <br />
beschäftigt ?</p>
</td>
<td width="50%">
<p align="center"><input type="text" size="4" name="anzahl" /></p>
</td>
</tr>
<tr>
<td width="100%" colspan="2"><hr size="1" />
</td>
</tr>
<tr>
<td width="50%">Vorname:</td>
<td width="50%"><input type="text" id="Vname" size="30" name="Vorname" /></td>
</tr>
<tr>
<td width="50%">Familienname</td>
<td width="50%"><input type="text" id="Nname" size="30" name="Nachname" /></td>
</tr>
<tr>
<td width="100%" colspan="2"><hr size="1" />
</td>
</tr>
<tr>
<td width="50%">
<p align="right"><input type="submit" name="B1" value="Abschicken" /></p>
</td>
<td width="50%"><input type="reset" name="B2" value="Zurücksetzen" /></td>
</tr>
</tbody>
</table>
</form>
Die graph.class hat mein Sohn schon mal woanders für verwendet und für diesen Zweck nur umgerubelt:
Code: Select all
<?
// Zuletzt editiert: 10:48 04.11.2008 (Christian Otto)
class simpleGraph
{
var $image;
var $im;
var $target;
function create($imgWidth, $imgHeight){
$this->im = @imagecreatetruecolor ($imgWidth, $imgHeight)
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$alpha = imagecolorallocate ($this->im, 255, 255, 255);
imagecolortransparent ($this->im, $alpha);
imagefilledrectangle ($this->im, 0, 0, $imgWidth, $imgHeight, $alpha);//$background_color
$text_color = ImageColorAllocate ($this->im,255, 255, 255);
}
function headline($text)
{
$tag = date ("d");
$monat = date ("M");
$jahr = date ("y");
$stunde = date ("H");
$minute = date ("i");
$sekunde = date ("s");
//Zufallsziffer zwischen 0 und 1000000
$rndnr = rand (0,1000000);
//Textfarbe
$text_color = ImageColorAllocate ($this->im, 0, 0, 0);
$datum = $tag.".".$monat."'".$jahr." ".$stunde.":".$minute;
ImageString ($this->im, 15, 200, 250, $text, $text_color);
ImageString ($this->im, 15, 200, 310, $datum, $text_color);
ImageString ($this->im, 15, 200, 340, $rndnr, $text_color);
}
function showGraph($target){
$this->image = ImagePNG ($this->im, $target);
return $this->image;
}
function mergin ($back, $plot, $file){
//Groesse des Hintergrunds ermitteln und neue 24-Bit Datei erstellen
$size = getimagesize ($back);
$im = imagecreatetruecolor ($size[0], $size[1]);
imagealphablending( $im , TRUE );
imagesavealpha ( $im , FALSE );
$alpha = imagecolorallocate ($im, 255, 255, 255);
imageColorTransparent($im, $alpha);
imagefilledrectangle ($im, 0, 0, $size[0], $size[1], $alpha);
//Hintergrund laden und auf 24-Bit Datei überspielen
$ground = imagecreatefrompng ($back);
$alpha = imagecolorallocate ($ground, 255, 255, 255);
imageColorTransparent($ground, $alpha);
imagecopy ($im, $ground, 0, 0, 0, 0, $size[0], $size[1]);
//Graph laden und auf 24-Bit Datei überspielen
$graph = imagecreatefrompng ( $plot );
$alpha = imagecolorallocate ($graph, 255, 255, 255);
imageColorTransparent($graph, $alpha);
imagecopymerge ($im, $graph, 0, 0, 0, 0, $size[0], $size[1], 100);
imagepng ($im,$file);
}
}
?>
Code: Select all
<?
// ***********************************************************************
// Anpassung des Scriptes ist nur in der Zeile 26 notwendig
// created and copyrigh by Burkhard und Christian Otto/ MOTAG-ONLINE.com
//
// letze Aenderung: 13.11.2008
//--------------------------------------------------------------------------
require ("graph.class.php");
function bild($name, $adressat){
$simpleGraph2 = &new simpleGraph();
//Format des Bildes, das eingelesen werden soll
$simpleGraph2->create("427", "599");
//Name der Person, auf die der Gutchein ausgeschrieben ist
$simpleGraph2->headline($adressat);
$simpleGraph2->showGraph($name);
//Name des Hintergrundes, Name der Ausgabedatei
$simpleGraph2->mergin ("gutschein.png",$name,$name);
}
$var= $_POST[Vorname]." ".$_POST[Nachname];
bild("picture/Rabatt.png",$var);
// ----------------Weiterleitung nach erfolgreicher Generierung auf den Ausdruck "index.php?aid=xyz" -------------
header("Location: http://" . $_SERVER["HTTP_HOST"] . "/index.php?aid=xyz");
exit();
?>
Die ganze Sache ist vielleicht etwas anfängermäßig, aber funktioniert und ist konform. Verbesserungen sind erwünscht!