[PHP] Nur else Teil einer IF Abfrage wird ausgeführt ?

Stoffi

Well-known member
ID: 189065
L
16 Mai 2006
2.067
87
Falls falsches Forum bitte verschieben.. ;)
Also ich hab folgendes Problem:
Bei ner MySQL abfrage wo abgefragt wird ob genung guthaben da sind beim User gibt er bei der IF Abfrage immer den else teil aus... :mrgreen:

Hier mal den Code: ( Finden den Fehler einfach nicht )
Im VMS Forum hat noch niemand geantwort deswegen post ich hier nochmal :mrgreen:
PHP:
<?
$einsatz = 100;
@require('config.php');
?>
<html>
<head>
<title><? echo $seitentitel; ?></title>
<link rel="stylesheet" type="text/css" href="roh2.css">
</head>
<?

$idg=1;
$abfrageg = mysql_query("select * from punkt where id=$idg");
while ($row = mysql_fetch_object($abfrageg)) {
       $jackpotg=$row->jackpot;
       $anzspieleg=$row->anzspiele;
       $gewinneg=$row->gewinne;
     }

// CHECKEN OB DER USER GENUG LOSE ZUM SPIELEN HAT
$result=mysql_query("SELECT * FROM vms_kontodaten WHERE uid='".$_SESSION[uid]."'");
$row=mysql_fetch_array($result);
if ($row[kontostand]+$row[bonuslose] < $einsatz) {
?>
<table align="center" width="600" border="0">
 <tr>
  <td width="100%" valign="top">
  <table width="600" border="0" CELLSPACING="0" CELLPADDING="1">
   <tr>
    <td bgcolor="#FFCC66" width="100%" align="center">
    <table width="100%" border="0" cellpadding="6" cellspacing="0" align="center" bgcolor="#CCCCCC">
     <tr>
     <td><div align="center">
Unwichtiger Code
<br>
<?
$idg=1;
$abfrage = mysql_query("select * from punkt where id=$idg");
while ($rowt = mysql_fetch_object($abfrage)) {
       $jackpot=$rowt->jackpot;
       $anzspiele=$rowt->anzspiele;
       $gewinne=$rowt->gewinne;
}
?>

<p>
<center><b><u>Statistiken</u></b></center><br>
<center><b><font color="red"><? echo $jackpot; ?> Klamm-Lose im Jackpot</font></b>
                                            <p><b><font color="blue">Bisher wurden <? echo $gewinne; ?> Lose gewonnen !</font></b></center>

                                    </div>
</td></tr></table></td></tr></table></td></tr></table>

<?
}
else
{
?>
<table align="center" width="600" border="0">
 <tr>
  <td width="100%" valign="top">
  <table width="600" border="0" CELLSPACING="0" CELLPADDING="1">
   <tr>
    <td bgcolor="#FFCC66" width="100%" align="center">
    <table width="100%" border="0" cellpadding="6" cellspacing="0" align="center" bgcolor="red">
     <tr>
     <td><div align="center">

<b><u><font size="3">FEHLER</font></u></b><br>
</font><font style="color:black;" size="2">Du hast zuwenig Lose auf Deinem Konto!</font><font size="2"><br>

                                    </div>
</td></tr></table></td></tr></table></td></tr></table>
<?
}
?>
</body>
</html>
Wo is das der Fehler ??
 
Wie sehen denn die Werte von $row[kontostand]+$row[bonuslose]*und $einsatz vor der IF-Bedingung aus?

echo $row[kontostand]+$row[bonuslose];
echo $einsatz

...

Vielleicht geht es auch mit $row['kontostand'] und $row['bonuslose'] besser.
 
Wie sehen denn die Werte von $row[kontostand]+$row[bonuslose]*und $einsatz vor der IF-Bedingung aus?

echo $row[kontostand]+$row[bonuslose];
echo $einsatz

...

Vielleicht geht es auch mit $row['kontostand'] und $row['bonuslose'] besser.

Also bei Kontostand und bonuslose wird kontostand + bonuslose ausgegeben bei einsatz 100 ausgegeben der einsatz halt ;)
 
Also bei Kontostand und bonuslose wird kontostand + bonuslose ausgegeben bei einsatz 100 ausgegeben der einsatz halt ;)
Da wir aber den Kontostand und die Bonuslose deines Testcodes nicht kennen, is die Aussage wohl nichtssagend :roll:

Mehr als die Bedingung auseinandernehmen, kannst du nicht tun. Da is der Fehler oder es gibt keinen Fehler.

Ansonsten - wie schon angedeutet - hast du Konstanten mit dem Namen kontostand und bonuslose definiert ?
Ist $row überhaupt gesetzt ? Du überprüfst nichtmal, ob du überhaupt mindestens eine Zeile im Rekordset hast.

