8792 sujets

Développement web côté serveur, CMS

Bonjour, je cherche à incrémenter le nom d'une variable en PHP. Mais il n'y à pas que ca.


Voici à quoi ressemble ma table

ID PHOTO NUMERO


J'ai 4 photo par ID représentée par numéro 1,2,3,4

dans une boucle While, je fais rentrer dans une variable nommée photo, le champ photo de la base de donnée.

donc photo1 serait égale à photo WHERE numero = 1
photo2 = photo WHERE numero = 2

Et je voudrais pouvoir le faire completement dynamiquement sans faire 4 requettes, tout en incrémentant le nom de la variable photo.

Une petite piste ? merci Bien
Modifié par ffwrude (05 Sep 2006 - 15:42)
Tu peux procéder ainsi :
$req = mysql_query('SELECT photo, numero WHERE id = '.$id.';', $idConnexion);
for($i = 0; $i < mysql_num_rows($req); ++$i)
{
	$res = mysql_fetch_assoc($req);
	eval('$photo'.$res['numero'].' = $res['photo'];');
}

Modifié par 84mickael (04 Sep 2006 - 20:17)
Pourquoi se compliquer la vie avec eval ?

${'photo'.$res['numero']} = $res['photo'];');

J'ai pas testé mais je suis quasiment sûr que ça marche.

EDIT : Je ne me suis pas trompé. php 4.3.x
Modifié par QuentinC (04 Sep 2006 - 21:19)
Possible, je ne connais pas cette syntaxe en tout cas. A mettre à la place de "mon" eval(...);, la version de Quentin corrigée Smiley lol :
${'photo'.$res['numero']} = $res['photo'];
Alors comment ça marche exactement ? A quoi servent les accolades ? Et pourquoi en mettre autour de photo, et pas seulement autour du numéro ?
Modifié par 84mickael (04 Sep 2006 - 21:22)
Administrateur
Bonjour,

Beaucoup de choses sont dynamiques en PHP: le contenu des variables évidemment, le nom des variables et même le nom des fonctions appelées.
Voir variables dynamiques (doc FR de PHP); le dernier paragraphe aborde ta dernière question.
Ici on affecte une valeur à une variable dont le nom est dynamique. Ce nom dynamique fait appel à l'indice 'numéro' du tableau $res
et non pas en plaçant les accolades autrement
à l'indice 'numero' d'un tableau de données dont le nom serait dynamique et ferait appel au contenu de la variable $res.
Modifié par Felipe (04 Sep 2006 - 21:47)

$req = mysql_query('SELECT photo, numero FROM photo WHERE id = '.$id.';');
for($i = 0; $i < mysql_num_rows($req); ++$i)
{
	$res = mysql_fetch_assoc($req);
	${'photo'.$res['numero']} = $res['photo'];


Voilà j'ai fait comme cela. et ca marche parfaitement.

Il suffit ensuite de rajouter les
 <? echo $photo1 ?> 

puis photo2 ect...

dans les balises img.

Merci à tous
Modifié par ffwrude (05 Sep 2006 - 15:40)