Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Komme einfach nicht weiter -Fehler im Script?





Frage

Hi, also ich bin noch ein ziemlicher PHP-Neuling habe aber trotzdem mal veruscht was zu proggen. Erstmal ein Anmelde-und Loginscript, was auch funktioniert hat. Ich will aus dem ganzen eine Art Online-Spiel machen, bei dem man sachen einkaufen und kämpfen kann. Nun habe ich mich an den Shop Skript gemacht. Allerdings komme cih dort einfach nicht weiter... Hier mal die Codes: shop.php: <html> <head> <title>Unbenanntes Dokument</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table width="75%" border="1" bordercolor="#000000"> <tr> <td><font size="2" face="Tahoma"><strong>Artikel</strong></font></td> <td><font size="2" face="Tahoma"><strong>Beschreibung</strong></font></td> <td><font size="2" face="Tahoma"><strong>Preis</strong></font></td> </tr> <tr> <td><font size="2" face="Tahoma">Kleiner Trank</font></td> <td><font size="2" face="Tahoma">Erhöht HP um 100</font></td> <td><font size="2" face="Tahoma">20$</font></td> </tr> <tr> <td><font size="2" face="Tahoma">Mittlerer Trank</font></td> <td><font size="2" face="Tahoma">Erhöht HP um 300</font></td> <td><font size="2" face="Tahoma">50$</font></td> </tr> <tr> <td><font size="2" face="Tahoma">Großer Trank</font></td> <td><font size="2" face="Tahoma">Erhöht HP um 500</font></td> <td><font size="2" face="Tahoma">90$</font></td> </tr> <tr> <td><font size="2" face="Tahoma">Riesen Trank</font></td> <td><font size="2" face="Tahoma">Erhöht HP um 700</font></td> <td><font size="2" face="Tahoma">160$</font></td> </tr> </table> <table width="28%" border="1" bordercolor="#000000"> <form action="index.php?file=shop2" method="post"> <select name="select"> <option>Deine Wahl</option> <option name="klein" value="klein">Kleiner Trank</option> <option name="mittel" value="mittel">Mittlerer Trank</option> <option name="gros" value="gros">Großer Trank</option> <option name="ries" value="ries">Riesen Trank</option> </select> </p> <p> <input type="submit" value="Kaufen"> </form> </tr> </table> </body> </html> Und shop2.php: <? session_start(); include("dbconnect.php"); ?> <html> <head> <title>Unbenanntes Dokument</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <? $geldo = mysql_query("SELECT geld FROM user WHERE name = '$nick'"); while ($geld = mysql_fetch_row($geldo)) { if($HTTP_POST_VARS["select"] == "klein") { if("$geld < 20") { echo "Du hast nicht genug Geld<br>"; } else { $aendern = "UPDATE user SET item='Kleiner Trank' WHERE name = '$nick'"; $update = mysql_query($aendern); $aendern2 = "UPDATE user SET geld=geld-20 WHERE name = '$nick'"; $update2 = mysql_query($aendern2); echo "Du hast erfolgreich eingekauft!"; } } elseif($HTTP_POST_VARS["select"] == "mittel") { if("$geld < 50") { echo "Du hast nicht genug Geld<br>"; } else { $aendern = "UPDATE user SET item='Mittlerer Trank' WHERE name = '$nick'"; $update = mysql_query($aendern); $aendern2 = "UPDATE user SET geld=geld-50 WHERE name = '$nick'"; $update2 = mysql_query($aendern2); echo "Du hast erfolgreich eingekauft!"; } } elseif($HTTP_POST_VARS["select"] == "gros") { if("$geld->geld < 90") { echo "Du hast nicht genug Geld<br>"; } else { $aendern = "UPDATE user SET item='Großer Trank' WHERE name = '$nick'"; $update = mysql_query($aendern); $aendern2 = "UPDATE user SET geld=geld-90 WHERE name = '$nick'"; $update2 = mysql_query($aendern2); echo "Du hast erfolgreich eingekauft!"; } } elseif($HTTP_POST_VARS["select"] == "ries") { if("$geld->geld < 160") { echo "Du hast nicht genug Geld<br>"; } else { $aendern = "UPDATE user SET item='Riesen Trank' WHERE name = '$nick'"; $update = mysql_query($aendern); $aendern2 = "UPDATE user SET geld=geld-160 WHERE name = '$nick'"; $update2 = mysql_query($aendern2); echo "Du hast erfolgreich eingekauft!"; } } } ?> </body> </html> Man kann sich also was aussuchen, wass man kaufen will und dann solte er eigentlich checken, weiveil Geld man hat und überprüfen ob es genug ist. Mein Problem: Er gibt immer aus: "Du hast nicht genug Geld" Auch wenn man 50 oder mehr hat... Woran liegts? Danke, Hundi

