Bonjour,
Voila, je suis sur la creation d'un jeu et la je refais les technologies.
J'ai deux page, une avec du HTML et une deuxieme qui est l'achat.
Sur la première je fais une JOINTURE de 2 tables.
Ensuite je fais un while et je met mes infos dedans (prix, niveau, temps).
J'ai un formulaire avec des boutons hidden dedans pour signifier les $_POST
Si je fais des var_dump ou meme si j'affiche l'id il me met bien le bon ID par rapport à la technologie demandé.
Ensuite quand je valide, il veut m'update le dernier ID. Meme si je recupère le $_POST['id_cache'] il prend pas en compte.
Voici les codes:
<?php
require_once '../design/header.php';
require_once '../controleur/function.php';
$q=$bdd->prepare('SELECT tec.id, tec.nom, tec.image, tec.description, tj.prix_gold, tj.prix_titane, tj.prix_cristal, tj.prix_orinia, tj.prix_orinium, tj.prix_organique,tj.nombre_chercheur,tj.temps,tj.niveau,tj.id_technologie,tj.id_membre FROM technologie AS tec LEFT JOIN technologie_joueur AS tj ON tec.id=tj.id_technologie WHERE tj.id_membre = ? ORDER BY tec.id ASC');
$q->execute(array($idmembre));
while($r=$q->fetch()) {
$ct=$bdd->prepare('SELECT * FROM technologie_joueur WHERE id_membre= ? AND id_technologie = ?');
$ct->execute(array($id_membre,$r['id']));
$c_t=$ct->fetch();
var_dump($r['id']);
$temps = htmlentities($r['temps']);
?>
<!-- Partie à mettre dans le while -->
<div class="global">
<div class="inner_tech">
<div class="left">
<img src="<?php echo htmlentities($r['image']); ?>" alt="" />
<div class="d"><?php echo convertTime($temps); ?></div>
<?php
if(!empty($evolution_temps['technologie']))
{
if ($evolution_temps['temps'] > time())
{
$restant = ($evolution_temps['temps']-time());
echo "<script>compteARebours(".$restant.",'".$evolution_temps['nom']."','technologie.php');</script>";
echo '<div id="rebours_'.htmlentities($evolution_temps['nom']).'"><i>Chargement du compte à rebours...</i></div>';
}
else
{
echo '<i>Construction terminée</i><br /><br />';
/*
$suppr=$bdd->prepare('DELETE FROM construction_techno WHERE joueur = ?');
$suppr->execute(array($idmembre));
*/
header('Refresh:0');
}
}
else
{
echo ' ';
}
?>
</div>
<div class="right">
<div class="ri1">
<div class="r1"><?php echo htmlentities($r['nom']); ?></div>
<div class="r2">Niveau actuel : <?php echo htmlentities($r['niveau']); ?> id : <?php echo htmlentities($r['id']); ?></div>
</div>
<div class="ri2">
<div class="rc1">
<ul>
<li>Titane :</li>
<li>Or :</li>
<li>Cristal :</li>
<li>Orinia :</li>
<li>Orinium :</li>
<li>Organique :</li>
<li>Chercheurs :</li>
</ul>
</div>
<div class="rc2">
<ul>
<li><?php echo htmlentities($r['prix_gold']); ?></li>
<li><?php echo htmlentities($r['prix_titane']); ?></li>
<li><?php echo htmlentities($r['prix_cristal']); ?></li>
<li><?php echo htmlentities($r['prix_orinia']); ?></li>
<li><?php echo htmlentities($r['prix_orinium']); ?></li>
<li><?php echo htmlentities($r['prix_organique']); ?></li>
<li><?php echo htmlentities($r['nombre_chercheur']); ?></li>
</ul>
</div>
</div>
<div class="ri3">
<form name="niveau_sup" action="../modele/achat_technologie.php" method="post">
<input type="hidden" name="id_cache" value="<?php echo htmlentities($r['id']) ?>">
<input type="hidden" name="nom" value="<?php echo htmlentities($r['nom']) ?>">
<input type="hidden" name="nombre_chercheur" value="<?php echo htmlentities($r['nombre_chercheur']) ?>">
<input type="hidden" name="niveau" value="<?php echo htmlentities($r['niveau']) ?>">
<input type="hidden" name="prix_gold" value="<?php echo htmlentities($r['prix_gold']) ?>">
<input type="hidden" name="prix_titane" value="<?php echo htmlentities($r['prix_titane']) ?>">
<input type="hidden" name="prix_cristal" value="<?php echo htmlentities($r['prix_cristal']) ?>">
<input type="hidden" name="prix_orinia" value="<?php echo htmlentities($r['prix_orinia']) ?>">
<input type="hidden" name="prix_orinium" value="<?php echo htmlentities($r['prix_orinium']) ?>">
<input type="hidden" name="prix_organique" value="<?php echo htmlentities($r['prix_organique']) ?>">
<input type="hidden" name="temps" value="<?php echo htmlentities($r['temps']) ?>">
<?php
if($c['construction'] <= 1)
{
?>
<input type="submit" class="upgrade" value="">
<?php
}
else
{
echo " Technologie en cours de développement.";
}
?>
<form>
</div>
<div class="desc">
<?php echo htmlentities($r['description']); ?>
</div>
</div>
</div>
</div>
<!-- Fin du while -->
<?php } ?>
<?php require_once '../design/footer.php'; ?>
Et la page de traitement:
<?php
if($_POST)
{
require_once 'connexion_bdd.php';
if(!empty($_POST['id_cache']) || !empty($_POST['nom']) || !empty($_POST['nombre_chercheur']) || !empty($_POST['niveau']) || !empty($_POST['prix_gold']) || !empty($_POST['prix_titane']) || !empty($_POST['prix_cristal']) || !empty($_POST['prix_orinia']) || !empty($_POST['prix_orinium']) || !empty($_POST['prix_organique']) || !empty($_POST['temps']))
{
$id_planete_utilise=htmlentities($_SESSION['planete_utilise']);
$idmembre=$_SESSION['id'];
$req_ress=$bdd->prepare("SELECT * FROM ressource WHERE id_planete = ? "); /*récupère la liste des ressources du joueur */
$req_ress->execute(array($id_planete_utilise));
$ressource=$req_ress->fetch();
$pop=$bdd->prepare('SELECT * FROM population WHERE id_planete = ? '); /*Permet d'afficher infos des troupes distribué */
$pop->execute(array($id_planete_utilise));
$population=$pop->fetch();
// REDEFINIR VARIABLE //
$id_technologie=strip_tags($_POST['id_cache']);
$niveau_technologie=strip_tags($_POST['niveau']);
$temps=strip_tags($_POST['temps']);
$delai=(time()+$temps);
$prix_gold=strip_tags($_POST['prix_gold']);
$prix_titane=strip_tags($_POST['prix_titane']);
$prix_cristal=strip_tags($_POST['prix_cristal']);
$prix_orinia=strip_tags($_POST['prix_orinia']);
$prix_orinium=strip_tags($_POST['prix_orinium']);
$prix_organique=strip_tags($_POST['prix_organique']);
$nombre_chercheur=strip_tags($_POST['nombre_chercheur']);
$goldstock=htmlentities($ressource['gold']);
$titanestock=htmlentities($ressource['titane']);
$cristalstock=htmlentities($ressource['cristal']);
$oriniastock=htmlentities($ressource['orinia']);
$oriniumstock=htmlentities($ressource['orinium']);
$organiquestock=htmlentities($ressource['organique']);
$chercheur_preforme=htmlentities($population['chercheur']);
if ($chercheur_preforme >= $nombre_chercheur) // Permet de vérifier qu'il possède assez de chercheur. Sinon erreur.
{
if (($goldstock >= $prix_gold) AND ($titanestock >= $prix_titane) AND ($cristalstock >= $prix_cristal) AND
($oriniastock >= $prix_orinia) AND ($oriniumstock >= $prix_orinium) AND ($organiquestock >= $prix_organique))
{
$stock_chercheur_preforme=$chercheur_preforme-$nombre_chercheur; // CALCUL NOUVEAU CHERCHEURS
$req_deduction_chercheur_preforme=$bdd->prepare("UPDATE population SET chercheur = ? WHERE id_planete = ?");
$req_deduction_chercheur_preforme->execute(array($stock_chercheur_preforme,$id_planete_utilise));
// DEFINIR LES RESSOURCES
$prix_achat_gold = $goldstock-$prix_gold;
$prix_achat_titane = $titanestock-$prix_titane;
$prix_achat_cristal = $cristalstock-$prix_cristal;
$prix_achat_orinia = $oriniastock-$prix_orinia;
$prix_achat_orinium = $oriniumstock-$prix_orinium;
$prix_achat_organique = $organiquestock-$prix_organique;
// UPDATE DES RESSOURCES
$req_achat_gold = $bdd->prepare('UPDATE ressource SET gold = ?, titane = ?, cristal = ?, orinia = ?, orinium = ?, organique = ? WHERE id_planete = ? AND id_membre = ? ');
$req_achat_gold->execute(array($prix_achat_gold, $prix_achat_titane, $prix_achat_cristal, $prix_achat_orinia, $prix_achat_orinium, $prix_achat_organique, $id_planete_utilise, $idmembre));
// SYSTEME DE POINTS
$point_organique=$prix_organique/1000;
$point_orinium=$prix_orinium/1000;
$point_orinia=$prix_orinia/1000;
$point_cristal=$prix_cristal/1000;
$point_gold=$prix_gold/1000;
$point_titane=$prix_titane/1000;
/* COEFFICIANT MULTIPLICATEUR */
$aug_temps=1.6;
$coeff=1.3;
$req_multip=$bdd->prepare('UPDATE technologie_joueur SET prix_gold = prix_gold*:prixgold, prix_titane = prix_titane*:prixtitane, prix_cristal = prix_cristal*:prixcristal, prix_orinia = prix_orinia*:prixorinia, prix_orinium = prix_orinium*:prixorinium, prix_organique = prix_organique*:prixorganique, nombre_chercheur = nombre_chercheur*:nombrechercheur, temps = temps*:temps, construction = 1 WHERE id_membre = :idmembre AND id_technologie = :id');
$req_multip->execute(array(':prixgold' => $coeff, ':prixtitane' => $coeff,':prixcristal' => $coeff,':prixorinia' => $coeff, ':prixorinium' => $coeff, ':prixorganique' => $coeff, ':nombrechercheur' => $coeff, ':temps' => $aug_temps, ':idmembre' => $idmembre, ':id' => $id_technologie ));
// DEFINI UN BATIMENT EN CONSTRUCTION
$req_up_construc=$bdd->prepare('INSERT INTO construction_techno (joueur, technologie, time) VALUES (:joueur, :technologie, :time)');
$req_up_construc->execute(array('joueur' => $idmembre, 'technologie' => $id_technologie, 'time'=> $delai));
echo "<font color='green'> Technologie en développement .</font>";
header('Location: ../vue/technologie.php');
}
else
{
echo "<font color='red'> Vous n'avez pas les ressources nécéssaire.</font>";
}
}
else
{
echo "<font color='red'>Vous n'avez pas assez de chercheurs.</font>";
}
}
else
{
echo "<font color='red'>Tous les champs ne sont pas remplis</font>";
}
?>
Si quelqu'un à une idée ;)
Merci