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 :

Update avec 2 conditions [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut Update avec 2 conditions
    Bonjour,

    Je souhaites updater une table, mais voilà je dois faire un update en tenant compte du "Transaction_ID" et de la "Category".
    Le code ci-dessous affiche bien ma table mais ne modifie rien, pourriez vous m'orienter. Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //Query
    $affiche= "SELECT * FROM Details ORDER BY Category ASC";
    //Execution Query
    $res=mysql_query($affiche);		
    while($li=mysql_fetch_assoc($res)){		
    echo "<tr>
    <td name='txtcategory'>".$li['Category']."</td>
    <td name='txtvalue'><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
    </tr>";
    }
    //Update Query
    $sql = "UPDATE `details` SET   `Value` =  '{$_POST['txtvalue']}' 
    WHERE `Transaction_ID` = '1' AND `Category` = '{$_POST['txtcat']}' "; 				
    mysql_query($sql) or die(mysql_error()); 
    echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";
    ?>

  2. #2
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Ton attribut Transaction_ID c'est ta clé primaire ?

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    D'où vient le ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Oui c'est la clé primaire.
    Et je souhaites updater chaque valeur des lignes (ex: A, B, C) de la transaction_ID "1" par exemple.

  5. #5
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Si c'est ta clé primaire, pourquoi utiliser deux conditions dans ta requête ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    le est le noim de mon input afin de récuprer la valeur de cette input après modification.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    2h15Crew,

    J'utilise deux condtion dans ma requete car j'ai plusieur ligne à updater sur un meme Transaction_ID:
    exemple:

    Transaction_ID Category Value
    1 A 8
    1 B 9
    1 C 5

  8. #8
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Donc Transaction_ID n'est pas ta clé primaire...
    Par défaut la clé primaire est unique.

    Soit tu te facilites la vie et tu ajoutes un attribut clé primaire unique (pas une clé primaire composée de plusieurs attributs) et à ce moment là, tu auras une unique condition dans ta requête.

    Sinon, tu as vérifié que la valeur de ton
    était correcte ?

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Non, comment je peu la vérifier?
    ca doit etre pour cela que j'ai un message d'erreur.
    Notice: Undefined index: txtcat in C:\wamp\www\DRS\Main\UDFDetail.php on line 72

  10. #10
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Tu peux la vérifier comme ça :

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Il me lmet le meme message d'erreur.
    Notice: Undefined index: txtcat in C:\wamp\www\DRS\Main\UDFDetail.php on line 73

  12. #12
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Met le echo avant d'executer la requête qui fait planter

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Meme résultat!

  14. #14
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par Budy123 Voir le message
    le est le noim de mon input afin de récuprer la valeur de cette input après modification.

    Ok et il se trouve où

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while($li=mysql_fetch_assoc($res)){		
    echo "<tr>
    <td name='txtcategory'>".$li['Category']."</td>
    <td name='txtvalue'><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
    </tr>";
    }

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Autant pour moi je l'avais pas mis à jour, j'a

  16. #16
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Autant pour moi j'avais modifié le code et je ne l'ais pas mis à jour, il s'agit en fait du $_POST['txtcategory']
    Le code mis à jour, mais qui ne fonctionne toujours pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php 
    //Query
    $affiche= "SELECT * FROM Details ORDER BY Category ASC";
    //Execution Query
    $res=mysql_query($affiche);		
    while($li=mysql_fetch_assoc($res)){		
    echo "<tr>
    <td name='txtcategory'>".$li['Category']."</td>
    <td name='txtvalue'><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
    </tr>";
    }
    echo $_POST['txtcategory'];
    //Update Query
    $sql = "UPDATE `details` SET   `Value` =  '{$_POST['txtvalue']}' 
    WHERE `Transaction_ID` = 1 AND `Category` = '{$_POST['txtcategory']}' "; 
    echo $sql;
    mysql_query($sql) or die(mysql_error()); 
    echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";
    ?>

  17. #17
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Je dois avoir un soucis avec ma boucle, en théorie je devrais obtenir autant de ligne d'update que j'ai de category dans un meme numéro de Transaction_ID
    Exemple:
    UPDATE `details` SET `Value` = '99' WHERE `Transaction_ID` = 1 AND `Category` = 'A';
    UPDATE `details` SET `Value` = '97' WHERE `Transaction_ID` = 1 AND `Category` = 'B';
    UPDATE `details` SET `Value` = '955' WHERE `Transaction_ID` = 1 AND `Category` = 'C';
    Or je n'ai qu'une seul ligne qui s'affiche:
    UPDATE `details` SET `Value` = '8' WHERE `Transaction_ID` = 1 AND `Category` = ''
    De plus la valeur "Value" récupérer ne correspond pas à la modif faite dans le champs input.

  18. #18
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Salut

    Citation Envoyé par Budy123 Voir le message
    Je dois avoir un soucis avec ma boucle, en théorie je devrais obtenir autant de ligne d'update que j'ai de category dans un meme numéro de Transaction_ID....
    Non puisque ton update est isolé, et non pas dans ta boucle while de ta première requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while($li=mysql_fetch_assoc($res)){		
    /////
    /////
    ////
     
    =>Update.....
    }
    Ensuite, est-ce normal que le nom de ta table soit différente dans tes 2 requêtes ?
    => Details
    => details

  19. #19
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Bonsoir alain31tl,

    Oui effectivement, en cherchant à droite à gauche je commprends qu'effectivement il n'y a pas de boucle dans mon update, je pense devoir utiliser un foreach, mais j'avoue ne pas trops savoir comment faire.
    Pour le nom de la table elle s'écrit bien "details" c'est une erreur de ma part, mais visiblement le système ne m'en tiens pas rigeur, ca fonctionne avec les 2 ortographes

  20. #20
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    En réalité et tel que tu as composé, c'est le dernier enregistrement de ta boucle qui est pris en compte par ton Update.
    Cette requête, puisqu'isolée ne peut se souvenir que des dernières variables traitées.

    Je crois que tu n'as pas compris.
    Mais pourquoi tu ne fais pas comme je te l'ai suggéré ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Update avec 3 conditions
    Par kitten13 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/09/2009, 01h09
  2. Réponses: 10
    Dernier message: 26/03/2008, 15h00
  3. requete update avec une condition
    Par youtou dans le forum Langage SQL
    Réponses: 5
    Dernier message: 07/06/2006, 20h55
  4. update avec condition sur autre table
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/04/2005, 15h02
  5. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20

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