Problème avec if et else et un tableau

Résolu
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 - 9 févr. 2010 à 14:25
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 - 9 févr. 2010 à 16:02
Bonjour, je suis en train de créer un jeu en ligne (php). Je suis a la création de la gestion d'équipement et j'ai un petit bout de code qui m'embête. Le schéma est le suivant :

-On compte toutes les entrées dans la tables items_equip
-Si le tableau retourne 0, on insère l'équipement actuel
-Si le tableau retourne autre chose, on update les entrées avec l'équipement actuel

Mon problème c'est que la première fois ca insère bien, mais quand on change d'équipement, au lieu d'update, il insère à nouveau.

Voici le code :

$test_carac_equip_brut = mysql_query('SELECT COUNT(*) FROM items_equip WHERE pseudo=\''.$_SESSION['pseudo'].'\'') or die(mysql_error());
$row_test_carac_equip = mysql_fetch_row($test_carac_equip_brut) or die(mysql_error());
$test_carac_equip_final = $row_test_carac_equip[0];
$zero = 0;
if (isset($test_carac_equip_row) == 0)
{
$query_insert_casque = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_casque_array['nom']."', '".$montre_casque_array['vie']."', '".$montre_casque_array['mana']."', '".$montre_casque_array['force']."', '".$montre_casque_array['vitesse']."', '".$montre_casque_array['defense']."', '".$zero."')") or die(mysql_error());
$query_insert_torse = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_torse_array['nom']."', '".$montre_torse_array['vie']."', '".$montre_torse_array['mana']."', '".$montre_torse_array['force']."', '".$montre_torse_array['vitesse']."', '".$montre_torse_array['defense']."', '".$zero."')");
$query_insert_gant = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_gant_array['nom']."', '".$montre_gant_array['vie']."', '".$montre_gant_array['mana']."', '".$montre_gant_array['force']."', '".$montre_gant_array['vitesse']."', '".$montre_gant_array['defense']."', '".$zero. "')");
$query_insert_botte = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_botte_array['nom']."', '".$montre_botte_array['vie']."', '".$montre_botte_array['mana']."', '".$montre_botte_array['force']."', '".$montre_botte_array['vitesse']."', '".$montre_botte_array['defense']."', '".$zero. "')");
$query_insert_arme = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_arme_array['nom']."', '".$montre_arme_array['vie']."', '".$montre_arme_array['mana']."', '".$montre_arme_array['force']."', '".$montre_arme_array['vitesse']."', '".$montre_arme_array['defense']."', '".$zero. "')");
$query_insert_bouclier = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_bouclier_array['nom']."', '".$montre_bouclier_array['vie']."', '".$montre_bouclier_array['mana']."', '".$montre_bouclier_array['force']."', '".$montre_bouclier_array['vitesse']."', '".$montre_bouclier_array['defense']."', '".$zero. "')");
}
else
{
$query_update_casque = mysql_query("UPDATE items_equip SET `item`='$montre_casque_array[nom]', `force`='$montre_casque_array[force]', `vitesse`='$montre_casque_array[vitesse]', `défense`='$montre_casque_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]'");
$query_update_torse = mysql_query("UPDATE items_equip SET `item`='$montre_torse_array[nom]', `vie`='$montre_torse_array[vie]', `mana`='$montre_torse_array[mana]', `force`='$montre_torse_array[force]', `vitesse`='$montre_torse_array[vitesse]', `defense`='$montre_torse_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]'");
$query_update_gant = mysql_query("UPDATE items_equip SET `item`='$montre_gant_array[nom]', `vie`='$montre_gant_array[vie]', `mana`='$montre_gant_array[mana]', `force`='$montre_gant_array[force]', `vitesse`='$montre_gant_array[vitesse]', `defense`='$montre_gant_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]'");
$query_update_botte = mysql_query("UPDATE items_equip SET `item`='$montre_botte_array[nom]', `vie`='$montre_botte_array[vie]', `mana`='$montre_botte_array[mana]', `force`='$montre_botte_array[force]', `vitesse`='$montre_botte_array[vitesse]', `defense`='$montre_botte_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]'");
$query_update_arme = mysql_query("UPDATE items_equip SET `item`='$montre_arme_array[nom]', `vie`='$montre_arme_array[vie]', `mana`='$montre_arme_array[mana]', `force`='$montre_arme_array[force]', `vitesse`='$montre_arme_array[vitesse]', `defense`='$montre_arme_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]'");
$query_update_bouclier = mysql_query("UPDATE items_equip SET `item`='$montre_bouclier_array[nom]', `vie`='$montre_bouclier_array[vie]', `mana`='$montre_bouclier_array[mana]', `force`='$montre_bouclier_array[force]', `vitesse`='$montre_bouclier_array[vitesse]', `defense`='$montre_bouclier_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]'");
}


Merci.
A voir également:

12 réponses

Bonjour

À première vue, tu t'es planté et sur le nom de la variable, et sur la signification du isset :
if (isset($test_carac_equip_row) == 0)
est à remplacer par
if ($row_test_carac_equip == 0)
0
Moi aussi je me suis trompé de variable ;-D

if ($test_carac_equip_final==0) ...
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
9 févr. 2010 à 14:33
Vu comme ça en diagonale cette ligne me gène :
if (isset($test_carac_equip_row) == 0)


si tu fais
if (isset($test_carac_equip_row) === false)
il se passe quoi ?

et encore mieux, si tu inverses tes blocs et que tu te contentes de
if (isset($test_carac_equip_row))

