Aller au contenu

prb Boucle while


SimoX

Sujets conseillés

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 :wacko:

	$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é

;)

Lien vers le commentaire
Partager sur d’autres sites

Tu cherches midi à 14 heures, non ?

Tout simplement:

foreach($_POST as $key => $value)
$$key = $value;

fonctionnera quel que soit le nombre de champs :)

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Hooo c magique :w00t: ca marche !!!!

Par contre je voudrais transformer mes varibles obtenues en sessions (par exemple $variable = $_SESSION['variable'] )

en utilisant tjr la fonction magique foreach ;)

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...