Page 1 of 3

Gutscheinmodul, gab's das schon mal?

Posted: Mon 27. Oct 2008, 15:17
by AnnaK
Ich suche für eine neue Projektwebsite eine Lösung für den Ausdruck eines Gutscheins (generierte Nr., Datum, Name, Vorname) mit Aufdruck auf eine *.jpg. Hat jemand dafür schon mal eine Lösung vorgestellt? Unter "Gutschein" oder "Coupon" konnte ich leider keinen Artikel im Board finden :idea:

Re: Gutscheinmodul, gab's das schon mal?

Posted: Mon 27. Oct 2008, 17:19
by Heiko H.
Hallo Anna,
AnnaK wrote:Hat jemand dafür schon mal eine Lösung vorgestellt?
Soweit ich weiß, nein ... sorry.
AnnaK wrote:Ich suche für eine neue Projektwebsite eine Lösung für den Ausdruck eines Gutscheins (generierte Nr., Datum, Name, Vorname) mit Aufdruck auf eine *.jpg.
Aber das klingt auf den ersten Blick (was für ein deutsch... :lol: ) nicht sooo schwierig, die Frage ist eher, wo/wie/womit wird denn bei Einlösung des Gutscheins seine Richtigkeit/Echtheit validiert?

Grüße Heiko...

Re: Gutscheinmodul, gab's das schon mal?

Posted: Tue 28. Oct 2008, 09:29
by AnnaK
Eigentlich soll da kein riesen Aufwand getrieben werden, ein JPG-Bild als Gutschein soll abgelegt und mit PHP eine generierte Nummer aus Aapha~ und num. Zeichen , Datum, Name, Vorname drauf geschrieben werden. Die generierten Daten könnten in einer Textdatei abgespeichert werden, so dass keine doppelten Nummern vergeben werden. Und der User kann sich diesen Gutschein ausdrucken .... fertig. Klingt einfach, aber von PHP habe ich keinen blassen Schimmer, obwohl ich den Code irgendwie verstehe ... bis zu einem gewissen Grad :oops:

Es geht hierbei nur um einen Rabattgutschein, der eher nebensächlich ist, weil man den auch auf der Straße verteilen kann. Wichtiger dabei ist, das der Besucher sich damit registriert, bestenfalls noch eine Frage beantwortet, wie zum Beispeil: "Wie heißt der Inhaber der Homepage?" und wenn diese frage richtig beantwortet ist, kann er sich den Gutschein ausdrucken. Ganz einfaches Marketing.

Re: Gutscheinmodul, gab's das schon mal?

Posted: Wed 29. Oct 2008, 11:02
by Heiko H.
Na, das klingt doch aber nach einer guten, nicht zu schwierigen Programmierübung.
Ich (bin ja auch nicht der große Programmierheld) würde das (im ersten Versuch) so angehen:

- Eingabemaske erstellen (evtl. mit besagter Frage)
- Prüfung ob Frage richtig beantwortet
- Seriennr. erstellen -> Prüfung ob schon vorhanden
- Seriennr. + eingegebene Daten speichern (DB oder Textfile)
- ein transparentes Bild mit den eingegebenen Daten (Name, Vorname) und der Seriennummer, usw. erstellen
- dieses Bild mittels imagecopy() in das Bild (Background des Gutscheins) kopieren
- Gutschein ausgeben

Heiko...

Re: Gutscheinmodul, gab's das schon mal?

Posted: Thu 13. Nov 2008, 12:29
by kukki
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. :mrgreen: 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&auml;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"  />
                &nbsp;</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&uuml;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!

Re: Gutscheinmodul, gab's das schon mal?

Posted: Thu 13. Nov 2008, 14:53
by update
Das ist ja mal was! Ha! Ein Gutscheindrucker - juhuu!
Vielleicht könnte da in dem phpscript noch was eingefügt werden, damit das Ding nur über phpwcms bedienbar wird?

Re: Gutscheinmodul, gab's das schon mal?

Posted: Thu 13. Nov 2008, 15:16
by kukki
@Claus: Vielleicht legt jetzt da noch jemand hand an. :D

Ich habe da selber auch noch ein kleines Problem gefunden! :roll:
Bei mir funktioniert innerhalb des phpwcms die Prüfung mit onsubmit nicht. Ich bin ratlos. Es schein das Script überhaupt gar nicht vorhanden zu sein, obwohl ich dieses im Kopf der Vorlage mit <script src="gutschein.js" type="text/javascript"></script> eingebunden habe und dieses auch im rootVerzeichnis vorhanden ist. Es wird einfach ignoriert, keine Fehlermeldung kommt zurück, wenn ich es bewußt provoziere. Selbst wenn man bewußt einen Schrpitfehler einbaut, meldet sich zwar der Firebug und zeigt mir das Script, es wird aber nicht benutzt, wie es scheint! :evil:

