$_POST[mon_champ] et boucle

cs_DocR2 Messages postés 9 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 14 mai 2007 - 8 mai 2007 à 02:10
cs_DocR2 Messages postés 9 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 14 mai 2007 - 14 mai 2007 à 19:03
Bonjour,

J'ai un formulaire qui s'affiche suite à une requête mysql : mes deux champs de formulaire sont donc répétés tant que des données existent dans ma table sous la forme :



je souhaite récupérer les $_POST['champ_1'] et $_POST['champ_2'] dans une boucle afin d'updater ma table mysql : j'ai trouvé une méthode pour récupérer UN seul $_POST, mais n'y arrive pas pour les DEUX...

Voici ma méthode actuelle :
$tabChamp = (isset($_POST['champ_1']))?$_POST['champ_1']:null;
foreach($tabChamp as $cle => $valeur)
   { 
   $SQL=mysql_query("UPDATE ma_table SET champ_1='".$valeur."' WHERE id='n°_id'") OR DIE(mysql_error());
   }
Je bloque pour faire ce type de boucle avec $_POST['champ_2'] associé à $_POST['champ_1]...

Pourrais-je avoir de l'aide ?

Merci

6 réponses

cs_DocR2 Messages postés 9 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 14 mai 2007
8 mai 2007 à 02:25
ERREUR

Je me suis mal exprimé...
Là où je bloque c'est précisémment le WHERE dans ma requête d'update :
$tabChamp = (isset($_POST['champ_1']))?$_POST['champ_1']:null;
foreach($tabChamp as $cle => $valeur)
   { 
   $SQL=mysql_query("UPDATE ma_table SET champ_1='". $valeur ."' WHERE champ_2 ='".$_POST['champ_2']."'") OR DIE(mysql_error());
   }
le $_POST['champ_2'] est "écrasé" systématiquement à la dernière valeur récupérée et je voudrais qu'il soit au contraire associé au $_POST['champ_1'] (récupéré par $valeur)...

Ais-je été plus clair ?

Merci de votre aide...
0
cs_DocR2 Messages postés 9 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 14 mai 2007
8 mai 2007 à 23:09
PROBLEME RESOLU

ce devait être la fatigue de la nuit...


dans la partie formulaire (requete php) :



dans le traitement :
$nbp=(nb de lignes du formulaire);
for($i=1; $i<$nbp; $i++)
   {
   $mnum=$_POST['num'][$i];
   $mpage=$_POST['page'][$i];
   $SQL=mysql_query("UPDATE menu_haut SET num="$mnum" WHERE page="$mpage"") OR DIE(mysql_error());
   }

Au cas où cela serve à quelqu'un...
0
slaxswf Messages postés 32 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 20 mai 2007
14 mai 2007 à 01:33
oula attentiion aux injections sql

c pas protégé tout çà ;)
0
cs_DocR2 Messages postés 9 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 14 mai 2007
14 mai 2007 à 12:29
Je débute en php !
C'est pas la première fois que je lis sur un post : "pas protégé"...

On pourrait m'expliquer en quoi ?

Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slaxswf Messages postés 32 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 20 mai 2007
14 mai 2007 à 12:36
0
cs_DocR2 Messages postés 9 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 14 mai 2007
14 mai 2007 à 19:03
Si j'ai bien compris mes lectures, ces deux versions seraient sécurisées ?

/* Première version */
$nbp=(nb de lignes du formulaire);
for($i=1; $i<$nbp; $i++)
   {
   $mnum=$_POST['num'][$i];
   $mpage=$_POST['page'][$i];
 $query = sprintf("UPDATE menu_haut SET num='%s' WHERE page='%s'",
             mysql_real_escape_string($mnum, $connexion),
                    mysql_real_escape_string($mpage, $connexion));


 mysql_query($query, $connexion);


 if (mysql_affected_rows($connexion) > 0) {
  echo "Enregistrement effectué\n";
 }
   }


/* Deuxième version possible */


$nbp=(nb de lignes du formulaire);
for($i=1; $i<$nbp; $i++)
   {
   $mnum=$_POST['num'][$i];
 $query = sprintf("UPDATE menu_haut SET num='%s' WHERE page='%d'",
         mysql_real_escape_string($mnum, $connexion),
  $_POST['page'][$i]);


 mysql_query($query, $connexion);


 if (mysql_affected_rows($connexion) > 0) {
  echo "Enregistrement effectué\n";
 }
   }


Merci  de me corriger au cas où...

DocR2
0
Rejoignez-nous