Page 1 sur 1

problème de $$ dans un foreach

Posté : 02 sept. 2010, 12:25
par Ehplod
Bonjour,

Je cherche à faire une fonction qui me permettra de modifier à la volée mes données issue de ma bdd.

j'ai fais ceci qui fonctionne.
Je le place après mes mysqli_fetch_...
foreach($requete as $cle => $valeur)$requete[$cle] = nl2br(htmlentities(stripslashes($valeur), ENT_QUOTES, 'UTF-8'));
Je souhaite en faire une fonction pour l'appeler plus facilement.
Ceci ne fonctionne pas...
function PostAffichage($var){
foreach(${$var} as $cle => $valeur)${$var}[$cle] = nl2br(htmlentities(stripslashes($valeur), ENT_QUOTES, 'UTF-8'));
}
...
PostAffichage("requete")
Erreur sur le foreach et ce, que je mette ${$var} ou $$var

Re: problème de $$ dans un foreach

Posté : 02 sept. 2010, 13:11
par Nours312
ce qui ce passe, c'est qu'il n'y a pas de variable $requete dans ta function ...

as tu essayé de te servir de global

Re: problème de $$ dans un foreach

Posté : 02 sept. 2010, 13:57
par Ehplod
Euuuhhhh, j'ai pas compris.

J'essaie m'expliquer autrement :

si je fais une requêtes sql comme suit :
$requete = "Select Titre, ...."
$requete = mysql_query($requete)
$requete  = mysql_fetch_assoc($requete );
Ensuite, par exemple, echo $requete['Titre'] affichera L\'équateur

Moi, je veux qu'il affiche : L'équateur
pour cela, on fait :
echo htmlentities(stripslashes($requete['Titre']));
Je me simplifie en modifiant toutes les données via un foreach comme suit :
foreach($requete as $cle => $valeur)$requete[$cle] = htmlentities(stripslashes($valeur), ENT_QUOTES, 'UTF-8');
ainsi, on prend $requete['Titre'], on lui met htmlentities, stripslashes et on remet tout dans $requete['Titre'].

J'essaye d'en faire une fonction comme ceci mais, il faut que la variable envoyée soit utilisée comme nom de variable dans la fonction d'où les double dollar $$
function PostAffichage($var){
foreach(${$var} as $cle => $valeur)${$var}[$cle] = nl2br(htmlentities(stripslashes($valeur), ENT_QUOTES, 'UTF-8'));
}

Re: problème de $$ dans un foreach

Posté : 02 sept. 2010, 14:05
par stealth35
faut utiliser le global,
bon par contre tout çà c'est quand même hyper moche

bouclé sur le tableau sera plus simple,
$requete = PostAffichage($requete);

Re: problème de $$ dans un foreach

Posté : 02 sept. 2010, 14:52
par macgawel
J'essaye d'en faire une fonction comme ceci mais, il faut que la variable envoyée soit utilisée comme nom de variable dans la fonction d'où les double dollar $$
Là, c'est moi qui ne comprends pas :oops:
Pourquoi utiliser les $$ ?

Tu l'appelles comment, ta fonction ?
Perso, avec un tableau $requete à traiter, je ferais ça :
function PostAffichage($tableau){
	foreach($tableau as $cle => $valeur) {
		$tableau[$cle] = nl2br(htmlentities(stripslashes($valeur), ENT_QUOTES, 'UTF-8'));
	}
	return $tableau;
}

$array = Array ('clé1' => "val1", 'clé2' => 'val2');
$result = PostAffichage($array);
Sinon, il y a une fonction sympa en php :
array_map()

Re: problème de $$ dans un foreach

Posté : 02 sept. 2010, 15:53
par Ehplod
ok, je me prenais la tête pour rien...
Je cherchais à afficher dans ma fonction le nom du tableau alors que y a pas besoin... #-o