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'] == 1 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öscht<br />
und Restwert gutgeschrieben!
";
}
if ($_POST['erstellen']){
if($wert<0) {
$error.= "Keine Minusbeträge!";
}
if($wert>=$max_wert) {
$error.= "Der Gutscheinwert darf hö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ü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ö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,",",".").' übrig</a></td>
<td align="center">'.number_format($nickg['Wert'],2,",",".").'</td>
<td align="center"><a href="?content=/konto/gutschein&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öst
<br />";
if (!$error){
kontobuchung('+',$test1['Wert'],$_SESSION['uid']);
buchungsliste (create_code(14),+$test1['Wert'],'Gutschein eingelö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ö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.