JeuWeb - Crée ton jeu par navigateur
[Résolu] Système d'achats multiples - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Système d'achats multiples (/showthread.php?tid=2737)



[Résolu] Système d'achats multiples - fenix - 11-07-2008

Bonjour a tous,
voila pour mon jeu j'ai un marchand d'update mais comme beaucoup se plaignait de devoir acheter un par une ces objets j'ai voulu changer le système avec un formulaire. mais celui ci ne marche pas :/
il ne prend en compte que le premier des objets.
quel que soit le choix

Code PHP :
<?php 
function buyupdate() { // liste des updates a acheter

global $userrow,$numqueries;

$townquery = doquery("SELECT name,itemslistm FROM {{table}} WHERE latitude='".$userrow["latitude"]."' AND longitude='".$userrow["longitude"]."' LIMIT 1", "towns");
$townrow = mysql_fetch_array($townquery);

$marchelist = explode(",",$townrow["itemslistm"]);
$querystring = "";
foreach(
$marchelist as $a=>$b) {
$querystring .= "id='$b' OR ";
}
$querystring = rtrim($querystring, " OR ");

$marchequery = doquery("SELECT * FROM {{table}} WHERE $querystring ORDER BY id", "marche");
$page = "<center><img src=\"././images/kaede1.gif\"/></center> <br />";

while (
$marcherow = mysql_fetch_array($marchequery)) {


$page.="<br><form method=\"post\" action=\"index.php?do=buyupdate2:".$marcherow["id"]."\">
<b>"
.$marcherow["name"]."</b>
Prix: <b>"
.$marcherow["prix"]." gils</b>
Qantité<select name=\"nbs\"><option value=\"1\">1</option><option value=\"5\">5</option>
<option value=\"10\">10</option><option value=\"20\">20</option><option value=\"40\">40</option>
<option value=\"50\">50</option><option value=\"60\">60</option>
<option value=\"70\">70</option><option value=\"80\">80</option></select>
<input type=\"submit\" name=\"submit\" value=\"Acheter\"/>
<br><b>Description:&nbsp; </b>"
.$marcherow["description"]."
"
;


}
$page .= "<br><br>Si vous avez changé d'avis, vous pouvez également <a href=\"index.php\">retourner à la ville</a>.\n";
$title = "Acheter des objets";
display($page, $title);

}

function
buyupdate2($id) { // Confirm user's intent to purchase item.

global $userrow, $numqueries;

$marchequery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "marche");
$marcherow = mysql_fetch_array($marchequery);

if (isset(
$_POST["submit"])) {
extract($_POST);
$errors = 0;
$errorlist = "";
$prix = ($marcherow["prix"]*$nbs);
if (
$prix>>$userrow['gold']){$errors++; $errorlist .= "Vous ne disposer pas d'assez d'argent.<br />";}
if (
$errors == 0) {

if (
$marcherow["type"] == "exp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix, vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:$id:$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";

} elseif (
$marcherow["type"] == "mp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix , vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:$id:$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";

} elseif (
$marcherow["type"] == "hp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix, vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:$id:$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";

} elseif (
$marcherow["type"] == "tp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix, vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:$id:$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";
}
}
}

$title = "Acheter objets";
display($page, $title);

}



RE: probleme avec des formulaires - Kassak - 11-07-2008

Je ne vois pas ou tu fermes le formulaire? (</form>)

Et déclare ton formulaire avant la boucle, et ferme le après, car au lieu de générer un formulaire pour chaque objet, il n'y en aura qu'un, et tu ne génèreras que des boutons Wink


RE: probleme avec des formulaires - fenix - 11-07-2008

oups je vous est mis l'ancien ^^; sur le site le formulaire est fermer.
et je vais essaier comme tu me dit ^^


RE: probleme avec des formulaires - fenix - 11-07-2008

je vient de faire un essaie et dans le cas ou je met le
$page.="<form method=\"post\" action=\"index.php?do=buyupdate2:".$marcherow["id"]."\">";
hors de la boucle apres le code sait plus quoi mettre dans $marcherow["id"]


RE: probleme avec des formulaires - Kassak - 11-07-2008

Tu envoies cette donnée via un champ caché (hidden) dans la boucle Wink


RE: probleme avec des formulaires - fenix - 11-07-2008

Merci pour tes conseil.
par contre je me suis finalement decider pour ce systeme qui ne laisse qu'un unique formulaire et les plus simple d'utilisation (je trouve)
Encore merci

