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;
Dann in der anmelden.php nach:Code:CREATE TABLE IF NOT EXISTS `vms_benutzte_gutscheine` (
`Uid` INT NOT NULL ,
`Gutschein` TEXT NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
das hier einfügen:PHP-Code:
if ($_POST['agb'] != "ja") $error .= 'Du musst die AGBs bestätigen!<br>';
weiter unten das :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
und das:PHP-Code:
db_query("INSERT INTO ".$db_prefix."_kontodaten (uid,passwort,status,hinweis,kontostand) VALUES ('".$_POST['uid']."','".md5($_POST['passwort_1'])."','0','','0')");
löschen.PHP-Code:
db_query("INSERT INTO ".$db_prefix."_werberdaten (uid,werber,umsatz,zuordnungszeit)
VALUES (".$uid.",'".$_SESSION['werber']."','0','".time()."')");
Dafür dann oben Bei vms ohne Klammanbindung unter
dies einfügen:PHP-Code:
$uid = mysql_insert_id();
//Bitte beachten das über dieser Variablen der mysql eintrag für die Userdaten vorhanden sein muss.
und Bei vms mit Klammanbindung unter: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']."')");
}
dies einfügen:PHP-Code:
if ($_POST['newsletter'] == 1 and $_POST['paidmails'] == 1) $mailstatus = 3;
und das unten bei den anderen Feldern: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
an beliebiger stelle einbauen.HTML-Code:<tr>
<td class="main"><b>Gutschein:</b></td>
<td class="main"><input name="Gutschein" type="text" value="<?=$_POST['Gutschein'];?
>"></td>
</tr>
Datei content/konto/Gutschein.php erstellen und das hier einfügen:
und natürlich noch in lib/menue_links.php oder menue_rechts.php einbinden.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();
}
?>
Wünsche euch viel Spaß am Addon und sollten Fehler drin sein oder es funktioniert nicht oder ihr habt Verbesserungsvorschläge bitte hier schreiben.