PHP+Mysql Tipp-Abgabe wenn guthaben NULL ist nicht weiter

bhalili

Mitglied
Hallo Freunde, ich habe hier ein kleines Tipp-Script, d.h. ein user bezahlt für eine Tipp-Abgabe 10 Punkte d.h es werden für die Tipp-Abgabe auch wenn das Guthaben 0 ist 10 Punkte abgezogen, so dass der user -10 Guthaben hat, dieses möchte ich verhindern dass wenn das Guthaben 0 ist kein Tipp abgegeben werden kann. Wäre nett wenn mir einer helfen könnte. Anbei mein Code von der tippen.inc.php
PHP:
<?php

if($lg=="ok") {

$user = $_SESSION[user];

$gets2=mysql_query("SELECT * FROM ft_spiele WHERE id='".addslashes($id)."'");
$gets=mysql_fetch_array($gets2);

$tgets2=mysql_query("SELECT * FROM ft_tipps WHERE spiel='".addslashes($id)."' AND user='".addslashes($user)."'");
$tgets=mysql_fetch_array($tgets2);

echo "<b>".$gets[heim]." - ".$gets[gast]."</b><br>".date("d.m.Y H:i",$gets[datum])."<br><br>";

if($gets[datum]<time()) echo "<font color=red>Für dieses Spiel kann leider kein Tipp mehr abgegeben werden.</font>"; //Hier wird mit IF abgefangen wenn die Zeit abgelaufen ist.

elseif($tgets[id]!="") echo "<font color=red>Du hast bei diesem Spiel bereits getippt.</font>"; //Hir wird abgefangen wenn man schon für das Spiel geboten hat

//Hier sollte denke ich kontrolliert werden wenn Datenfeld guthaben = 0 ist echo "zu wenig Guthaben"???

else {

if($tipp!="") {

$ghneu = $usrd[guthaben]-10;
mysql_query("UPDATE ft_user SET guthaben='".$ghneu."' WHERE id='".$usrd[id]."'");
mysql_query("INSERT INTO ft_tipps (user,spiel,tipp,status) VALUES ('".$usrd[user]."', '".$id."', '".$tipp."','1')"); echo "<font color=darkgreen>Vielen Dank, dein Tipp wurde gespeichert.</font>";

}

else echo "Dein aktuelles Guthaben beträgt <b>".$usrd[guthaben]."</b> Punkte.<br><br>Die Abgabe eines Tipps kostet dich <b>10</b> Punkte.<br>Sollte dein Tipp richtig sein, erhältst du <b>30</b> Punkte gutgeschrieben.<br><br>Dein Tipp:<br><br><form action=index.php method=post><input type=hidden name=d value=tippen><input type=hidden name=id value=".$id."><input type=radio name=tipp value=1>Sieg für ".$gets[heim]."<br><input type=radio name=tipp value=2 checked>Unentschieden<br><input type=radio name=tipp value=3>Sieg für ".$gets[gast]."<br><br><input type=submit value=\"Tipp abgeben\"></form>";

}
} else {

echo "<b>Bitte einloggen</b><br><br>Um auf ein Spiel tippen zu können, musst du dich einloggen. Falls du noch nicht registriert bist, kannst du dich <a href=index.php?d=anmelden>hier kostenlos anmelden</a>.<br><br><br>";

if($user!="") echo "<b><font color=red>Falsche Zugangsdaten!</font></b><br><br>";

echo "<form action=index.php method=post><input type=hidden name=d value=tippen><input type=hidden name=id value=".$id."><table border=0 align=center cellspacing=2 cellpadding=2><tr><td>Benutzername:</td><td><input type=text name=user style=width:250px></td></tr><tr><td>Passwort:</td><td><input type=password name=pass style=width:250px></td></tr><tr><td colspan=2 align=right><input type=submit value=Login></td></tr></table></form>";

}

?>
[/php}
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

irgendwas haut da mit deiner Klammersetzung nicht hin, kann man aber schlecht erkennen so.
Ich würde direkt am Anfang abfragen, ob er genug Guthaben hat. Und nur wenn er genug Guthaben hat, dann das ganze Rest ausführen lassen.
Z.B. so:
PHP:
<?php

