Hi,
ich habe da eine kleine Herausforderung, welche an meine Frustgrenze treibt, und so dachte mir, dass mir hierbei online vielleicht geholfen werden kann....
Unter Umständen bin ich ja einfach nur betriebsblind und sehe den möglicherweise offensichtlichen Fehler einfach nicht.
da ich ich zum ersten mal in einem Form um Hilfe bitte versuche ich das ganze übersichtlich darzustellen, wenn mir dies nicht gelingt.... nun ich bitte wohl vorher schon mal um Vergebung.... =)
natürlich bin für Kritik und Anregungen hierzu offen, hilft mir vielleicht später mal bei neuen Herausforderungen.
aber nun zum eigentlichen....
die Situation:
Ein Kollege und ich, haben uns daran gemacht ein kleinen Browsergame zusammenzustellen und haben uns von daher fleißig ans programmieren gemacht
Das Problem:
nun....es will nicht wie es soll.... klar sonst würde ich ja hier keinen Beitrag erstellen =)
das Problem ergibt sich im Ingameshop
es gibt eine Datenbank mit den Items im Shop (bisher nur Behilfsobjekte, damit eben die Funktiionalität der Seite selbst geprüft werden kann,.... )
das ganze soll am ende in einer Tabelle dargestellt werden,(das klappt soweit auch ganz gut) und der Spieler soll auswählen können welches Item Er/Sie wie oft kaufen möchte:
dazu wird mit den daten der mySQL-datenbank einfach eine Tabelle generiert und befüllt:
soweit alles kein Problem.....
der Spieler bekommt die Items aufgelistet, kann hinter jedem Item angeben wie viele er möchte ect.
der aktuelle Gesamtpreis aller ausgewählten Objekt inkl. der Beachtung deren Anzahl wird mittels js problemlos angezeigt.... auch hier kein Problem.
jetzt soll aber natürlich der Gesamtpreis der waren von der virtuellen Geldbörse des Spieler abgezogen werden.
und hier kommen wir auch schon zum Problem:
das <input>-Feld in der die anzahl der gewünschten Items soll diese mittels POST weitergeben für eine spätere Bearbeitung im Script:
die Auswertung erfolgt wiederum in einer schleife, die dann alles zusammenrechnet:
Hierbei soll $preis am ende den Gesamtwert der zu erwerbenden waren beinhalten.
aber anscheinen will er meine variable nicht übertragen, hierbei kommt im folgenden immer folgender Fehler angezeigt: (unter Umständen erst nach dem klicken des kaufen-Buttons)
klar... mehrfach durch die schleife halt....
die eigentlich zu übergebende variablen aus der oberen generierten Tabelle: $anzahl_x werden als undefined index ausgegeben.....
natürlich haben wir versucht den Fehler einzugrenzen.... die Funktion selbst funktioniert einwandfrei:
mit folgender Änderung der unteren schleife(zu Testzwecken ausprobiert)
... läuft das ganze genau so ab wie man es erwarten würde, keine Fehlermeldungen..... nichts....es arbeitet genau wie wir uns das vorgestellt haben
(nur mit dem Schönheitsfehler halt, dass die angaben des users- was die anzahl der gewünschten items angeht- ignoriert werden und von jedem Item einfach 1 gekauft wird,,,)
...hufff....
ist doch mehr text geworden als gedacht....
hoffe das mir weitergeholfen werden kann.
PS.:
im Anschluss mal besser noch das gesamte script der seite: (der relevane teil)
ich habe da eine kleine Herausforderung, welche an meine Frustgrenze treibt, und so dachte mir, dass mir hierbei online vielleicht geholfen werden kann....
Unter Umständen bin ich ja einfach nur betriebsblind und sehe den möglicherweise offensichtlichen Fehler einfach nicht.
da ich ich zum ersten mal in einem Form um Hilfe bitte versuche ich das ganze übersichtlich darzustellen, wenn mir dies nicht gelingt.... nun ich bitte wohl vorher schon mal um Vergebung.... =)
natürlich bin für Kritik und Anregungen hierzu offen, hilft mir vielleicht später mal bei neuen Herausforderungen.
aber nun zum eigentlichen....
die Situation:
Ein Kollege und ich, haben uns daran gemacht ein kleinen Browsergame zusammenzustellen und haben uns von daher fleißig ans programmieren gemacht
Das Problem:
nun....es will nicht wie es soll.... klar sonst würde ich ja hier keinen Beitrag erstellen =)
das Problem ergibt sich im Ingameshop
es gibt eine Datenbank mit den Items im Shop (bisher nur Behilfsobjekte, damit eben die Funktiionalität der Seite selbst geprüft werden kann,.... )
das ganze soll am ende in einer Tabelle dargestellt werden,(das klappt soweit auch ganz gut) und der Spieler soll auswählen können welches Item Er/Sie wie oft kaufen möchte:
dazu wird mit den daten der mySQL-datenbank einfach eine Tabelle generiert und befüllt:
PHP-Code:
<?php
echo "<p align='right'>Gold:".$user['gold']."</p>";
?>
<table type='table'>
<tr>
<th>#</th>
<th>Objekt</th>
<th>Beschreibung</th>
<th>Preis</th>
<th></th>
<th>Anzahl</th>
</tr>
<tr><td><br></td></tr>
<?php
$statement = $pdo->prepare("SELECT * FROM shop_item_list ORDER BY id");
$result = $statement->execute();
$count = 1;
while($row = $statement->fetch()) {
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['item_name']."</td>";
echo "<td>".$row['item_info']."</td>";
echo "<td id='preis_".$count."' align='right'>".$row['item_preis']."</td>";
echo "<td>Gold</td>";
echo "<td><form><input id='anzahl_".$count."' type='number' value='0' min='0' max='99' method='post' action='Ausrüstungsladen.php' name='anzahl_".$count."'></input></form></td>";
$count++;
echo "</tr>";
}
?>
<tr>
<td></td>
<td></td>
<td>Preis Gesamt:</td>
<td id='kaufpreis'></td>
<td>
<td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
......
</table>
der Spieler bekommt die Items aufgelistet, kann hinter jedem Item angeben wie viele er möchte ect.
der aktuelle Gesamtpreis aller ausgewählten Objekt inkl. der Beachtung deren Anzahl wird mittels js problemlos angezeigt.... auch hier kein Problem.
jetzt soll aber natürlich der Gesamtpreis der waren von der virtuellen Geldbörse des Spieler abgezogen werden.
und hier kommen wir auch schon zum Problem:
das <input>-Feld in der die anzahl der gewünschten Items soll diese mittels POST weitergeben für eine spätere Bearbeitung im Script:
PHP-Code:
....
echo "<td><form><input id='anzahl_".$count."' type='number' value='0' min='0' max='99' method='post' action='Ausrüstungsladen.php' name='anzahl_".$count."'></input></form></td>";
.....
PHP-Code:
.....
while($row = $statement->fetch()) {
$anzahlx=$_POST['anzahl_'.$count];
$preisx=$row['item_preis'];
$preis=($preis+($anzahlx*$preisx));
$count++;
}
.....
aber anscheinen will er meine variable nicht übertragen, hierbei kommt im folgenden immer folgender Fehler angezeigt: (unter Umständen erst nach dem klicken des kaufen-Buttons)
Code:
Notice: Undefined index: anzahl_1 in C:\xampp\htdocs\Ausrüstungsladen.php on line 89 Notice: Undefined index: anzahl_2 in C:\xampp\htdocs\Ausrüstungsladen.php on line 89 Notice: Undefined index: anzahl_3 in C:\xampp\htdocs\Ausrüstungsladen.php on line 89 Notice: Undefined index: anzahl_4 in C:\xampp\htdocs\Ausrüstungsladen.php on line 89 Notice: Undefined index: anzahl_5 in C:\xampp\htdocs\Ausrüstungsladen.php on line 89 Notice: Undefined index: anzahl_6 in C:\xampp\htdocs\Ausrüstungsladen.php on line 89
die eigentlich zu übergebende variablen aus der oberen generierten Tabelle: $anzahl_x werden als undefined index ausgegeben.....
natürlich haben wir versucht den Fehler einzugrenzen.... die Funktion selbst funktioniert einwandfrei:
mit folgender Änderung der unteren schleife(zu Testzwecken ausprobiert)
PHP-Code:
.....
while($row = $statement->fetch()) {
$anzahlx=1;
// $anzahlx=$_POST['anzahl_'.$count]; ---------------- (auskommentiert für den test)
$preisx=$row['item_preis'];
$preis=($preis+($anzahlx*$preisx));
$count++;
}
.....
(nur mit dem Schönheitsfehler halt, dass die angaben des users- was die anzahl der gewünschten items angeht- ignoriert werden und von jedem Item einfach 1 gekauft wird,,,)
...hufff....
ist doch mehr text geworden als gedacht....
hoffe das mir weitergeholfen werden kann.
PS.:
im Anschluss mal besser noch das gesamte script der seite: (der relevane teil)
PHP-Code:
<div class="panel panel-default" id='div'>
<?php
echo "<p align='right'>Gold:".$user['gold']."</p>";
?>
<table type='table'>
<tr>
<th>#</th>
<th>Objekt</th>
<th>Beschreibung</th>
<th>Preis</th>
<th></th>
<th>Anzahl</th>
</tr>
<tr><td><br></td></tr>
<?php
$statement = $pdo->prepare("SELECT * FROM shop_item_list ORDER BY id");
$result = $statement->execute();
$count = 1;
while($row = $statement->fetch()) {
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['item_name']."</td>";
echo "<td>".$row['item_info']."</td>";
echo "<td id='preis_".$count."' align='right'>".$row['item_preis']."</td>";
echo "<td>Gold</td>";
echo "<td><form><input id='anzahl_".$count."' type='number' value='0' min='0' max='99' method='post' action='Ausrüstungsladen.php' name='anzahl_".$count."'></input></form></td>";
$count++;
echo "</tr>";
}
?>
<tr>
<td></td>
<td></td>
<td>Preis Gesamt:</td>
<td id='kaufpreis'></td>
<td>
<td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
<?php
//prüfe ob Geld reicht, wenn ja kaufe ware,
?>
<form method='POST' action='Ausrüstungsladen.php'>
<input type='submit' name='abschicken' value='Kaufen'>
</form>
<?php
$statement = $pdo->prepare("SELECT * FROM shop_item_list ORDER BY id");
$result = $statement->execute();
$preis=0;
$count=1;
if(isset($_POST['abschicken'])) {
while($row = $statement->fetch()) {
//$anzahlx=1;
$anzahlx=$_POST['anzahl_'.$count];
$preisx=$row['item_preis'];
$preis=($preis+($anzahlx*$preisx));
$count++;
}
if($preis>$user['gold']){
echo "Du hast nicht genug Gold";
echo"<a href='Ausrüstungsladen.php'>Zurück zum Shop</a>";
}
else {
$statement = $pdo->prepare("UPDATE users SET gold=gold-'$preis'");
$result = $statement->execute();
echo "Vielen Dank für Ihre Einkauf. Beehren Sie uns bald wieder!";
}
}
?>
</td>
</tr>
</table>
<script type='text/javascript'>
<?php
$countmax=$count;
?>
document.getElementById('div').onclick=function(){
<?php
$count=1;
while($count<$countmax){
echo "var vpreis_".$count."= document.getElementById('preis_".$count."').innerHTML;";
echo "vpreis_".$count."=(parseInt(vpreis_".$count."));";
echo "console.log(vpreis_".$count.");";
echo "var vanzahl_".$count."=document.getElementById('anzahl_".$count."').value;";
echo "console.log(vanzahl_".$count.");";
echo "vanzahl_".$count."=(parseInt(vanzahl_".$count."));";
echo "console.log(vanzahl_".$count.");";
echo "var kosten_".$count."= vpreis_".$count."*vanzahl_".$count.";";
$count++;
}
echo "var gesamtpreis=0;";
$count=1;
while($count<$countmax){
echo "gesamtpreis=gesamtpreis+kosten_".$count.";";
$count++;
}
echo"document.getElementById('kaufpreis').innerHTML=gesamtpreis + ' Gold';"
?>
}
</script>
</div>
Kommentar