JeuWeb - Crée ton jeu par navigateur
Modification d'un champs nommé par une variable. - 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 : Modification d'un champs nommé par une variable. (/showthread.php?tid=305)



Modification d'un champs nommé par une variable. - Globe - 08-10-2006

Bonjour à tous.

Je suis actuellement en train d'élaborer un système de production d'unités, mais je pense mal m'y prendre en tentant de faire un truc qui ne fonctionne pas.

Ma première question : Ai je le droit de faire ceci dans ma requête :
Code PHP :
<?php 
mysql_query
("UPDATE unites_joueurs SET '$valeur'='$valeur'+'$nombre', points=points+'$req2['points']', population=population+'$place' WHERE id='$id'");

En fait je veux augmenter le nombre d'unités là ou valeur est le nom de l'unité, valeur est obtenu à partir du $_POST['type'] qui contient l'id de l'unité dans la table unites, à partir de celle ci je récupère valeur dans la table, valeur étant dans la table unites_joueurs le nom de l'unité.


Ma seconde question est : Si ce n'est pas si qui fais merder alors qu'est ce qui cause ceci (h):
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/109/sdb/e/c/www.indianvillage/2/form.php on line 83
EDIT : L83 = la fonction mysql plus haut.



Code PHP :
<?php 
$nombre
= $_POST['nombre'];
$type = $_POST['type'];
$place = $req2['place']*$nombre;
$limite = $req3['limite']-$req3['population'];
//-------------Prix-----------
$req2 = mysql_query("SELECT nom, nourriture, bois, pierre, tabac, cuir, valeur FROM unites WHERE id='$type'");
$table2=mysql_fetch_assoc($req2) or die('Erreur SQL !<br>'.$req2.'<br>'.mysql_error());
//-------------Ressources-----------
$req3 = mysql_query("SELECT nourriture, bois, pierre, tabac, cuir FROM ressources WHERE joueur='$id'");
$table3=mysql_fetch_assoc($req3) or die('Erreur SQL !<br>'.$req3.'<br>'.mysql_error());
//------------*******************************-------------

//-------------Variables-----------
$prix_nourriture = $req2['nourriture'];
$prix_bois = $req2['bois'];
$prix_pierre = $req2['pierre'];
$prix_cuir = $req2['cuir'];
$prix_tabac = $req2['tabac'];
$joueur_nourriture = $req3['nourriture'];
$joueur_bois = $req3['bois'];
$joueur_pierre = $req3['pierre'];
$joueur_cuir = $req3['cuir'];
$joueur_tabac = $req3['tabac'];
$valeur = $req2['valeur'];
//------------*******************************-------------

if($prix_nourriture <= $joueur__nourriture || $prix_bois <= $joueur_bois || $prix_pierre <= $joueur_pierre || $prix_tabac <= $joueur_tabac || $prix_cuir <= $joueur_cuir || $place <= $limite) {
echo
'Vous formez '.$nombre.' '.$req2['nom'].'!';
mysql_query("UPDATE unites_joueurs SET '$valeur'='$valeur'+'$nombre', points=points+'$req2['points']', population=population+'$place' WHERE id='$id'");
mysql_query("UPDATE ressources SET nourriture=nourriture-'$prix_nourriture', cuir=cuir-'$prix-cuir', tabac=tabac-'$prix_tabac', pierre=pierre-'$prix_pierre', bois=bois-'$prix_bois' WHERE joueur='$id'");
}
else { echo
'Vous ne possédez pas assez de ressources ou n\'avez pas assez de place pour former '.$nombre.' '.$type.' !'; }

Merci d'avoir pris le temps de lire.

Globe.

EDIT : Une dernière question, lors de l'éxecution d'une requete j'ai l'erreur : Resource ID #4 qu'est ce que celà veux dire ?


RE: Modification d'un champs nommé par une variable. - Plume - 08-10-2006

J'trouve ça étrange:
Code PHP :
<?php 
'$valeur'='$valeur'+'$nombre'
J'veux dire ça doit être possible mais j'avoue qu'il y a quelque chose qui me perturbe. Entre autre le fait que comme tu changes la valeur de valeur, comment tu veux y faire appel encore après ? Enfin j'arrive pas à m'expliquer mais je le sens pas Big Grin


RE: Modification d'un champs nommé par une variable. - Globe - 08-10-2006

Je n'y fais appel qu'une fois Big Grin
Je change sa la valeur du champs qui à pour nom $valeur...

Par exemple si $valeur = unite1
alors je changerais la valeur du champs unite1...
Enfin bon j'ai fais ça par flemme de faire une condition...
Merci quand meme, sinon pour les erreur de Resource ID #4 tu as une idée ?


RE: Modification d'un champs nommé par une variable. - gtsoul - 08-10-2006

Code PHP :
<?php 
mysql_query
("UPDATE unites_joueurs SET $valeur=$valeur+$nombre, points=points+".$req2['points'].", population=population+$place WHERE id=$id");

'blabla' désigne une chaîne de caractère donc '$a'='$b'+'$c' n'a pas de sens => $a = $b+$c
donc, les chaines de caractère entre ' ', les autres sans. j'ai isolé l'accès à un élément du tableau $req2 par surete
ca devrait régler ta première erreur

ressource id#4, tu effectues une fonction sur un type qui ne correspond pas à la fonction appelée, traditionnellement faire un echo sur un tableau (php a le typage large mais pas jusque là)


RE: Modification d'un champs nommé par une variable. - Globe - 08-10-2006

Merci, et si là je veux faire '$a'='$a'+$b ça marcherais selon toi ?

Sinon pour le resource id #4 je pense qu'il s'agit de cette requete :
Code PHP :
<?php 
$appel
= mysql_query('SELECT * FROM ressources WHERE joueur="'.$id.'"');
$ressource=mysql_fetch_assoc($appel) or die('Erreur SQL !<br>'.$appel.'<br>'.mysql_error()); ?>
Nourriture : <? echo $ressource['nourriture']; ?> Bois : <? echo $ressource['bois']; ?>