Antwort 1 von DerHund

Sorry, hier nochmal übersichtlicher:

Hi,

also ich bin noch ein ziemlicher PHP-Neuling habe aber trotzdem mal veruscht was zu proggen.
Erstmal ein Anmelde-und Loginscript, was auch funktioniert hat.

Ich will aus dem ganzen eine Art Online-Spiel machen, bei dem man sachen einkaufen und kämpfen kann.
Nun habe ich mich an den Shop Skript gemacht.
Allerdings komme cih dort einfach nicht weiter...
Hier mal die Codes:

shop.php:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="75%" border="1" bordercolor="#000000">
<tr>
<td><font size="2" face="Tahoma"><strong>Artikel</strong></font></td>
<td><font size="2" face="Tahoma"><strong>Beschreibung</strong></font></td>
<td><font size="2" face="Tahoma"><strong>Preis</strong></font></td>
</tr>
<tr>
<td><font size="2" face="Tahoma">Kleiner Trank</font></td>
<td><font size="2" face="Tahoma">Erhöht HP um 100</font></td>

<td><font size="2" face="Tahoma">20$</font></td>
</tr>
<tr>
<td><font size="2" face="Tahoma">Mittlerer Trank</font></td>
<td><font size="2" face="Tahoma">Erhöht HP um 300</font></td>
<td><font size="2" face="Tahoma">50$</font></td>

</tr>

<tr>

<td><font size="2" face="Tahoma">Großer Trank</font></td>

<td><font size="2" face="Tahoma">Erhöht HP um 500</font></td>

<td><font size="2" face="Tahoma">90$</font></td>
</tr>
<tr>
<td><font size="2" face="Tahoma">Riesen Trank</font></td>
<td><font size="2" face="Tahoma">Erhöht HP um 700</font></td>

<td><font size="2" face="Tahoma">160$</font></td>
</tr>
</table>
<table width="28%" border="1" bordercolor="#000000">
<form action="index.php?file=shop2" method="post">
<select name="select">
<option>Deine Wahl</option>
<option name="klein" value="klein">Kleiner Trank</option>
<option name="mittel" value="mittel">Mittlerer Trank</option>
<option name="gros" value="gros">Großer Trank</option>
<option name="ries" value="ries">Riesen Trank</option>
</select>
</p>
<p>
<input type="submit" value="Kaufen">
</form>
</tr>
</table>
</body>
</html>


Und shop2.php:
<?
session_start();
include("dbconnect.php");
?>
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
$geldo = mysql_query("SELECT geld FROM user WHERE name = '$nick'");
while ($geld = mysql_fetch_row($geldo)) {

if($HTTP_POST_VARS["select"] == "klein")
{
if("$geld < 20")
{
echo "Du hast nicht genug Geld<br>";
}
else
{
$aendern = "UPDATE user SET item='Kleiner Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-20 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
}
}
elseif($HTTP_POST_VARS["select"] == "mittel")
{
if("$geld < 50")
{
echo "Du hast nicht genug Geld<br>";
}
else
{
$aendern = "UPDATE user SET item='Mittlerer Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-50 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
}
}

elseif($HTTP_POST_VARS["select"] == "gros")
{
if("$geld->geld < 90")
{
echo "Du hast nicht genug Geld<br>";
}
else
{
$aendern = "UPDATE user SET item='Großer Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-90 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
}
}

elseif($HTTP_POST_VARS["select"] == "ries")
{
if("$geld->geld < 160")
{
echo "Du hast nicht genug Geld<br>";
}
else
{
$aendern = "UPDATE user SET item='Riesen Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-160 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
}
}
}
?>
</body>
</html>


Man kann sich also was aussuchen, wass man kaufen will und dann solte er eigentlich checken, weiveil Geld man hat und überprüfen ob es genug ist.
Mein Problem:
Er gibt immer aus:
"Du hast nicht genug Geld"
Auch wenn man 50 oder mehr hat...

Woran liegts?

Danke,
Hundi

Antwort 2 von Nessus

Hi,

if($geld <= "50")

sollte gehen.

Nessus


Antwort 3 von DerHund

Hi,

erstmal danke für die ANtwort..:-)
Jetzt habe ich aber das Problem, dass er immer kauft..also auch wenn man nicht genug geld hat und dann einfach in den Minus-Bereich geht...
Ich habe jetzt z.b. -110 Geld...

MFG,
Hundi

Antwort 4 von Nessus

Das mußt Du natürlich mit einer Kontrollstruktur verhindern.

