Page 1 sur 1

Tableau $_POST en array, vide !

Posté : 18 mars 2012, 13:13
par gesualda
Bonjour à tous,

J'ai plusieurs questions concernant mon soucis, mais je vais procéder par petit pas et question à fur et à mesure. Y a quelque chose qui m'échappe :
Lorsque je procède ainsi, dans la boucle, la valeur est de "rien" alors que "print_r" me donne bien la clé et la valeur.

Par ou ai je péché ? Merci de vos aides et explications.
$_POST['nom'] = ' Mon nom ';
$_POST['prenom'] = ' Mon prénom ';
$_POST['ville'] = ' Ma ville ';
$_POST['cp'] = ' 75000 ';


// Mise en tableau des éléments récupérés du formulaire
$tbl = array($_POST);

foreach($tbl as $cle => $element)
{
    echo  $cle . ' => '. $element . '<br />';
}

echo '<pre>';
	print_r($tbl);
echo '<pre>';

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 13:19
par Ryle
$_POST est déjà un tableau. Il ne faut donc pas faire de array($_POST);

foreach($_POST as $cle => $element) fonctionnera nettement mieux :)

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 14:02
par gesualda
Merci Ryle, de l'explication, c'st vrai ca marche bien mieux ( :oops: )

Toujours dans le même sujet, comment tranformerr ceux-ci
$_POST['nom'] = ' Mon nom ';
$_POST['prenom'] = ' Mon prénom ';
$_POST['ville'] = ' Ma ville ';
$_POST['cp'] = ' 75000 ';
En cela, sans passer par l'écriture manuel
$nom = $_POST['nom'] ;
$prenom = $_POST['prenom'];
$ville = $_POST['ville']';
$cp = $_POST['cp'];
Dans la boucle il y a bien la valeur ".$cle ", mais je ne sais la transformer.
Merci

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 14:34
par sirakawa
Un bout d'idée, si j'ai bien compris la question:
<?PHP
$_POST['nom'] = ' Mon nom ';
$_POST['prenom'] = ' Mon prénom ';
$_POST['ville'] = ' Ma ville ';
$_POST['cp'] = ' 75000 ';
 $clefs = array_keys ($_POST);
 print_r($clefs);
 $clef_1 = $clefs[0];
 $nom_var = "$clef_1";
 $$nom_var = $_POST[$clef_1];
 print "$nom";
 
 ?>
avec une boucle foreach, ça marchera...

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 15:26
par gesualda
Merci de ta réponse Sirakawa,

J'ai bien compris qu'avec "array_keys" on récupére ' le nom de $_POST, mais en toute franchise, j'ai pas trop compris la suite pour l'introduire dans une boucle foreach ?

J'ai fais cela, mais je pense que c'est pas trop juste:
$clefs = array_keys ($_POST);

for($i=0;$i<sizeof($clefs);$i++) 
    {
		$val = 	$clefs[$i] ;		
		$$val = $val ;	
	
    } 

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 15:42
par sirakawa
"Et loquaces, muti sunt..."
C'est pourtant simple si on a compris $$
http://fr2.php.net/manual/fr/language.v ... riable.php
<?PHP
$_POST['nom'] = "le nom";
$_POST['prenom'] = "le prenom";
$_POST['surnom'] = "le surnom";

$clefs = array_keys ($_POST);
/* une fois rendue là, tu as un tableau contenant tes futurs noms de variables... $clefs*/
 print_r($clefs);
 foreach($clefs as $clef) // pour chaque élément du tableau $clefs
{	
	$nom_var = "$clef";
	$$nom_var = $_POST[$clef];
}
 print "$nom";
print "$prenom"; 
 ?>

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 15:51
par gesualda
Merci, je pense en effet, que j'avais pas très bien saisi cette partie. Je vais retravailler.

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 17:37
par Ryle
Euh... sinon y a la fonction extract() ;)

Re: Tableau $_POST en array, vide !

Posté : 18 mars 2012, 21:07
par sirakawa
Juste et mille plus simple,: extract au lieu de s'embêter avec mon double "bémol". J'ai été incapable de retrouver son nom, découvert assez récemment, alors que depuis dix ans au moins, j'extrais mes $_POST un par un...

http://fr2.php.net/manual/fr/function.extract.php
mais je ne suis pas sûr que cette fonction qui n'est référencée que dans les fonctions de tableaux soit facile à dénicher quand on a des soucis avec les $_POST (même si, et je le sais, ce sont des tableaux) : au moins une contribution dans l'article $_POST aiderait.