Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Gutscheinaddon

  1. #1
    Neuer Benutzer
    Registriert seit
    06.10.2010
    Beiträge
    21

    Gutscheinaddon

    Ich habe ein Gutscheinaddon geschrieben.
    Der User kann Gutscheine erstellen und die Gutscheine dann zum Werben benutzen also bei der Anmeldung habe ich ein Feld Gutschein gemacht wenn der User jetzt dort den Gutschein eintippt wird aus der Datenbank die Uid ausgelesen und dann wird diese als Werber eingetragen und der User bekommt dann den Wert des Gutscheines z.b. 50 Cent als Startguthaben.

    Zuerst das in der Datenbank nacheinander ausführen:
    Code:
    CREATE TABLE IF NOT EXISTS `vms_gutschein` (
    `Uid` int(10) DEFAULT NULL,
    `Gutschein` text NOT NULL,
    `aMenge` int(10) NOT NULL,
    `Menge` int(10) NOT NULL,
    `Wert` double(10,2) NOT NULL,
    KEY `Uid` (`Uid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Code:
    CREATE TABLE IF NOT EXISTS `vms_benutzte_gutscheine` (
    `Uid` INT NOT NULL ,
    `Gutschein` TEXT NOT NULL 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Dann in der anmelden.php nach:
    PHP-Code:
    if ($_POST['agb'] != "ja"$error .= 'Du musst die AGBs bestätigen!<br>'
    das hier einfügen:
    PHP-Code:
    //Gutscheinprüfungen
    $schein ucfirst($_POST['Gutschein']);
    $Gutschein_check=db_query("Select Gutschein from ".$db_prefix."_gutschein where
    Gutschein='"
    $schein."'");
    $menge=mysql_fetch_assoc(db_query("Select Menge from ".$db_prefix."_gutschein where
    Gutschein='"
    $schein."'"));
    if (
    $_POST['Gutschein']!=""){
    if (
    $menge['Menge'] <= 0$error .= 'Der Gutschein ist verbraucht!<br />';
    if (
    mysql_num_rows($Gutschein_check)==0$error .="Dieser Gutschein existiert
    nicht!"
    ;
    }
    //Ende Gutscheinprüfungen
    //Abfrage
    $gutschein=mysql_fetch_assoc(db_query("SELECT Uid,Gutschein,Menge,Wert FROM ".
    $db_prefix."_gutschein where Gutschein='"$schein."'"));
    // Abfrage Ende 
    weiter unten das :
    PHP-Code:
     db_query("INSERT INTO ".$db_prefix."_kontodaten (uid,passwort,status,hinweis,kontostand) VALUES ('".$_POST['uid']."','".md5($_POST['passwort_1'])."','0','','0')"); 
    und das:
    PHP-Code:
    db_query("INSERT INTO ".$db_prefix."_werberdaten (uid,werber,umsatz,zuordnungszeit)
    VALUES ("
    .$uid.",'".$_SESSION['werber']."','0','".time()."')"); 
    löschen.

    Dafür dann oben Bei vms ohne Klammanbindung unter
    PHP-Code:
    $uid mysql_insert_id();
    //Bitte beachten das über dieser Variablen der mysql eintrag für die Userdaten vorhanden sein muss. 
    dies einfügen:
    PHP-Code:
    //Gutschein
    if ($_POST['Gutschein']==""){
    db_query("INSERT INTO ".$db_prefix."_werberdaten
    (uid,werber,umsatz,zuordnungszeit) VALUES ("
    .$uid.",'".$_SESSION['werber']."','0','".time()."')");
    db_query("INSERT INTO ".$db_prefix."_kontodaten
    (uid,passwort,status,hinweis,kontostand) VALUES
    ("
    .$uid.",'".md5($_POST['passwort_1'])."','0','','0')");
    }else{
    db_query("INSERT INTO ".$db_prefix."_werberdaten (uid,werber,umsatz,zuordnungszeit)
    VALUES ("
    .$uid.",'".$gutschein['Uid']."','0','".time()."')");
    db_query("UPDATE vms_gutschein set Menge=Menge-1 where Gutschein='".$schein."'");
    db_query("INSERT INTO ".$db_prefix."_kontodaten
    (uid,passwort,status,hinweis,kontostand) VALUES
    ("
    .$uid.",'".md5($_POST['passwort_1'])."','0','','".$gutschein['Wert']."')");

    und Bei vms mit Klammanbindung unter:
    PHP-Code:
    if ($_POST['newsletter'] == and $_POST['paidmails'] == 1$mailstatus 3
    dies einfügen:
    PHP-Code:
    //Gutschein
    if ($_POST['Gutschein']==""){
    db_query("INSERT INTO ".$db_prefix."_werberdaten
    (uid,werber,umsatz,zuordnungszeit) VALUES ('"
    .$_POST['uid']."','".$_SESSION['werber']."','0','".time()."')");
    db_query("INSERT INTO ".$db_prefix."_kontodaten
    (uid,passwort,status,hinweis,kontostand) VALUES
    ('"
    .$_POST['uid']."','".md5($_POST['passwort_1'])."','0','','0')");
    }else{
    db_query("INSERT INTO ".$db_prefix."_werberdaten (uid,werber,umsatz,zuordnungszeit)
    VALUES ('"
    .$_POST['uid']."','".$gutschein['Uid']."','0','".time()."')");
    db_query("UPDATE vms_gutschein set Menge=Menge-1 where Gutschein='".$schein."'");
    db_query("INSERT INTO ".$db_prefix."_kontodaten
    (uid,passwort,status,hinweis,kontostand) VALUES
    ('"
    .$_POST['uid']."','".md5($_POST['passwort_1'])."','0','','".$gutschein['Wert']."')");
    }
    //Gutschein 
    und das unten bei den anderen Feldern:
    HTML-Code:
    <tr>
    <td class="main"><b>Gutschein:</b></td>
    <td class="main"><input name="Gutschein" type="text" value="<?=$_POST['Gutschein'];?
    >"></td>
    </tr>
    an beliebiger stelle einbauen.

    Datei content/konto/Gutschein.php erstellen und das hier einfügen:
    PHP-Code:
    <?
    if (!isset($_POST['name'])) $_POST['name'] = '';
    if (!isset($_POST['menge'])) $_POST['menge'] = '';
    if (!isset($_POST['wert'])) $_POST['wert'] = '';
    if (!isset($error)) $error = "";
    if (!isset($info)) $info                 = "";
    $name= mysql_real_escape_string($_POST['name']);
    $menge= mysql_real_escape_string($_POST['menge']);
    $wert= mysql_real_escape_string($_POST['wert']);
    //Der Maximale Gutschein Wert
    $max_wert=2;

    $test= $menge * $wert;
    $muster1="=^[a-zäöüß]+$=i";
    $kontodaten = mysql_fetch_array(db_query("SELECT `kontostand` FROM ".
    $db_prefix."_kontodaten WHERE uid=".$_SESSION['uid']." LIMIT 1"));
    $check=db_query("SELECT Gutschein FROM ".$db_prefix."_gutschein WHERE Gutschein='".$name."'");
    $schein = ucfirst($name);

    if (mysql_real_escape_string($_GET['name'])){
    $restwert=mysql_fetch_assoc(db_query("SELECT * FROM ".$db_prefix."_gutschein where Gutschein='".mysql_real_escape_string($_GET['name'])."' and Uid='".$_SESSION['uid']."'"));
    $rest=$restwert['Menge'] * $restwert['Wert'];
    kontobuchung ('+',$rest,$_SESSION['uid']);
    buchungsliste (create_code(14),+$rest,''.$menge.' Restwert von Gutschein '.mysql_real_escape_string($_GET['name']).'',$_SESSION['uid']);
    db_query("Delete From ".$db_prefix."_gutschein where Gutschein='".mysql_real_escape_string($_GET['name'])."' and Uid='".$_SESSION['uid']."'");
    db_query("Delete From ".$db_prefix."_benutzte_gutscheine where Gutschein='".mysql_real_escape_string($_GET['name'])."'");
        $meldung="Gutschein gel&ouml;scht<br />
    und Restwert gutgeschrieben!
    ";
    }

    if ($_POST['erstellen']){
    if($wert<0) {
    $error.= "Keine Minusbeträge!"; 
    }
    if($wert>=$max_wert) {
    $error.= "Der Gutscheinwert darf h&ouml;chstens ".$max_wert." Euro betragen!<br />";    
    }
    if (mysql_num_rows($check)) {
    $error.= "Es existiert bereits ein Gutschein mit dem Namen überlege dir bitte einen anderen Namen!<br />";    
    }
    if ($name == "" or $menge == "" or $wert == "") $error .=
    'Bitte f&uuml;lle alle Felder aus!<br />';
    if ($test >= $kontodaten['kontostand']) $error .= 'Du hast nicht genug Geld';
    if (preg_match("/^\d*$/",$menge)==0)  {
      $error= 'Nur Ziffern bei der Menge<br/>';
    }  
    if (!$wert == "" && !is_numeric($wert)) $error= 'Bitte nur Zahlen bei dem Wert eingeben<br/>';
    if (preg_match($muster1, $name)==0){
        $error .= 'Bitte nur Buchstaben als Gutscheinname<br>';    
        }
    if (!$error){
    kontobuchung ('-',$test,$_SESSION['uid']);
    buchungsliste (create_code(14),-$test,''.$menge.' Gutschein(e) erstellt im Wert von je '.$wert.' '.$waehrung.'',$_SESSION['uid']);        
    db_query("Insert Into vms_gutschein
     (Uid,Gutschein,aMenge,Menge,Wert) values ('".$_SESSION['uid']."','".$schein."','".$menge."','".$menge."','".$wert."');
     ");
     echo "<head><meta http-equiv=\"refresh\"content=\"0;?content=/konto/gutschein\";></head>"; 
    //gutschein mit eurem Dateinamen ersetzen
    }
    }

    if ($error){
    head("Eingabefehler");
    echo '<font color="#cc0000">'.$error.'</font>';
    foot();
    }
    head("Gutschein erstellen");?>
    <table width="300" border="0">
    <form action="" method="post">
    <tr>
    <td><label for="name">Gutscheinname</label></td>
    <td><input type="text" name="name" id="name" /></td>
    </tr>
    <tr>
    <td><label for="menge">Menge</label></td>
    <td><input type="text" name="menge" id="menge" /></td>
    </tr>
    <tr>
    <td><label for="wert">Wert</label></td>
    <td><input type="text" name="wert" id="wert" /></td>
    </tr>
    <tr>
    <td>Senden</td>
    <td><input type="submit" name="erstellen" value="Senden"></td>
    </tr>
    </form>
    </table>
    <?foot();
    head("Gutscheine");?>
    <table width="100%" cellpadding="1" cellspacing="1" border="0" bgcolor="#187BDF">
    <tr bgcolor="#1839DF">
    <td width="5%" align="center"><b>Gutscheinname</b></td>
    <td width="20%" align="center"><b>Menge</b></td>
    <td width="20%" align="center"><b>Wert</b></td>
    <td width="20%" align="center"><b>L&ouml;schen</b></td>
    </tr>

    <?
    $platz2 = db_query("SELECT Gutschein,Menge,aMenge,Wert FROM 
       ".$db_prefix."_gutschein 
       where uid='".$_SESSION['uid']."'");
    while ($nickg = mysql_fetch_assoc($platz2)){
    echo '
    <tr bgcolor="#FFFFFF">
    <td align="center">'.$nickg['Gutschein'].'</td>
    <td align="center">'.number_format($nickg['Menge'],0,",",".").' von '.number_format($nickg['aMenge'],0,",",".").' &uuml;brig</a></td>
    <td align="center">'.number_format($nickg['Wert'],2,",",".").'</td>
    <td align="center"><a href="?content=/konto/gutschein&amp;name='.$nickg['Gutschein'].'" target="_self">x</a></td>
    </tr>
    ';//gutschein durch euren Dateinamen ersetzen
    }
    ?>
    </table>
    <?php echo $meldung;
    foot();
    head("Gutscheine einlösen");?>
    <form action="" method="POST">
    <input name="einlösen" type="text" id="einlösen" value="Gutscheinname"/>
    <input name="gutname" type="submit" value="Gutschein einlösen!" />
    </form>
    <?foot();

    $einloesen=mysql_real_escape_string($_POST['einlösen']);
    $menge=mysql_fetch_assoc(db_query("Select Menge from ".$db_prefix."_gutschein where
    Gutschein='".$einloesen."'"));
    $test1= mysql_fetch_assoc(db_query("Select Wert from ".$db_prefix."_gutschein where
    Gutschein='".$einloesen."'"));
    $test2= mysql_fetch_assoc(db_query("Select Uid from ".$db_prefix."_gutschein where
    Gutschein='".$einloesen."'"));
    $Gutschein_check=db_query("Select Gutschein from ".$db_prefix."_gutschein where
    Gutschein='". $einloesen."'");
    $eingeloest=db_query("Select Uid from ".$db_prefix."_benutzte_gutscheine where
    Gutschein='". $einloesen."'");

    if ($_POST['gutname']){
    if ($einloesen == "" or $einloesen == "Gutscheinname") $error .= 'Bitte
    gib einen Gutscheinnamen ein!<br />';
    if (mysql_num_rows($Gutschein_check)==0) $error .="Dieser Gutschein existiert nicht!
    <br />";
    if ($menge['Menge'] <= 0) $error .= 'Der Gutschein ist verbraucht!<br />';
    if ($test2['Uid'] == $_SESSION['uid']) $error .= 'Du kannst nicht deine eigenen Gutscheine
    einlosen!';
    if (mysql_num_rows($eingeloest)) $error .="Du hast diesen Gutschein schon eingel&ouml;st
    <br />";
    if (!$error){
    kontobuchung('+',$test1['Wert'],$_SESSION['uid']);
    buchungsliste (create_code(14),+$test1['Wert'],'Gutschein eingel&ouml;st',
    $_SESSION['uid']);
    db_query("Update ".$db_prefix."_gutschein set Menge=Menge -1 where Gutschein='".
    $einloesen."'");
    db_query("INSERT INTO ".$db_prefix."_benutzte_gutscheine (Uid,Gutschein) VALUES ('".$_SESSION['uid']."','".$einloesen."')");
    $info.="Gutschein eingel&ouml;st!";
    }}
    if ($info){
    head("Information");
    echo '
    <font color="#cc0000">'.$info.'</font>';
    foot();
    }
    ?>
    und natürlich noch in lib/menue_links.php oder menue_rechts.php einbinden.
    Wünsche euch viel Spaß am Addon und sollten Fehler drin sein oder es funktioniert nicht oder ihr habt Verbesserungsvorschläge bitte hier schreiben.

  2. #2
    Erfahrener Benutzer Avatar von WaechterMedia
    Registriert seit
    02.10.2008
    Beiträge
    172
    Bischn spät, was mir direkt auffällt du sicherst die eingabe des User in die db überhaupt nicht ab ich könnte da reinschreiben was ich will und das ist nicht gut :/

    Ansonsten nett das du es kostenfrei zu verfügung stellst

  3. #3
    Neuer Benutzer
    Registriert seit
    06.10.2010
    Beiträge
    21
    Zitat Zitat von WaechterMedia Beitrag anzeigen
    Bischn spät, was mir direkt auffällt du sicherst die eingabe des User in die db überhaupt nicht ab ich könnte da reinschreiben was ich will und das ist nicht gut :/

    Ansonsten nett das du es kostenfrei zu verfügung stellst
    Stimmt da hast du recht.Hab es jetzt mal bisschen bearbeitet.
    Hoffe das es so besser ist.

  4. #4
    Erfahrener Benutzer
    Registriert seit
    23.04.2009
    Beiträge
    155
    Man kann Gutscheine mit gleichen Namen erstellen. Das ist doof, denn lösche ich einen sind alle mit gleichen Namen weg. Und dem User wird nur einer gutgeschrieben wieder.

    Und ist es normal zweimal die selbe ($menge) Variable zu nutzen. (ich weiss nicht)

    PHP-Code:
    db_query("Insert Into vms_gutschein
     (Uid,Gutschein,aMenge,Menge,Wert) values ('"
    .$_SESSION['uid']."','".$schein."','".$menge."','".$menge."','".$wert."'); 
    Im SQL ist aber nix mit aMenge wohin soll er das denn packen.

  5. #5
    Neuer Benutzer
    Registriert seit
    06.10.2010
    Beiträge
    21
    Zitat Zitat von CeleronD Beitrag anzeigen
    Man kann Gutscheine mit gleichen Namen erstellen. Das ist doof, denn lösche ich einen sind alle mit gleichen Namen weg. Und dem User wird nur einer gutgeschrieben wieder.

    Und ist es normal zweimal die selbe ($menge) Variable zu nutzen. (ich weiss nicht)

    PHP-Code:
    db_query("Insert Into vms_gutschein
     (Uid,Gutschein,aMenge,Menge,Wert) values ('"
    .$_SESSION['uid']."','".$schein."','".$menge."','".$menge."','".$wert."'); 
    Im SQL ist aber nix mit aMenge wohin soll er das denn packen.
    Danke für den Hinweis und sorry für die Fehler hab es jetzt oben verbessert .
    Und aMenge muss man noch in der Datenbank hinzufügen.
    Hier der Befehl:
    Code:
    ALTER TABLE `vms_gutschein` ADD `aMenge` INT( 10 ) NOT NULL
    und die Änderungen in der Gutschein.php sind:
    unter die Zeile :
    PHP-Code:
    $kontodaten   mysql_fetch_array(db_query("SELECT `kontostand` FROM ".$db_prefix."_kontodaten WHERE uid=".$_SESSION['uid']." LIMIT 1")); 
    das einfügen:
    PHP-Code:
    $check=db_query("SELECT Gutschein FROM ".$db_prefix."_gutschein WHERE Gutschein='".$name."'"); 
    dann unter der Zeile :
    PHP-Code:
    if ($_POST['erstellen']){ 
    das einfügen :
    PHP-Code:
    if (mysql_num_rows($check)) {
    $error.= "Es existiert bereits ein Gutschein mit dem Namen überlege dir bitte einen anderen Namen!<br />";    


  6. #6
    Erfahrener Benutzer
    Registriert seit
    23.04.2009
    Beiträge
    155
    PHP-Code:
    db_query("Insert Into vms_gutschein 
     (Uid,Gutschein,aMenge,Menge,Wert) values ('"
    .$_SESSION['uid']."','".$schein."','".$menge."','".$menge."','".$wert."'); 
    Wieso soll er beim eintragen in die Db zweimal das gleiche Eintragen ($menge) ???

  7. #7
    Neuer Benutzer
    Registriert seit
    06.10.2010
    Beiträge
    21
    Also in die Spalte aMenge um zu wissen wie viele Gutscheine es mal waren und Menge eben wie viele es noch gibt .

  8. #8
    Erfahrener Benutzer
    Registriert seit
    23.04.2009
    Beiträge
    155
    Zwei Sachen hab ich nun noch gefunden. Man kann als User soviel Gutscheine einlösen wie da sind.
    Und es wird keine Meldung ausgeben das der Gutschein eingelöst wurde.

  9. #9
    Neuer Benutzer
    Registriert seit
    06.10.2010
    Beiträge
    21
    Danke nochmal und hier die Lösung:

    db_befehl:
    Code:
    CREATE TABLE IF NOT EXISTS `vms_benutzte_gutscheine` (
    `Uid` INT NOT NULL ,
    `Gutschein` TEXT NOT NULL 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    dann nach der Zeile:
    PHP-Code:
    $Gutschein_check=db_query("Select Gutschein from ".$db_prefix."_gutschein where
    Gutschein='"
    $einloesen."'"); 
    das
    PHP-Code:
    $eingeloest=db_query("Select Uid from ".$db_prefix."_benutzte_gutscheine where
    Gutschein='"
    $einloesen."'"); 
    dann nach der Zeile:
    PHP-Code:
    if ($test2['Uid'] == $_SESSION['uid']) $error .= 'Du kannst nicht deine eigenen Gutscheine
    einlosen!<br />'

    dies:
    PHP-Code:
    if (mysql_num_rows($eingeloest)) $error .="Du hast diesen Gutschein schon eingel&ouml;st
    <br />"

    einfügen
    unten unter der Zeile:
    PHP-Code:
    db_query("Update ".$db_prefix."_gutschein set Menge=Menge -1 where Gutschein='".
    $einloesen."'"); 
    dies einfügen:
    PHP-Code:
    db_query("INSERT INTO ".$db_prefix."_benutzte_gutscheine (Uid,Gutschein) VALUES ('".$_SESSION['uid']."','".$einloesen."')");
    $info.="Gutschein eingel&ouml;st!"
    so das war das der User ein Gutschein nur einmal einlösen kann:
    Hier für die Info :
    Nach der Zeile:
    PHP-Code:
    if (!isset($error)) $error                 ""
    PHP-Code:
    if (!isset($info)) $info                 ""
    einfügen
    dann weiter unten unter
    PHP-Code:
    db_query("INSERT INTO ".$db_prefix."_benutzte_gutscheine (Uid,Gutschein) VALUES ('".$_SESSION['uid']."','".$einloesen."')"); 
    das
    PHP-Code:
    $info.="Gutschein eingel&ouml;st!"
    und ganz unten vor dem ?>
    das
    PHP-Code:
    if ($info){
    head("Information");
    echo 
    '
    <font color="#cc0000">'
    .$info.'</font>';
    foot();

    einfügen

  10. #10
    Erfahrener Benutzer
    Registriert seit
    23.04.2009
    Beiträge
    155
    Super funzt.

    Vielen Dank. Ich werde das als reinen Gutschein nutzen. In die Anmelden will das bei mir nicht rein. Irgendwas klappt das dort nicht, meldet sich ein User an steht entweder der Nick nicht mit dabei oder die UID fehlt.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Frage zu "Gutscheinaddon"
    Von riwasch im Forum Support zu Addons & Erweiterungen
    Antworten: 4
    Letzter Beitrag: 03.07.2008, 09:29
  2. Gutscheinaddon VMS 1
    Von adau im Forum Scripte
    Antworten: 31
    Letzter Beitrag: 12.06.2008, 16:35
  3. [S] Gutscheinaddon & Interfaces
    Von MaxY im Forum Scripte
    Antworten: 1
    Letzter Beitrag: 09.04.2007, 18:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •