Update plusieurs textarea en boucle

Mammouth du PHP | 531 Messages

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 531 Messages

17 mars 2008, 17:46

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