Nessus

Antwort 5 von DerHund

Öhh...ich dachte das habe ich durch das

if("$geld < 50")
{
echo "Du hast nicht genug Geld<br>";
}

gemacht...

Was muss ich denn da sonst machen??

Antwort 6 von Nessus

Zitat:

if("$geld < 50")

Hats Du es genau so geschrieben?
Wenn ja, gehört Dir eins auf die Ohren....
Wenigstens abschreiben sollte man können.

Nessus

Antwort 7 von semi

@Nessus
:-)

Antwort 8 von DerHund

Ups...ne ich habs so geschrieben:

if($geld <= "20")
{
echo "Du hast nicht genug Geld<br>";
}

Antwort 9 von Manosfighter

Du musst das natürlich bei der 20 auf verändern:
{
if("$geld < 20")
{
wird zu:
{
if($geld < "20")
{


Antwort 10 von DerHund

Mhh..habe ich eigentlich gemacht..
Mom, ich poste nochmal den momentanen Code von shop2.php:


<?
session_start();
include("dbconnect.php");
?> 
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
$geldo = mysql_query("SELECT geld FROM user WHERE name = '$nick'");
while ($geld = mysql_fetch_row($geldo)) {

if($HTTP_POST_VARS["select"] == "klein")
{
if($geld < "20")
{
 echo "Du hast nicht genug Geld<br>";
 }
 else
 {
$aendern = "UPDATE user SET item='Kleiner Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-20 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
    }
}
if($HTTP_POST_VARS["select"] == "mittel")
{
if($geld < "50")
{
 echo "Du hast nicht genug Geld<br>";
}
else
{
$aendern = "UPDATE user SET item='Mittlerer Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-50 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
    }
}

if($HTTP_POST_VARS["select"] == "gros")
{
if($geld < "90")
{
echo "Du hast nicht genug Geld<br>";
 }
else
{
$aendern = "UPDATE user SET item='Großer Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-90 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
    }
}

if($HTTP_POST_VARS["select"] == "ries")
{
if($geld < "160")
{
echo "Du hast nicht genug Geld<br>";
 }
 else
{
$aendern = "UPDATE user SET item='Riesen Trank' WHERE name = '$nick'";
$update = mysql_query($aendern);
$aendern2 = "UPDATE user SET geld=geld-160 WHERE name = '$nick'";
$update2 = mysql_query($aendern2);
echo "Du hast erfolgreich eingekauft!";
    }
}
}
?>
</body>
</html>


shop.php ist ja noch wie oben gepostet.
Hat noch jemand ne Idee, was falsch sein könnte..?

Achja, ich ahbe dieses <= zu einem < gemacht weil <= heißt doch "ist kleiner/gleich" oder?
Und wenn es gleich ist, is es ja ok, es darf nur nicht kleiner sein..

Danke,
Hundi

Antwort 11 von Pegel

hey!
bin auch neuling, aber ich glaub...
wie sieht das aus, weil du die 20 in anführungszeichen geschrieben hast!
also versuchs doch mal ohne anführungszeichen. ich glaub so denkt php das ist ein string, anderst wirds als zahl erkannt, und das willst du ja!
andere idee:
nur zum testen:
$kosten_klein = 20;
echo"geld: $geld; kosten_klein: $kosten_klein";
if($geld < $kosten_klein) {
.....

Antwort 12 von Pegel

noch was: bist du sicher, dass er immer für 20 kauft, bzw da schon verweigert???
mach doch in die fehlermeldung noch ein indiz dafür, dass er wirklich dorthin kommt...

Antwort 13 von Pegel

sorry, hab noml was :-)
das ist dein quelltext?
<option name="klein" value="klein">Kleiner Trank</option>
<option name="mittel" value="mittel">Mittlerer Trank</option>
<option name="gros" value="gros">Großer Trank</option>
<option name="ries" value="ries">Riesen Trank</option>
also soweit ich weis, muss der name immer gleich sein, sonst kannst ja alle 4 auswählen.
aber ob das mit deinem prob zu tun hat???

Antwort 14 von JimPanse5

Hi!

Sorry hat nix mit dem Thema zu tun, aber wenn man noch mehr Items kaufen kann, dann würde ich


<option name="klein" value="klein">Kleiner Trank</option>
<option name="mittel" value="mittel">Mittlerer Trank</option>
<option name="gros" value="gros">Großer Trank</option>
<option name="ries" value="ries">Riesen Trank</option>


aus einer Datenbank auslesen lassen.

Ciao Jim

Antwort 15 von DerHund

Habs jetzt selber hinbekommen.
TRotzdem danke@all^^

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: