Update multiple

Update multiple - PHP - Programmation

Marsh Posté le 19-04-2006 à 15:43:08    

Bonjour, j'ai une petite question.
 
Je voudrais faire une mise à jour sur plusieurs lignes de ma base en même temps. Je m'explique, sur chacune de mes lignes, j'ai une données "classement" ("class" dans la base), qui me permet via une admin de modifier l'ordre d'apparation sur mon site de la façon que je veux. Voici le code :
 

Code :
  1. if($_POST['envoi'])
  2. {
  3. include("../connect.php" );
  4. $class = $_POST['class'];
  5. mysql_query("UPDATE `$tableRef` SET class='$class' WHERE id=$ID_actualite" );
  6. echo "<center><table border=0 cellpadding=5 cellspacing=0  width=300><tr><td align=center><div class=ok>Modification effectuée</div></td></tr><tr></table></center>";
  7. mysql_close($db);
  8. }
  9. else{
  10. include("../connect.php" );
  11. $result = mysql_query("select * from `$tableRef` ORDER BY class DESC" );
  12. $num = mysql_num_rows($result);
  13. ?>
  14. <center><B><?php echo $num; ?> R&eacute;sultat(s)</B></center>
  15. <form name="modif" method='post' action='adm_class_ref.php' OnSubmit="return(accSub());">
  16. //ici j'affiche mon tableau qui va me permettre de changer mes classements à l'aide d'une liste déroulante.
  17. <input type="submit" class=bouton name="envoi" value="Modifier le classement">
  18. </form>


 
Donc quand je clique sur Valider les modif, je rentre dans le "if" et je voudrais que ça m'update dans la table le ou les classements que j'ai modifié. Mais pour l'instant ça le fais pas avec le code que j'ai... Est-ce quelqu'un peut me dire où est mon erreur ?
 
Merci d'avance.

Reply

Marsh Posté le 19-04-2006 à 15:43:08   

Reply

Marsh Posté le 19-04-2006 à 16:02:28    

En fait ça doit être à ce niveau :
 

WhiskyWalker a écrit :

Code :
  1. $class = $_POST['class'];
  2. mysql_query("UPDATE `$tableRef` SET class='$class' WHERE id=$ID_actualite" );




 
Faut que passe par une boucle For ou un truc comme ça ?

Reply

Marsh Posté le 19-04-2006 à 16:39:22    

Le problème c'est quoi ? rien ne marche ou ça ne met à jour qu'une seule ligne ?
 
Dans le cas où rien ne marche :  
- tu as vérifié si $_POST['class'] contenait qqch ?
- $ID_actualite est défini quelque part ?
- tu as fait un echo de ta requete SQL ?
- tu as vérifié que la condition if($_POST['envoi']) s'effectuait ?
 
Sinon c'est super pas sécurisé comme requete, tu dois protéger les entrées utilisateurs avec mysql_real_escape_string avant de les envoyer à la base

Message cité 1 fois
Message édité par Djebel1 le 19-04-2006 à 16:40:37
Reply

Marsh Posté le 19-04-2006 à 16:39:32    

WhiskyWalker a écrit :

Bonjour, j'ai une petite question.
 $class = $_POST['class'];  
 mysql_query("UPDATE `$tableRef` SET class='$class' WHERE id=$ID_actualite" );


 
Slt dans ta clause where tu a mis  :: WHERE id=$ID_actualite.  
 
La variable $ID_actualite sors d'où ??  
 
Il manque a mon avis une ligne du style $ID_actualite= $_POST['ID....'];
A+
 

Reply

Marsh Posté le 19-04-2006 à 17:01:50    

Djebel1 a écrit :

Le problème c'est quoi ? rien ne marche ou ça ne met à jour qu'une seule ligne ?


 
Ca ne met pas à jour les données de ma table en fait.
 

Djebel1 a écrit :

- tu as vérifié que la condition if($_POST['envoi']) s'effectuait ?


 
Oui, ça ça marche.
 

Djebel1 a écrit :

- tu as vérifié si $_POST['class'] contenait qqch ?


 
Je viens de tester et ça me sort 0 comme valeur... Ca dois venir de là. Je met ce que j'ai dans mon form :
 

Code :
  1. <table width="85%" border="0" cellspacing="0" cellpadding="2" align="center">
  2.  <tr><td align=center><input type="submit" class=bouton name="envoi" value="Modifier le classement"></td></tr>
  3. </table>
  4. <table border=1 bgcolor='9BA9E2' cellpadding='3' cellspacing='0'  width='85%' bordercolor='1E3B82'>
  5. <tr>
  6.  <td align=center width=10% bordercolor='FFFFFF'><font size=2 face='Verdana' color='000000'><B>Modifier</B></font></td>
  7.  <td align=center width=15% bordercolor='FFFFFF'><font size=2 face='Verdana' color='000000'><B>Nom</B></font></td>
  8.  <td align=center width=30% bordercolor='FFFFFF'><font size=2 face='Verdana' color='000000'><B>Description</B></font></td>
  9. </tr>
  10. <?php
  11. while($row_result = mysql_fetch_assoc($result)){
  12.  $id = $row_result["id"];
  13.  $nom = $row_result["nom"];
  14.  $class = $row_result["class"];
  15.  $description = substr($row_result["description_fr"],0,60)."...";
  16. ?>
  17.  <tr>
  18.   <td align='center' bordercolor='FFFFFF'>
  19.    <input type='hidden' name="id" value="<?php echo $id; ?>">
  20.    Classement actuel : <?php echo $class ?><br>
  21.    Nouveau classement :
  22.     <select name="class">
  23.      <?php
  24.       $req = mysql_query("select class from `$tableRef`" );
  25.       while($row = mysql_fetch_array($req))
  26.       {
  27.        if ($row['class'] == $class)
  28.        {
  29.      ?>
  30.         <option value="<?php echo $row['class']; ?>" selected><?php echo $row['class']; ?></option>
  31.      <?php
  32.        }else{
  33.      ?>
  34.         <option value="<?php echo $row['class']; ?>"><?php echo $row['class']; ?></option>
  35.      <?php
  36.        }
  37.       }
  38.      ?>
  39.     </select>
  40.   </td>
  41.   <td bgcolor='FFFFFF' align='center' class='bleu8pt'><b><?php echo $nom ?></b></td>
  42.   <td bgcolor='FFFFFF' class='bleu8pt'><?php echo $description ?></td>
  43.  </tr>
  44. <?php
  45. }
  46. echo "</table></form>";


 
 

Djebel1 a écrit :

Sinon c'est super pas sécurisé comme requete, tu dois protéger les entrées utilisateurs avec mysql_real_escape_string avant de les envoyer à la base


 
Ca je verrais après, j'vais déjà essayé de faire marcher mon bordel  :lol: (mais merci du conseil)

Reply

Marsh Posté le 19-04-2006 à 17:53:32    

J'ai vérifié dans le code source, les valeurs dans mon select sont bien affectées, pourtant quand je rentre dans mon if j'ai demandé un echo sur $_POST['class'], ça me met 0  :??: et sur mon query ça me sort 1, c'est pas normal ça nan ?


Message édité par WhiskyWalker le 19-04-2006 à 17:54:50
Reply

Marsh Posté le 19-04-2006 à 18:37:46    

euh nan spas normal :D
Que donne un echo de ta requete ? D'où sort $ID_actualite ?

Reply

Marsh Posté le 20-04-2006 à 09:27:45    

Ben l'écho il me donne 1 justement  :heink:  
 
et pour le $id_actualite j'me suis trompé en recopiant le code ici, c'est ça le bon :
 

Code :
  1. <?
  2. if($_POST['envoi'])
  3. {
  4. include("../connect.php" );
  5. $class = $_POST['class'];
  6. $idref = $_POST['id'];
  7. echo $class;
  8. //for($i = 1; $i <= $num ; $i++)
  9. //{
  10. $test = mysql_query("UPDATE `$tableRef` SET class='$class' WHERE id='$idref'" );
  11. //}
  12. echo $test;
  13. echo "<center><table border=0 cellpadding=5 cellspacing=0  width=300><tr><td align=center><div class=ok>Modification effectuée</div></td></tr><tr></table></center>";
  14. mysql_close($db);
  15. }
  16. if(!$_POST['envoi'])

Reply

Marsh Posté le 20-04-2006 à 16:57:07    

Et $tableRef est défini où ?
 
un echo de ta requete donne juste 1 ?? rien d'autre ?? tu te fous de ma gueule ? ;)
Au minimum, si ta requete est complètement ratée, elle affichera  
update set class='' where id=''
 
Alors BORDEL, si tu nous disait ce qu'affiche ta requete ?? :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed