Oui c'est ça, lorsque je fais un echo sur la requete il ne prend en compte que le dernier enregistrement modifié.
Version imprimable
Oui c'est ça, lorsque je fais un echo sur la requete il ne prend en compte que le dernier enregistrement modifié.
Ta boucle while traite les résultats 1 par 1, on est ok ?
Si tu intégres ton update dans cette même boucle, tu auras autant d'update que de résultats.Code:
1
2
3 while($li=mysql_fetch_assoc($res)){ //ton/tes résultats }
Code:
1
2
3
4 while($li=mysql_fetch_assoc($res)){ //ton/tes résultats + update }
J'ai essayé de l'intégrer dans le while... mais la boucle ne fonctionne toujours pas.
Code:
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 />"; ?>
Dans ton update:
Essaye de remplacer $_POST['txtvalue'] et $_POST['txtcategory']
Par $li['Value'] et $li['Category']
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:
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 />"; ?>
j'ai essayé d'inclure un "foreach" mais sans succes, je n'arrive toujours pas à updater la "Value" pour chaque "Category".
Code:
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>
J'ai trouvé la solution, ci-dessous le code finalisé.
Code:
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>