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. 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
    1. Moi aussi je me suis trompé de variable ;-D

      if ($test_carac_equip_final==0) ...
      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. 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. 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. 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. ah ouai xD merci

                EDIT : même avec les quotes, il n'update pas
                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. 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. J'ai tout réglé, mais ca n'update tjs pas :s
                      0
                      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