if($usrd[guthaben] <=9){
    echo "Dein Guthaben reicht leider nicht aus, um einen Tipp abzugeben";
    echo "usw. usw.";
}else{

    if($lg=="ok") {
        $user = $_SESSION[user];

        $gets2=mysql_query("SELECT * FROM ft_spiele WHERE id='".addslashes($id)."'");
        $gets=mysql_fetch_array($gets2);

        $tgets2=mysql_query("SELECT * FROM ft_tipps WHERE spiel='".addslashes($id)."' AND user='".addslashes($user)."'");
        $tgets=mysql_fetch_array($tgets2);

        echo "<b>".$gets[heim]." - ".$gets[gast]."</b><br>".date("d.m.Y H:i",$gets[datum])."<br><br>";

        if($gets[datum]<time()){
            echo "<font color=red>Für dieses Spiel kann leider kein Tipp mehr abgegeben werden.</font>"; //Hier wird mit IF abgefangen wenn die Zeit abgelaufen ist.
        }elseif($tgets[id]!=""){
            echo "<font color=red>Du hast bei diesem Spiel bereits getippt.</font>"; //Hir wird abgefangen wenn man schon für das Spiel geboten hat
        }

        if($tipp!="") {
            $ghneu = $usrd[guthaben]-10;
            mysql_query("UPDATE ft_user SET guthaben='".$ghneu."' WHERE id='".$usrd[id]."'");
            mysql_query("INSERT INTO ft_tipps (user,spiel,tipp,status) VALUES ('".$usrd[user]."', '".$id."', '".$tipp."','1')"); echo "<font color=darkgreen>Vielen Dank, dein Tipp wurde gespeichert.</font>";   
        }else{
            echo "Dein aktuelles Guthaben beträgt <b>".$usrd[guthaben]."</b> Punkte.<br><br>Die Abgabe eines Tipps kostet dich <b>10</b> Punkte.<br>Sollte dein Tipp richtig sein, erhältst du <b>30</b> Punkte gutgeschrieben.<br><br>Dein Tipp:<br><br><form action=index.php method=post><input type=hidden name=d value=tippen><input type=hidden name=id value=".$id."><input type=radio name=tipp value=1>Sieg für ".$gets[heim]."<br><input type=radio name=tipp value=2 checked>Unentschieden<br><input type=radio name=tipp value=3>Sieg für ".$gets[gast]."<br><br><input type=submit value=\"Tipp abgeben\"></form>";
        }
    }else{
        echo "<b>Bitte einloggen</b><br><br>Um auf ein Spiel tippen zu können, musst du dich einloggen. Falls du noch nicht registriert bist, kannst du dich <a href=index.php?d=anmelden>hier kostenlos anmelden</a>.<br><br><br>";
        if($user!="")
            echo "<b><font color=red>Falsche Zugangsdaten!</font></b><br><br>";
            echo "<form action=index.php method=post><input type=hidden name=d value=tippen><input type=hidden name=id value=".$id."><table border=0 align=center cellspacing=2 cellpadding=2><tr><td>Benutzername:</td><td><input type=text name=user style=width:250px></td></tr><tr><td>Passwort:</td><td><input type=password name=pass style=width:250px></td></tr><tr><td colspan=2 align=right><input type=submit value=Login></td></tr></table></form>";
    }
}
?>

Hoffe das ich das so richtig hinbekommen habe, da wie gesagt irgendwas mit Deinen Abfragen nicht passt.
 
Des weiteren gewöhne dir gar nicht erst die Arbeit mit den mysql_* Funktionen an oder gewöhne es dir ab!

Diese Funktionen sind alle deprecated markiert und wurden alle schon lange nicht mehr weiterentwickelt und können so auch Fehler enthalten.
Außerdem werden sie bald aus PHP entfernt.
 
Hallo DerKleene1, hab dein Beispiel ausprobiert, nur ging das mit der ersten und zweiten Abfrage schief. Hab jetzt die Guthaben-Abfrage zu den zwei anderen gesetzt und es funktioniert wunderbar. Danke nochmal für dein Beispiel

PHP:
if($usrd[guthaben] <=9){
    echo "Dein Guthaben reicht leider nicht aus, um einen Tipp abzugeben";


du hast meinen Tag gerettet.
 
Ergänzend zu merzi86 noch eine Anmerkung: Vermeinde wenn möglich "SELECT * FROM", sondern gib die konkret benötigten Spaltennamen an, also z.B. "SELECT guthaben FROM".
Das ist schneller und sicherer.
 

Neue Beiträge

Zurück