Problème avec if et else et un tableau

Résolu
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.
Configuration: Windows Vista
Firefox 3.5.7

12 réponses

  1. 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
    1. J'ai tout réglé, mais ca n'update tjs pas :s
      0
      1. Et si tu écrivais `défense` sans accent dans ton premier update ?
        Tu devrais mettre des or die(... partout pour signaler les erreurs
        0
        1. Et si tu essayais de découper tes update en plein de petites requêtes, ça sera plus lisible pour le débug

          0
          1. ah ouai xD merci

            EDIT : même avec les quotes, il n'update pas
            0
            1. 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
              1. 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
                1. 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
                  1. 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
                    1. Moi aussi je me suis trompé de variable ;-D

                      if ($test_carac_equip_final==0) ...
                      0
                      1. 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