0
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
9 févr. 2010 à 14:45
Résolu, le nom de ma variable de test n'était pas bonne et j'ai d'abord fais un isset, puis, dans cette condition, j'ai fais le test pour savoir si le tableau valait 0 ou non
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
9 févr. 2010 à 14:46
oki doki
0
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
9 févr. 2010 à 14:52
Un autre problème. J'ai réglé mon code et tout marche... sauf le update. J'ai beau changer d'équipement, il ne veut pas update ma DB ^^
Voici le code :

$test_carac_equip_brut = mysql_query('SELECT COUNT(*) FROM items_equip WHERE pseudo=\''.$_SESSION['pseudo'].'\'') or die(mysql_error());
$row_test_carac_equip = mysql_fetch_row($test_carac_equip_brut) or die(mysql_error());
$test_carac_equip_final = $row_test_carac_equip[0];
$zero = 0;
if ($test_carac_equip_final == 0)
{
$query_insert_casque = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_casque_array['nom']."', '".$montre_casque_array['vie']."', '".$montre_casque_array['mana']."', '".$montre_casque_array['force']."', '".$montre_casque_array['vitesse']."', '".$montre_casque_array['defense']."', 'casque', '".$zero."')") or die(mysql_error());
$query_insert_torse = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_torse_array['nom']."', '".$montre_torse_array['vie']."', '".$montre_torse_array['mana']."', '".$montre_torse_array['force']."', '".$montre_torse_array['vitesse']."', '".$montre_torse_array['defense']."', 'torse','".$zero."')");
$query_insert_gant = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_gant_array['nom']."', '".$montre_gant_array['vie']."', '".$montre_gant_array['mana']."', '".$montre_gant_array['force']."', '".$montre_gant_array['vitesse']."', '".$montre_gant_array['defense']."', 'gant','".$zero. "')");
$query_insert_botte = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_botte_array['nom']."', '".$montre_botte_array['vie']."', '".$montre_botte_array['mana']."', '".$montre_botte_array['force']."', '".$montre_botte_array['vitesse']."', '".$montre_botte_array['defense']."', 'botte','".$zero. "')");
$query_insert_arme = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_arme_array['nom']."', '".$montre_arme_array['vie']."', '".$montre_arme_array['mana']."', '".$montre_arme_array['force']."', '".$montre_arme_array['vitesse']."', '".$montre_arme_array['defense']."', 'arme','".$zero. "')");
$query_insert_bouclier = mysql_query("INSERT INTO items_equip VALUES('', '".$_SESSION['pseudo']."', '".$montre_bouclier_array['nom']."', '".$montre_bouclier_array['vie']."', '".$montre_bouclier_array['mana']."', '".$montre_bouclier_array['force']."', '".$montre_bouclier_array['vitesse']."', '".$montre_bouclier_array['defense']."', 'bouclier','".$zero. "')");
}
else
{
$query_update_casque = mysql_query("UPDATE items_equip SET `item`='$montre_casque_array[nom]', `force`='$montre_casque_array[force]', `vitesse`='$montre_casque_array[vitesse]', `défense`='$montre_casque_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]' AND `type`=casque");
$query_update_torse = mysql_query("UPDATE items_equip SET `item`='$montre_torse_array[nom]', `vie`='$montre_torse_array[vie]', `mana`='$montre_torse_array[mana]', `force`='$montre_torse_array[force]', `vitesse`='$montre_torse_array[vitesse]', `defense`='$montre_torse_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]' AND `type`=torse");
$query_update_gant = mysql_query("UPDATE items_equip SET `item`='$montre_gant_array[nom]', `vie`='$montre_gant_array[vie]', `mana`='$montre_gant_array[mana]', `force`='$montre_gant_array[force]', `vitesse`='$montre_gant_array[vitesse]', `defense`='$montre_gant_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]' AND `type`=gant");
$query_update_botte = mysql_query("UPDATE items_equip SET `item`='$montre_botte_array[nom]', `vie`='$montre_botte_array[vie]', `mana`='$montre_botte_array[mana]', `force`='$montre_botte_array[force]', `vitesse`='$montre_botte_array[vitesse]', `defense`='$montre_botte_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]' AND `type`=botte");
$query_update_arme = mysql_query("UPDATE items_equip SET `item`='$montre_arme_array[nom]', `vie`='$montre_arme_array[vie]', `mana`='$montre_arme_array[mana]', `force`='$montre_arme_array[force]', `vitesse`='$montre_arme_array[vitesse]', `defense`='$montre_arme_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]' AND `type`=arme");
$query_update_bouclier = mysql_query("UPDATE items_equip SET `item`='$montre_bouclier_array[nom]', `vie`='$montre_bouclier_array[vie]', `mana`='$montre_bouclier_array[mana]', `force`='$montre_bouclier_array[force]', `vitesse`='$montre_bouclier_array[vitesse]', `defense`='$montre_bouclier_array[defense]', `equip`='$zero' WHERE `pseudo`='$_SESSION[pseudo]' AND `type`=bouclier");
}


Merci.
0
Tu as entouré les valeurs de tes champs de simples quotes, ce qui est bien, mais tu as oublié d'en mettre à 'casque', 'torse', etc...
0
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
9 févr. 2010 à 15:12
ah ouai xD merci

EDIT : même avec les quotes, il n'update pas
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
9 févr. 2010 à 15:24
Et si tu essayais de découper tes update en plein de petites requêtes, ça sera plus lisible pour le débug

0
Et si tu écrivais `défense` sans accent dans ton premier update ?
Tu devrais mettre des or die(... partout pour signaler les erreurs
0
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
9 févr. 2010 à 15:44
J'ai tout réglé, mais ca n'update tjs pas :s
0
aneantisseur Messages postés 385 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
9 févr. 2010 à 16:02
Résolu. Le problème venait de la base de données, j'avais nommé la colonne "défense" alors que dans les requêtes j'utilisai "defense".
Merci :)
0