Code PHP :
<?php 
function buyupdate() { // liste des updates a acheter

global $userrow,$numqueries;

$townquery = doquery("SELECT name,itemslistm FROM {{table}} WHERE latitude='".$userrow["latitude"]."' AND longitude='".$userrow["longitude"]."' LIMIT 1", "towns");
$townrow = mysql_fetch_array($townquery);

$marchelist = explode(",",$townrow["itemslistm"]);
$querystring = "";
foreach(
$marchelist as $a=>$b) {
$querystring .= "id='$b' OR ";
}
$querystring = rtrim($querystring, " OR ");

$marchequery = doquery("SELECT * FROM {{table}} WHERE $querystring ORDER BY id", "marche");
$page = "<center><img src=\"././images/kaede1.gif\"/></center> <br />";
$page.="<center>Presentation des objet en vente ici :</center><br>";
while (
$marcherow = mysql_fetch_array($marchequery)) {
$selection.= "<option value=\"".$marcherow["id"]."\">".$marcherow["name"]."</option>";

$page.="<br><b>Nom </b>: ".$marcherow["name"]."<b> Prix unitaire</b> : ".$marcherow["prix"]."<br>
<b>Description</b> : "
.$marcherow["description"]."<br><br>";
}
$page.="<br><form method=\"post\" action=\"index.php?do=buyupdate2\">";
$page.="objet à acheter : <select name=\"nom\">$selection</select>
Qantité<select name=\"nbs\"><option value=\"1\">1</option><option value=\"5\">5</option>
<option value=\"10\">10</option><option value=\"20\">20</option><option value=\"40\">40</option>
<option value=\"50\">50</option><option value=\"60\">60</option>
<option value=\"70\">70</option><option value=\"80\">80</option></select>
<input type=\"submit\" name=\"submit\" value=\"Acheter\"/>
<br>"
;
$page.="</form>
"
;
$page .= "<br><br>Si vous avez changé d'avis, vous pouvez également <a href=\"index.php\">retourner à la ville</a>.\n";
$title = "Acheter des objets";
display($page, $title);

}

function
buyupdate2() { // Confirm user's intent to purchase item.

global $userrow, $numqueries;



if (isset(
$_POST["submit"])) {
extract($_POST);
$errors = 0;
$errorlist = "";
$marchequery = doquery("SELECT * FROM {{table}} WHERE id='$nom' LIMIT 1", "marche");
$marcherow = mysql_fetch_array($marchequery);
$prix = ($marcherow["prix"]*$nbs);
if (
$prix>>$userrow['gold']){$errors++; $errorlist .= "Vous ne disposer pas d'assez d'argent.<br />";}
if (
$errors == 0) {

if (
$marcherow["type"] == "exp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix, vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:".$marcherow["id"].":$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";

} elseif (
$marcherow["type"] == "mp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix , vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:".$marcherow["id"].":$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";

} elseif (
$marcherow["type"] == "hp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix, vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:".$marcherow["id"].":$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";

} elseif (
$marcherow["type"] == "tp") {

$page = "<img src=\"././images/kaede3.gif\"/><br>Vous allez acheter ".$marcherow["name"]." pour $prix, vous êtes d'accord?<br /><br /><form action=\"index.php?do=buyupdate3:".$marcherow["id"].":$nbs\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Oui\" /> <input type=\"submit\" name=\"cancel\" value=\"Non\" /></form>";
}
}
}

$title = "Acheter objets";
display($page, $title);

}

function
buyupdate3($id,$nbs) { // Update user profile with new item & stats.

if (isset($_POST["cancel"])) { header("Location: index.php"); die(); }

global
$userrow;

$marchequery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "marche");
$marcherow = mysql_fetch_array($marchequery);
$prix = ($marcherow["prix"]*$nbs);
if (
$userrow["gold"] < $prix) { display("<img src=\"././images/kaede2.gif\"/><br /><br />Vous pouvez <a href=\"index.php\">retourner à la ville</a>, <a href=\"index.php?do=buyupdate\">au magasin</a>, ou utiliser les boutons directionnel de gauche pour continuer à explorer le monde.", "Acheter objets"); die(); }

if (
$marcherow["type"] == "exp") { //experience++

// New stats.
$newgold = $userrow["gold"] - $marcherow["prix"]*$nbs;
$newexp = $userrow["experience"] + $marcherow["attribute"]*$nbs;


// Final update.
$updatequery = doquery("UPDATE {{table}} SET gold='$newgold', experience='$newexp' WHERE id='".$userrow["id"]."'", "users");


} elseif (
$marcherow["type"] == "mp") { // Armor

// New stats.
$newgold = $userrow["gold"] - $marcherow["prix"]*$nbs;
$newmp = $userrow["maxmp"] + $marcherow["attribute"]*$nbs;


// Final update.
$updatequery = doquery("UPDATE {{table}} SET gold='$newgold', maxmp='$newmp' WHERE id='".$userrow["id"]."'", "users");

} elseif (
$marcherow["type"] == "hp") { // Shield

// New stats.
$newgold = $userrow["gold"] - $marcherow["prix"]*$nbs;
$newhp = $userrow["maxhp"] + $marcherow["attribute"]*$nbs;


// Final update.
$updatequery = doquery("UPDATE {{table}} SET gold='$newgold', maxhp='$newhp' WHERE id='".$userrow["id"]."'", "users");

} elseif (
$marcherow["type"] == "tp") { // Armor

// New stats.
$newgold = $userrow["gold"] - $marcherow["prix"]*$nbs;
$newtp = $userrow["maxtp"] + $marcherow["attribute"]*$nbs;


// Final update.
$updatequery = doquery("UPDATE {{table}} SET gold='$newgold', maxtp='$newtp' WHERE id='".$userrow["id"]."'", "users");


}

display("<img src=\"././images/kaede4.gif\"/><br /><br />Vous pouvez maintenant <a href=\"index.php\">retourner à la ville</a>, <a href=\"index.php?do=buyupdate\">au magasin</a>, ou utiliser les boutons directionnel de gauche pour continuer à explorer le monde.", "Acheter objets");

}