Ich werds wohl nie verstehen, warum man unordentlich schreibt und dann hinterher bei jedem Fehler rumheulen muss :wall:
Zu SELECT * sag ich mal nichts :sick:
:xx:
 
Da wir aber den Kontostand und die Bonuslose deines Testcodes nicht kennen, is die Aussage wohl nichtssagend :roll:

Mehr als die Bedingung auseinandernehmen, kannst du nicht tun. Da is der Fehler oder es gibt keinen Fehler.

Ansonsten - wie schon angedeutet - hast du Konstanten mit dem Namen kontostand und bonuslose definiert ?
Ist $row überhaupt gesetzt ? Du überprüfst nichtmal, ob du überhaupt mindestens eine Zeile im Rekordset hast.

Ich werds wohl nie verstehen, warum man unordentlich schreibt und dann hinterher bei jedem Fehler rumheulen muss :wall:
Zu SELECT * sag ich mal nichts :sick:
:xx:
nö sind keine konstanten...

Ja kontostand und bonuslose is halt ne zahl in diesen fall 10000 ;)
Und ich heule doch net rum nur ich hab kein bock das alles nochmal zuschreiben ;)
Und was is bei dir denn ordentlich und unordentlich bitte ??
 
Öhrm, realisier doch mal den Fall, dass der User zuwenig Lose auf dem Konto hat. Dann kann er nämlich spielen. :D

Du hast den Vergleich falsch angestellt. Userlose + Bonuslose muss größer als der Einsatz sein - nicht kleiner.
 
Und was is bei dir denn ordentlich und unordentlich bitte ??
String-Arrayindexes stehen in Single- oder wegen mir auch Double Quotes. Alles andere funktioniert zwar, ist aber nicht richtig !

Annahme, ich habe eine Tabelle mit den Feldern "ID", "BYTES", "IMG_GIF", "BESCHREIBUNG" und rufe einen Datensatz (ID 1, 34343 Bytes, "bild.gif", "Testbild") ab:
PHP:
// bewusst hingerotzter Code
$res=mysql_query("select * from bilder");
$row=mysql_fetch_array($res);

echo "Erstes Bild: <br>";
echo "URL: ".$row[IMG_GIF];
Hast du ernsthaft geglaubt, das gibt dir "bild.gif" aus ? :LOL: :LOL:
Nein ! Du bekommst "34343 Bytes". Unerwartet ? :roll:

Lösung:
Sobald die GDLib installiert ist - und das werden wohl 99,999% aller Hoster haben, wird eine Konstante IMG_GIF auf den Wert 1 gesetzt. mysql_fetch_array() ruft eine Zeile des Recordsets nicht nur als assoziatives Array, sondern auch als numerisch-indiziertes Array ab. Kann man ja mit print_r($row) testen.
Durch die Feldreihenfolge in der Datenbank ist das Feld "BYTES" als 2. Spalte mit dem Array-Index 1 festgelegt, d.h. du bekommst als Ergebnis die "34343 Bytes", nicht aber die gewünschte Bildurl.

:rtfm: :pray:
 
Öhrm, realisier doch mal den Fall, dass der User zuwenig Lose auf dem Konto hat. Dann kann er nämlich spielen. :D

Du hast den Vergleich falsch angestellt. Userlose + Bonuslose muss größer als der Einsatz sein - nicht kleiner.

Jo das war der Fehler
Da sieht man mal was die Schule macht man kann nicht mal mehr klar denken :mrgreen:
 
Öhrm, realisier doch mal den Fall, dass der User zuwenig Lose auf dem Konto hat. Dann kann er nämlich spielen. :D

Du hast den Vergleich falsch angestellt. Userlose + Bonuslose muss größer als der Einsatz sein - nicht kleiner.
den fehler habe ich auch gefunden, ob man dafür jetzt unbedingt 2 threads in 2 foren erstellen muss ist noch fraglich*g*

stumpi

Jo das war der Fehler
Da sieht man mal was die Schule macht man kann nicht mal mehr klar denken :mrgreen:
es wäre anscheinend besser, wenn ihr in der schule die herangehensweise bei einer fehleranalyse lernen würdet*g*

stumpi
 
Zuletzt bearbeitet von einem Moderator:
den fehler habe ich auch gefunden, ob man dafür jetzt unbedingt 2 threads in 2 foren erstellen muss ist noch fraglich*g*

stumpi
Dieser Theard hab ich geöffent weil in den anderen niemand geantwortet hat ;)


es wäre anscheinend besser, wenn ihr in der schule die herangehensweise bei einer fehleranalyse lernen würdet*g*

stumpi

Jo aber nein wir müssen Englisch,Mathe,Deutsch lernen :mrgreen: