$_POST[mon_champ] et boucle

Signaler
Messages postés
9
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
14 mai 2007
-
Messages postés
9
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
14 mai 2007
-
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

Messages postés
9
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
14 mai 2007

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...
Messages postés
9
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
14 mai 2007

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...
Messages postés
32
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
20 mai 2007

oula attentiion aux injections sql

c pas protégé tout çà ;)
Messages postés
9
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
14 mai 2007

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.
Messages postés
32
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
20 mai 2007

Messages postés
9
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
14 mai 2007

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