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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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.

  4. #4
    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 ?

  5. #5
    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.

  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
    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

  7. #7
    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 ?

  8. #8
    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>";
    }

  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
    Autant pour moi je l'avais pas mis à jour, j'a

  10. #10
    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 />";
    ?>

  11. #11
    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 ?

  12. #12
    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
    j'ai essayé d'inclure un "foreach" mais sans succes, je n'arrive toujours pas à updater la "Value" pour chaque "Category".

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <form id="form" action="" method="post" >
    <?php 
    if (isset($_GET['Transaction_ID']) ) { 
    $Transaction_ID = (int) $_GET['Transaction_ID']; 
    if (isset($_POST['submitted'])) { 
    foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
    $sql = "UPDATE `details` SET   `Value` =  '{$_POST['Value']}'  
    			  WHERE `Transaction_ID` = '$Transaction_ID' AND `Category` = '{$_POST['Category']}' "; 
    mysql_query($sql) or die(mysql_error()); 
    echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";
    }  
    $row=mysql_query("SELECT * FROM Details WHERE `Transaction_ID` = '$Transaction_ID' ORDER BY Category ASC"); 
    while($Produit=mysql_fetch_assoc($row))
    {            
    ?>					
    <table>
    <tbody>
    <tr>
    <td>
    <input size="5" name="Value" type="text" value='<?= stripslashes($Produit['Value']) ?>' />
    </td>
    <td><?= stripslashes($Produit['UDF_ID']) ?></td>
    <td><?= stripslashes($Produit['Transaction_ID']) ?></td>
    <td name='Category'><?= stripslashes($Produit['Category']) ?></td>               							
    </tr>
    <?php } }?>  
    <tr>
    <td>
    <input value="Update" type="submit" /><input value="1" name="submitted" type="hidden" />
    </td>
    </tr>
    </tbody>
    </table>
    </form>

  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
    J'ai trouvé la solution, ci-dessous le code finalisé.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?php   
    //*** Update Condition ***//   
    if($_GET["Action"] == "Save")   
    {   
    for($i=1;$i<=$_POST["hdnLine"];$i++)   
    {   
    $SQL = "UPDATE details SET Value = '".$_POST["txtValue$i"]."'WHERE UDF_ID = '".$_POST["hdnUDF_ID$i"]."' ";   
    $objQuery = mysql_query($SQL);   
    }   
    }   
     
    $strSQL = "SELECT * FROM details ORDER BY UDF_ID ASC";   
    $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");  
    ?> 
    <form name="frmMain" method="post" action="Update.php?Action=Save">
    <table>
    <?php
    $i =0;
    while($objResult = mysql_fetch_array($objQuery))
    {
    	$i = $i + 1;
    ?>
      <tr>
        <td class="norm"><?=$objResult["Category"];?></td>
        <td class="norm"><input class="norm" type="text" name="txtValue<?=$i;?>" size="5" value="<?=$objResult["Value"];?>"></td>
        <td class="norm">
    		<input class="norm" type="hidden" name="hdnUDF_ID<?=$i;?>" size="5" value="<?=$objResult["UDF_ID"];?>">
    		<input  class="norm" type="hidden" name="txtUDF_ID<?=$i;?>" size="5" value="<?=$objResult["UDF_ID"];?>">
    		</td>
      </tr>
    <?php
    }
    ?>
     
    	</tr>
    </table>
      <input class="norm" type="submit" name="submit" value="submit">
      <input type="hidden" name="hdnLine" value="<?=$i;?>">
    </form>

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

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