SimoX Posté 14 Octobre 2006 Posté 14 Octobre 2006 Bonjour ! J'ai un problème avec ma boucle php , j'essaye de mentionner juste les variables sans les afficher (sans passer par echo ). J'ai esayé ce code mais il ne marche pas $nbr_champs = $_POST['nbr_champs']; for ($i=1; $i<=$nbr_champs; $i++) { $id_$i = $_POST['id_$i']; } ?> N.B: j'ai un forumulaire dynamique (on px ajouter des champs) et $nbr_champs est le nombre de champs ajouté
Dan Posté 14 Octobre 2006 Posté 14 Octobre 2006 Tu cherches midi à 14 heures, non ? Tout simplement: foreach($_POST as $key => $value) $$key = $value; fonctionnera quel que soit le nombre de champs
SimoX Posté 14 Octobre 2006 Auteur Posté 14 Octobre 2006 Tu cherches midi à 14 heures, non ? Tout simplement: foreach($_POST as $key => $value) $$key = $value; fonctionnera quel que soit le nombre de champs Merci, mais je n'ai rien saisi en ton code Où je met le nom du champ (id) ? je viens de débuter en php il ya 1 mois
Dan Posté 14 Octobre 2006 Posté 14 Octobre 2006 Utilise le code tel quel... La boucle foreach passera en revue toutes les variables contenues dans $_POST, en les stockant dans $key et $value. Et si tu as une variable $_POST['id_123'] qui a pour valeur "toto", tu auras bien au final une variable $id_123 avec cette même valeur. Dans cet exemple, $key vaut "id_123" et $value vaut "toto"... donc $$key sera égal à $id_123
SimoX Posté 14 Octobre 2006 Auteur Posté 14 Octobre 2006 Donc à ce que j'ai compri foreach est une fonction qui permet d'extraire toutes les variables POST ? Sans passer des heures à reprendre les variables (par ex : $prenom = $_POST['prenom']; ) Merici à toi
Dan Posté 14 Octobre 2006 Posté 14 Octobre 2006 Toutes les variables sous forme de tableau... $_POST, $_GET, $_SERVER ... pour les variables globales, et ce que tu veux pour les variables non globales ! foreach(array_expression as $value) commandes foreach(array_expression as $key => $value) commandes La première forme passe en revue le tableau array_expression. À chaque itération, la valeur de l'élément courant est assignée à $value et le pointeur interne de tableau est avancé d'un élément (ce qui fait qu'à la prochaine itération, on accédera à l'élément suivant). La deuxième forme fait exactement la même chose, mais c'est la clé de l'élément courant qui est assigné à la variable $key.
SimoX Posté 15 Octobre 2006 Auteur Posté 15 Octobre 2006 Hooo c magique ca marche !!!! Par contre je voudrais transformer mes varibles obtenues en sessions (par exemple $variable = $_SESSION['variable'] ) en utilisant tjr la fonction magique foreach
Chark Posté 15 Octobre 2006 Posté 15 Octobre 2006 foreach($_POST as $key => $value) {$_SESSION[$key]=$value} non ?
SimoX Posté 15 Octobre 2006 Auteur Posté 15 Octobre 2006 foreach($_POST as $key => $value) {$_SESSION[$key]=$value} non ? Ca ne marche pas Au fait je vx créer des sessions depuis les variables générées par foreach ( $variable = $_SESSION['variable']; ) et non par des $_POST Merci
captain_torche Posté 16 Octobre 2006 Posté 16 Octobre 2006 Tu peux également utiliser la fonction extract(). Ce qui donnerait : extract($_SESSION); Qui a le même effet que le code que Dan t'a donné. Par contre, petite mise en garde : si les données que tu souhaites utiliser sont renseignées par l'utilisateur (GET ou POST), il vaut mieux, par sécurité, éviter de l'utiliser telle quelles, de peur d'écraser des variables existantes (et par conséquent, fragiliser tes scripts en facilitant la tâche à d'éventuels pirates). Dans ce cas, je te conseille d'utiliser une version corrigée du script de Dan : foreach($_POST as $key => $value) { if(!isset($$key)) $$key = $value;} qui va vérifier que la variable n'existe pas encore avant de la créer. Si elle existe déjà, elle ne sera pas remplacée. Tu peux également utiliser la fonction extract, avec le paramètre additionnel EXTR_SKIP, qui n'écrase pas les variabes préexistantes : extract($_POST, EXTR_SKIP)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant