Gutscheinmodul, gab's das schon mal?

Post custom hacks and enhancements for phpwcms here only. Maybe some of these things will be included in official release later.
AnnaK
Posts: 37
Joined: Thu 25. Sep 2008, 15:07
Location: Petershagen/b. Berlin

Gutscheinmodul, gab's das schon mal?

Post by AnnaK » Mon 27. Oct 2008, 15:17

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:
Lieber Kies in der Tasche, als Sand im Getriebe.

User avatar
Heiko H.
Posts: 868
Joined: Thu 27. Oct 2005, 11:41
Location: Dresden
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by Heiko H. » Mon 27. Oct 2008, 17:19

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...
Not longer here - sorry...

Haubner-IT GbR Dresden

AnnaK
Posts: 37
Joined: Thu 25. Sep 2008, 15:07
Location: Petershagen/b. Berlin

Re: Gutscheinmodul, gab's das schon mal?

Post by AnnaK » Tue 28. Oct 2008, 09:29

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.
Lieber Kies in der Tasche, als Sand im Getriebe.

User avatar
Heiko H.
Posts: 868
Joined: Thu 27. Oct 2005, 11:41
Location: Dresden
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by Heiko H. » Wed 29. Oct 2008, 11:02

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...
Not longer here - sorry...

Haubner-IT GbR Dresden

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by kukki » Thu 13. Nov 2008, 12:29

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!
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Gutscheinmodul, gab's das schon mal?

Post by update » Thu 13. Nov 2008, 14:53

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?
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by kukki » Thu 13. Nov 2008, 15:16

@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:
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by kukki » Thu 13. Nov 2008, 16:12

Hab's gefunden, anstat forms[0] habe ich form[0] geschrieben! :oops:
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Gutscheinmodul, gab's das schon mal?

Post by update » Thu 13. Nov 2008, 16:35

kukki, sag doch noch mal, wo Du das Javascript her hast, bitte! :)
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by kukki » Thu 13. Nov 2008, 16:53

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;
  }
}
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by kukki » Fri 14. Nov 2008, 12:55

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: :?:
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
juergen
Moderator
Posts: 4553
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by juergen » Fri 14. Nov 2008, 12:59

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

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by kukki » Fri 14. Nov 2008, 13:09

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?
Last edited by kukki on Fri 14. Nov 2008, 13:15, edited 1 time in total.
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
juergen
Moderator
Posts: 4553
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by juergen » Fri 14. Nov 2008, 13:13

ich machs gerade .. gleich gebacken

User avatar
juergen
Moderator
Posts: 4553
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Gutscheinmodul, gab's das schon mal?

Post by juergen » Fri 14. Nov 2008, 13:20

Link gelöscht.. kommt wieder
made in Eile

unter den Bildern es funzt
Last edited by juergen on Fri 14. Nov 2008, 18:16, edited 1 time in total.

Post Reply