Update plusieurs textarea en boucle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Update plusieurs textarea en boucle

par supercanard » 17 mars 2008, 17:46

Merci.
Maintenant que tu me donne l'explication ça me parrait tellement bête que j'ai honte :lol:

par Ryle » 17 mars 2008, 16:04

Dans le doute, fait un print_r() ou un var_dump() de ta variable $_POST['note'], c'est toujours plus facile de savoir comment la manipuler quand on sait à quoi elle ressemble :)

Normalement, tu dois avoir un tableau indexé où la clé correspond à ton $data_notes['ipi3_notes_id'] et la valeur celle du textarea correspondant... reste donc plus qu'à récupérer clé et valeur dans un foreach() sans se soucier d'en connaitre le nombre :
foreach ( $_POST['note'] as $cle => $valeur )  { 
  $req = "UPDATE ipi3_notes SET 
    ipi3_notes_texte = '".$valeur."'  
    WHERE ipi3_notes_id = ".$cle."  
    AND ipi3_notes_gens_id = ".$_SESSION['utilisateur']; 

  $result = mysql_query( $req ) or die ( mysql_error() ); 
}
On pense à sortir les variables, et on oublie pas de protéger les chaines avec un mysql_real_escape_string() ou autre ;)

Update plusieurs textarea en boucle

par supercanard » 17 mars 2008, 15:04

Bonjour,

Je coince sur l'update en boucle de plusieurs textarea.
Au départ j'avais essayé avec foreach mais ça ne collait pas avec mon cas.

Ensuite je suis parti dans un truc tordu ou je compte le nombre de champs à updater mais j'ai fait un gros méli mélo entre le nom des textarea et la clause WHERE de la requête...

Bref la j'ai laissé en plan pour y revenir plus tard, voilà ou j'en étais

Cette ligne est dans un while. Le nombre de textarea dépend du nombre d'entrées. $nb_note provient d'un mysql_num_rows :
<textarea name="note['.$data_notes['ipi3_notes_id'].']">'.$data_notes['ipi3_notes_texte'].'</textarea>
Du côté de la requête update :
for ( $i = 0; $i < $_REQUEST['nb_notes']; $i++ )
			{
				$req = "UPDATE ipi3_notes 
				SET ipi3_notes_texte = '{$_POST['texte']}' 
				WHERE ipi3_notes_id = {$_POST['note']} 
				AND ipi3_notes_gens_id = {$_SESSION['utilisateur']}";
				$result = mysql_query( $req ) or die ( mysql_error() );
			}
C'est sur la clause WHERE ipi3_notes_id que ça cloche évidement et en parallèle sur le nom du textarea. C'est totalement faux... et je sais pas comment faire un truc totalement juste.