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. #21
    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 ça, lorsque je fais un echo sur la requete il ne prend en compte que le dernier enregistrement modifié.

  2. #22
    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
    Ta boucle while traite les résultats 1 par 1, on est ok ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($li=mysql_fetch_assoc($res)){
    //ton/tes résultats
    }
    Si tu intégres ton update dans cette même boucle, tu auras autant d'update que de résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($li=mysql_fetch_assoc($res)){
    //ton/tes résultats
    + update
    }

  3. #23
    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é de l'intégrer dans le while... mais la boucle 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
     
    <?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><input class='norm' size='10' name='txtcategory' value=".$li['Category']."></td>
    <td><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['txtcategory']}' "; mysql_query($sql) or die(mysql_error()); 
    				}		 
    echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";			         
    ?>

  4. #24
    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
    Dans ton update:
    Essaye de remplacer $_POST['txtvalue'] et $_POST['txtcategory']
    Par $li['Value'] et $li['Category']

  5. #25
    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 effectué les remplaçements mais cela ne focntionne toujours pas, ce que je ne comprends pas c'est qu'en mettant l'update directement dans la boucle, celle-ci- se fait directement au chargement de la page or je souhaite faire les modifications après validation sur un bouton.
    De plus $li['Value'] et $li['Category'] sont des variables et non des noms de champs donc l'update prend en compte la valeur issue de la table et nom les modifctions faites dans les champs 'txtvalue' et 'txtcategory'.

    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
     
    <?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><input class='norm' size='10' name='txtcategory' value=".$li['Category']."></td>
    <td><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
    </tr>";
    //Update Query 
    $sql = "UPDATE `details` SET   `Value` =  '".$li['Value']."' 
    WHERE `Transaction_ID` = '1' AND `Category` = '".$li['Category']."' ";
    echo $sql;
    mysql_query($sql) or die(mysql_error()); 
    }		 
    echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";			         
    ?>

  6. #26
    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>

  7. #27
    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.
Page 2 sur 2 PremièrePremière 12

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