Re: Gutscheinmodul, gab's das schon mal?

Posted: Thu 13. Nov 2008, 16:12
by kukki
Hab's gefunden, anstat forms[0] habe ich form[0] geschrieben! :oops:

Re: Gutscheinmodul, gab's das schon mal?

Posted: Thu 13. Nov 2008, 16:35
by update
kukki, sag doch noch mal, wo Du das Javascript her hast, bitte! :)

Re: Gutscheinmodul, gab's das schon mal?

Posted: Thu 13. Nov 2008, 16:53
by kukki
Wie - jetzt, kann man doch googeln mit function chkFormular() :)

Das war die Ausgangsbasis bei mir, jetzt probiere ich schon 'ne Ewigkeit rum, wie man genau den Inhalt von document.forms[0].anzahl mit eine ganzen Zahl vergleichen kann. Schlimm, wenn man nur durch lesen und probieren weiterkommt. :|

Code: Select all

function chkFormular() {
if (document.forms[0].anzahl.value == "") {
    alert("Bitte eine Zahl eingeben!");
    document.forms[0].anzahl.focus();
    return false;
  }
  var chkZ = 1;
  for (i = 0; i < document.forms[0].anzahl.value.length; ++i)
    if (document.forms[0].anzahl.value.charAt(i) < "0" ||
        document.forms[0].anzahl.value.charAt(i) > "9")
      chkZ = -1;
  if (chkZ == -1) {
    alert("Wert ANZAHL ist keine Zahl!");
    document.forms[0].anzahl.focus();
    return false;
  }
  if (document.forms[0].Vorname.value == "") {
    alert("Bitte Ihren Vornamen eingeben!");
    document.forms[0].Vorname.focus();
    return false;
  }
  if (document.forms[0].Nachname.value == "") {
    alert("Bitte Ihren Nachnamen eingeben!");
    document.forms[0].Nachname.focus();
    return false;
  }
}

Re: Gutscheinmodul, gab's das schon mal?

Posted: Fri 14. Nov 2008, 12:55
by kukki
Nach einigen Probieren mit JavaScript habe ich den Dreh erst einmal raus gehabt. Aber ein Problem ist aufgetaucht, dass ich so nicht recht begreife :?:

Wenn ich mir eine externe gutschein.html zusammenschiebe und dies eim rootVerzeichnis ablege und starte, funktioniert alles einwandfrei, incl. aller Fehlermeldungen, die man provozieren kann :!: Genauso wie oben beschrieben!
Erst bei der Eingabe erfolgt die Ausführung der in action angegebenen gutschein.php und es kommt zum Ausdruck des Gutscheines.

Innerhalb des phpWCMS funktioniert das alles anders oder nicht! Die (provozierten) Fehlerfenster bei der onsubmit-Prüfung der input-Felder erscheinen nicht. PopUp-Fenster(alert) sind auf meinem Browser erlaubt! :shock:
Dafür wird aber der Gutscheindruck in jedem Fall ausgeführt, egal ob man nur etwas, falsch oder gar nicht ausfüllt und nur auf ABSCHICKEN klickt.
Warum läuft es hier anders ab?:roll: :?:

Re: Gutscheinmodul, gab's das schon mal?

Posted: Fri 14. Nov 2008, 12:59
by juergen
Das geht schon du musst das alles nur über $content['all'] an der Rendering Maschine von phpwcms übergeben....

Code: Select all

form onsubmit="return chkFormular()" action="gutschein.php" method="post">
die action muss natürlich zurück ins prgramm springen also index.php?aid=..&gutschein ... und darauf dann aufbauen

Re: Gutscheinmodul, gab's das schon mal?

Posted: Fri 14. Nov 2008, 13:09
by kukki
Wie soll ich das verstehen, habe ich etwas vergessen/ übersehen?

:? $content['all']

Code: Select all

// ----------------Weiterleitung nach erfolgreicher Generierung auf den Ausdruck "index.php?aid=xyz" -------------
header("Location: http://" . $_SERVER["HTTP_HOST"] . "/index.php?aid=xyz");
    exit();
?>
Solch eine Zeile hatte ich mit location: ... eingebaut! Aber sollte dies genau die Stelle sein, wo das Formular steht oder die Stelle wie es jetzt eigentlich ist, wo der Druck freigegeben wird?

Re: Gutscheinmodul, gab's das schon mal?

Posted: Fri 14. Nov 2008, 13:13
by juergen
ich machs gerade .. gleich gebacken

Re: Gutscheinmodul, gab's das schon mal?

Posted: Fri 14. Nov 2008, 13:20
by juergen
Link gelöscht.. kommt wieder
made in Eile

unter den Bildern es funzt