Brauche php Hilfe!

joker_t2005

abgemeldet
27 Januar 2007
603
35
Ich habe ein fehler in einer php datei, wenn der user seine lose auszahlt zahlt er auch seine bonuslose aus!

Das ist ein teil der auszahlungs php.

PHP:
<? userstatus();

$tag = strtotime("".date("m")."/".date("d")."/".date("Y")." 0 hours 0 minutes 0 seconds");
$schnittstelle = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_schnittstelle LIMIT 1")) or die("Userinfo");
$s_verbrauch = mysql_num_rows(db_query("SELECT * FROM ".$db_prefix."_schnittstelle_anfragen WHERE uid='".$_SESSION['uid']."' and zeit='".$tag."'"));
$a_free= mysql_fetch_array(db_query("SELECT a_free AS free FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid']));
if ($_POST['auszahlen'] == 'Auszahlen' && $_POST['uid_passwort'] && $_POST['trans_menge']) {
//neu Auszahlungs Sperre anfang
 if( $a_free['free'] == '1' ) { 
//neu Auszahlungs Sperre
	if (!ereg("[^0-9]", $_POST['trans_menge']) and $_POST['trans_menge']  >= $schnittstelle['auszahlsumme']) {
		$kontodaten	= mysql_fetch_array(db_query("SELECT `kontostand` FROM ".$db_prefix."_kontodaten WHERE uid=".$_SESSION['uid']." LIMIT 1"));
		if ($_POST['trans_menge'] <= $kontodaten['kontostand']) {
			if ($schnittstelle['anfragen_user'] == 0 or $s_verbrauch < $schnittstelle['anfragen_user']) {
				$buchungs_id = create_code(14);
				@require_once ("lib/schittstellen/".$schnittstelle['schnittstelle'].".php");
				@auszahlen ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['uid_passwort'],$schnittstelle['betreiber_kennung'],$_POST['trans_menge'],$schnittstelle['auszahltext'],'');
				if ($schnittstelle['anfragen_user'] != 0) db_query("INSERT INTO ".$db_prefix."_schnittstelle_anfragen (zeit,uid) VALUES ('".$tag."','".$_SESSION['uid']."')");
					if ($error) {
					$auszahlmeldung = $trans_ausgabe;
					} else {
					kontobuchung ('-',$_POST['trans_menge'],$_SESSION['uid']);
					buchungsliste ($buchungs_id,'-'.$_POST['trans_menge'],$schnittstelle['auszahltext'],$_SESSION['uid']);

					$auszahlmeldung = 'Es wurden '.$_POST['trans_menge'].' '.$waehrung.' ausgezahlt'; 

					}
			} else {
			$auszahlmeldung = 'Deine Schnittstellenanfragen sind verbraucht!!!';
			}
			//
     } else { $auszahlmeldung = "Sie sind für Auszahlungen noch nicht Freigeben fragen Sie bitte den Admin."; 
   }
// Neu Auszahlungs Sperre ende 
		} else {
		$auszahlmeldung = 'Soviel Guthaben hast Du nicht!!!';
		}
	} else {
	$auszahlmeldung = 'Bitte achte auch die Buchungsmenge !!!';
	}
} else {
if ($_POST['auszahlen'] == 'Auszahlen') $auszahlmeldung = 'Eingabefehler, bitte wiederholen!!!';
}

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


<? head(""); ?>
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<form action="" method="post">
<tr>
<td align="left" width="55%">Kontonummer</td><td align="left"><?=$_SESSION['uid'];?></td>
</tr>
<tr>
<td align="left">Aktueller Kontostand</td><td align="left"><?=number_format($kontodaten['kontostand'],2,",",".").' '.$waehrung;?></td>
</tr>
<tr>
<td align="left"><?=$waehrung;?> (min. <?=$schnittstelle['auszahlsumme'];?> <?=$waehrung;?>)</td><td align="left"><input type="Text" name="trans_menge" value=""></td>
</tr>
</form>
</table>
<?foot();?>

Und das ist der Teil aus der funktions.lib.php der fürs buchen zuständig ist.

PHP:
function kontobuchung ($art,$trans_menge,$fuer) {
    global $db_prefix;
    if ($art=="-"){
        db_query("UPDATE ".$db_prefix."_kontodaten SET `bonuslose` = `bonuslose` ".$art." ".$trans_menge." WHERE uid=".$fuer." and bonuslose >= ".$trans_menge);

        if (mysql_affected_rows()==0)
        {
            db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = `kontostand` + bonuslose, bonuslose=0 WHERE uid=".$fuer);
            db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = `kontostand` ".$art." ".$trans_menge." WHERE uid=".$fuer);
        }
    }
    else
    {
        db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = `kontostand` ".$art." ".$trans_menge." WHERE uid=".$fuer."");
    }
} 

function bonuslose ($art,$trans_menge,$fuer) {
global $db_prefix;
db_query("UPDATE ".$db_prefix."_kontodaten SET `bonuslose` = `bonuslose` ".$art." ".$trans_menge." WHERE uid=".$fuer."");
}

Würde mich sehr freuen wenn mir jemand sagen kann wo der fehler ist.

Mfg Joker_t2005
 
Wenn ich die zeille raus nehme zieht es keine Bonuslose beim auszahlen ab, aber der kontostand bleibt gleich! Das heist der user könnte auszahlen bis der ef leer ist und sein konntostand würde gleich bleiben! :-?
 
funktions.lib.php :
PHP:
function kontobuchung ($art,$trans_menge,$fuer) {
    global $db_prefix;
    if($art=="-") {
db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = (`kontostand` - ".$trans_menge.") WHERE uid='".$fuer."' and `kontostand` >='".$trans_menge."'");
                      }
                else {
       db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = (`kontostand` + ".$trans_menge.") WHERE uid='".$fuer."'");
                      }
} 

function bonuslose ($art,$trans_menge,$fuer) {
global $db_prefix;
db_query("UPDATE ".$db_prefix."_kontodaten SET `bonuslose` = `bonuslose` ".$art." ".$trans_menge." WHERE uid=".$fuer."");
}

auf die schnelle jetzt, aber müsste klappen

edit: ich versteh da was nicht.
lt. skript ist das so dass, falls der mensch wenig bonuslose hat, bzw die summe der transaktionsmenge, sein bonusloseguthaben übersteigt

dann werden die bonuslose aufs konto gutgeschrieben?

das hab ich rausgenommen, weil ich hab den sinn jetzt nicht verstanden (bin allerdings auch klamm-neuling)

und zu lange wach, vielleicht hab ich auch einfach n denkfehler grad :D
 
Zuletzt bearbeitet:
Da habe ich mich zu früh gefreut! :(
Wenn ich den Code rein mache werde zwar keine Bonuslose mehr ausgezahlt aber, man kann die Bonuslose auch an keinem Slot mehr verzocken! :(

Mfg Joker_t2005