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 :

Exécuter une requête UPDATE dans une boucle [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut Exécuter une requête UPDATE dans une boucle
    Je veux modifier les détails( les propositions) d'une question d'un quizz.

    1-) Question.....
    propositions1
    propositions2
    propositions3

    Je procède comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for($i=1;$i<=$_POST['nombreproposition'];$i++)
     
       { 
       $updateSQL2 = sprintf("UPDATE detail_question SET numero_proposition=%s, `description`=%s WHERE numero_question=%s",
     
                           GetSQLValueString($_POST['numero_proposition'.$i], "int"),
     
                           GetSQLValueString($_POST['description'.$i], "text"),
     
                           GetSQLValueString($_POST['numero_question'], "int"));
        echo $updateSQL2."<br>";
       $Result2 = mysql_query($updateSQL2, $connection) or die(mysql_error());
    }
    voilà l'affichage des requetes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PDATE detail_question SET numero_proposition=1, `description`='description1' WHERE numero_question=36
     
    UPDATE detail_question SET numero_proposition=2, `description`='description2' WHERE numero_question=36
     
    UPDATE detail_question SET numero_proposition=3, `description`='description3' WHERE numero_question=36
    Après validation
    les quatres enregistrements sont bien modifés avec les valeurs de la dernières lignes.

    C'est comme si j'ai executé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE detail_question SET numero_proposition=3, `description`='description3' WHERE numero_question=36
    trois fois suite. les premières propositions disparaissent.

    Avez-vous une idée sur ce problème ?
    Que dois-je faire pour y remedier ?

    Merci d'avance pour vos reponses.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    BA oui tu UPDATE a chaque fois "numero_proposition" et "proposition" de l'enregistrement 36.

    Quelle est la structure de ta table ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Il y'a deux tables

    table Mère=> Question : qui contient les questions
    table fille=> detail_question: contient plusieurs propositions

    L'exemple precedent est correct, dans la mésure ou : toutes les prositions à modifier appartiennent à la même question. Ce qui change d'une proposition à une autre c'est :
    le numéro_proposition et la description.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Chaque enregistrement de la table detail_question doit avoir un id unique, donc il faut dans la clause "WHERE" spécifier cet id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE detail_question SET numero_proposition=2, `description`='description2' WHERE numero_question=36 AND id_enregsitrement=x
    A+

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par jlmag Voir le message
    Bonjour,

    Chaque enregistrement de la table detail_question doit avoir un id unique, donc il faut dans la clause "WHERE" spécifier cet id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE detail_question SET numero_proposition=2, `description`='description2' WHERE numero_question=36 AND id_enregsitrement=x
    A+
    Oui Merci.

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

Discussions similaires

  1. [2012] Exécution d'une requête UPDATE dans une variable
    Par Fritzoune dans le forum Développement
    Réponses: 3
    Dernier message: 24/10/2014, 13h42
  2. [AC-2007] Sous-requête "Select" dans une requête "update"
    Par MatAllwhite dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/06/2013, 14h00
  3. Stocker une requête update dans une table
    Par bigtruck2010 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 07/07/2011, 12h57
  4. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  5. [Requête] Utilisation d'une fonction perso dans une requête
    Par Julien Dufour dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/03/2007, 09h53

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