IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Boucle foreach pour un update [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut Boucle foreach pour un update
    Bonsoir,

    Ma boucle foreach ne met à jour que le dernier enregistrement, alors que la même boucle foreach fonctionne pour une insertion.

    Voici la boucle pour la mise à jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if($_POST['choix'])
    {
      foreach($_POST['choix'] AS $valeur)
      {
        $r5 = "UPDATE droit_profil
                  SET id_menu = '".$valeur."'
                  WHERE id_profil = '".$profil."'";
                  $r55 = mssql_query($r5);
        unset($valeur);
       }
    }
    Voyez-vous une erreur qui expliquerait que la boucle ne boucle pas ?

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    peut-on avoir un print_r($_POST) voir si ça ne vient pas du contenu de ta variable ?

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    peut-on avoir un print_r($_POST) voir si ça ne vient pas du contenu de ta variable ?
    La variable ramène bien (123) si (123) doit être ramené.

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Non mais l'idée aurait été d'avoir un print_r complet, histoire de voir au moins si il y a bien plusieurs valeurs dans ton POST, car je ne voit rien dans le code qui pourrait poser problème...

    A moins que le mssql ai besoin d'un commit() après chaque requêtes...

  5. #5
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Voici le résultat du print_r($_POST) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [profil] => 1 [libelle] => Administrateur [codes] => ADM [choix] => Array ( [0] => 2 [1] => 4 [2] => 5 ) [valider] => Valider ) 1
    Je suis rentré chez moi et j'ai reécrit le script pour vérifier, mais le problème est toujours le même : je ne coche qu'une case, comme si le foreach ne bouclait pas pour l'update.

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Pour ma part, je passe... Le script est correct, donc si les données sont ok aussi...

    Toujours dans le doute, fait lui faire un echo de tes requetes...

  7. #7
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    J'ai fais un echo sur la requête et elle fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE droit_profil SET id_menu = '2' WHERE id_profil = '2'UPDATE droit_profil SET id_menu = '4' WHERE id_profil = '2'UPDATE droit_profil SET id_menu = '5' WHERE id_profil = '2'
    J'ai coché 3 cases et j'ai bien 3 requêtes updates, donc le foreach fonctionne.

    Je viens de percuter, si je coche une case c'est un insert pas un update, par contre si je décoche c'est un delete pas un update

    Donc avant le foreach je delete tous les enregistrements de l'id_profil correspondant, puis je balaye toutes les cases et si coché je fais un insert.

  8. #8
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    lol oui, je viens de voir aussi que toutes tes requetes concernent le même enregistrement... pas étonnant qu'il n'y ai que le dernier qui soit retenu donc !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requêtes UPDATE dans boucles foreach avec array
    Par vinceom92 dans le forum PHP & Base de données
    Réponses: 67
    Dernier message: 16/03/2014, 21h29
  2. Utiliser 2 array pour une boucle foreach()
    Par boubz013 dans le forum Langage
    Réponses: 3
    Dernier message: 13/10/2010, 18h41
  3. Syntaxe pour un update dans une boucle ..
    Par fmoriet dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 15/11/2007, 09h55
  4. [JSTL] boucle forEach pour deux liste en même temps
    Par ruud002 dans le forum Taglibs
    Réponses: 1
    Dernier message: 28/09/2006, 15h54
  5. [SQL] aide pour requete UPDATE SVP
    Par ganok dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/03/2005, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo