PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gutscheinaddon



jo18nny
08.03.2011, 13:23
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:


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;



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:

if ($_POST['agb'] != "ja") $error .= 'Du musst die AGBs bestätigen!<br>';das hier einfügen:


//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 :


db_query("INSERT INTO ".$db_prefix."_kontodaten (uid,passwort,status,hinweis,kontostand) VALUES ('".$_POST['uid']."','".md5($_POST['passwort_1'])."','0','','0')");

und das:


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


$uid = mysql_insert_id();
//Bitte beachten das über dieser Variablen der mysql eintrag für die Userdaten vorhanden sein muss.


dies einfügen:


//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:

if ($_POST['newsletter'] == 1 and $_POST['paidmails'] == 1) $mailstatus = 3;
dies einfügen:


//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:

<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:


<?
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.

WaechterMedia
29.04.2011, 23:05
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 :D

jo18nny
30.04.2011, 10:20
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 :D
Stimmt da hast du recht.Hab es jetzt mal bisschen bearbeitet.
Hoffe das es so besser ist.

CeleronD
14.07.2011, 20:58
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)


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.

jo18nny
14.07.2011, 21:54
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)


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:


ALTER TABLE `vms_gutschein` ADD `aMenge` INT( 10 ) NOT NULL

und die Änderungen in der Gutschein.php sind:
unter die Zeile :

$kontodaten = mysql_fetch_array(db_query("SELECT `kontostand` FROM ".$db_prefix."_kontodaten WHERE uid=".$_SESSION['uid']." LIMIT 1"));

das einfügen:

$check=db_query("SELECT Gutschein FROM ".$db_prefix."_gutschein WHERE Gutschein='".$name."'");


dann unter der Zeile :

if ($_POST['erstellen']){

das einfügen :

if (mysql_num_rows($check)) {
$error.= "Es existiert bereits ein Gutschein mit dem Namen überlege dir bitte einen anderen Namen!<br />";
}

CeleronD
14.07.2011, 22:20
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) ???

jo18nny
14.07.2011, 22:23
Also in die Spalte aMenge um zu wissen wie viele Gutscheine es mal waren und Menge eben wie viele es noch gibt .

CeleronD
14.07.2011, 22:36
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.

jo18nny
15.07.2011, 00:14
Danke nochmal und hier die Lösung:

db_befehl:


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:

$Gutschein_check=db_query("Select Gutschein from ".$db_prefix."_gutschein where
Gutschein='". $einloesen."'");
das


$eingeloest=db_query("Select Uid from ".$db_prefix."_benutzte_gutscheine where
Gutschein='". $einloesen."'");

dann nach der Zeile:

if ($test2['Uid'] == $_SESSION['uid']) $error .= 'Du kannst nicht deine eigenen Gutscheine
einlosen!<br />';
dies:

if (mysql_num_rows($eingeloest)) $error .="Du hast diesen Gutschein schon eingel&ouml;st
<br />";
einfügen
unten unter der Zeile:

db_query("Update ".$db_prefix."_gutschein set Menge=Menge -1 where Gutschein='".
$einloesen."'");
dies einfügen:


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:

if (!isset($error)) $error = "";


if (!isset($info)) $info = "";

einfügen
dann weiter unten unter

db_query("INSERT INTO ".$db_prefix."_benutzte_gutscheine (Uid,Gutschein) VALUES ('".$_SESSION['uid']."','".$einloesen."')");
das

$info.="Gutschein eingel&ouml;st!";

und ganz unten vor dem ?>
das

if ($info){
head("Information");
echo '
<font color="#cc0000">'.$info.'</font>';
foot();
}
einfügen

CeleronD
15.07.2011, 00:43
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.

jo18nny
15.07.2011, 00:54
Hast du das Vms mit Klamm oder ohne Klamm?

CeleronD
15.07.2011, 00:57
Ich hab das VMS ohne KLAMM. Nun sehe ich aber noch was. Der User bleibt in der db gespeichert, auch wenn man den Gutschein wieder löscht. Das ebenfalls wieder doof, wenn jemand den gleich Namen für nen neuen Gutschein nutzen will.

jo18nny
15.07.2011, 01:06
Ok gucke mir das mal an mit der anmelden.php
und zu dem anderen meinst du die User die einen Gutschein eingelöst haben also in der db vms_benutzte-gutscheine?

CeleronD
15.07.2011, 01:08
Ja das meine ich (benutze_gutscheine).

jo18nny
15.07.2011, 01:09
ok dann unter der Zeile 23

db_query("Delete From ".$db_prefix."_gutschein where Gutschein='".mysql_real_escape_string($_GET['name'])."' and Uid='".$_SESSION['uid']."'");
dies

db_query("Delete From ".$db_prefix."_benutzte_gutscheine where Gutschein='".mysql_real_escape_string($_GET['name'])."'");

einfügen.
Mfg.Jo18nny

CeleronD
15.07.2011, 01:21
Danke. Das war das.

Sam2004
23.08.2012, 18:54
Abend...

Ich hab die Gutschein.php aus dem ersten Post kopiert und bei mir hochgeladen, allerdings ist ein Fehler drin und zerschießt mir das Design.

Ist ein Fehler in der Datei? Ich hab so drüber geschaut und nichts gefunden. Hat das sonst wer Problemlos im Einsatz und könnte mir mal die Datei schicken?
Danke...

LG

buxpruefer
24.08.2012, 14:21
Probier mal statt


<table width="300" border="0">


<table width="100%" border="0">

Wenn das auch nicht klappt, einfach mal ein bisschen mit den Werten der Tabellenbreite rumspielen...

Sam2004
24.08.2012, 14:35
Probier mal statt


<table width="300" border="0">
<table width="100%" border="0">Wenn das auch nicht klappt, einfach mal ein bisschen mit den Werten der Tabellenbreite rumspielen...
Hallo,
Danke für dein Vorschlag, aber bringt auch nix.

Iwo ist die Tabelle nicht geschlossen oder ein tag ist nicht zu oder es fehlt was.

LG

*ed*
Gutschein.php wurde vom Ersteller überarbeitet und ist jetzt in Ordnung.