Une variable dans $row[variable?] en php [Fermé]

Signaler
Messages postés
6
Date d'inscription
lundi 27 août 2012
Statut
Membre
Dernière intervention
9 septembre 2015
-
nguizan
Messages postés
6
Date d'inscription
lundi 27 août 2012
Statut
Membre
Dernière intervention
9 septembre 2015
-
Bonjour,

Comme indiqué dans le le titre, je désire faire en sorte que le nom du champ que je récupère depuis ma base de données via php soit une variable tel que ci-dessous:

$row[$titre];

ça ne fonctionne évidemment pas.

Ceci me servira à faire varier le nom du champ en question afin que je puisse réupérer du texte dans des langues différentes provenant de la base de données.

Pour que ce soit un peu plus claire voici mon code:

<?php  
$title = "titre_".$lang; 
while($result = mysql_fetch_assoc($requete)) { ?> 

<li><a href="<?php echo($result['url'])?>"><?php echo $result["$title"];?></a></li> 

<?php   }  ?> 


La variable $lang est initialisée plus haut ainsi que la variable contenant la requête sql qui est un simple SELECT.

Merci de votre aide.

9 réponses

Messages postés
120
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
12 février 2013
13
Bonjour,

J'ai peut-être un code qui permette de résoudre le problème.

Je l'ai écrit lorsque je voulais faire des variables pour traduire certaines choses de mon site automatiquement.

$query='SELECT wording, text FROM translations WHERE lang="'.$lang.'"';
$result=mysql_query($query);
$translate=array();

while($data=mysql_fetch_assoc($result)){
	foreach($data as $k=>$v){
		if($k=='wording'){
			$temp=$v;
		}else{
			$translate[$temp]=$v;
		}
	}
}


Ainsi, si j'écris dans mon code :
$translate['home']
il me donnera en français "Accueil", en anglais "Home", etc.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86979 internautes nous ont dit merci ce mois-ci

Messages postés
553
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
9 juillet 2013
115
Bonjour,

la fonction MySQL "mysql_fetch_assoc" te met dans un tableau les résultats de ta requête, avec comme nom de colonne tes noms de champs SQL:

Par exemple, dans ta table, tu as un champs ID, NOM, PRENOM.
La fonction mysql_fetch_assoc va te retourner $result['ID'], $result['NOM'], $result['PRENOM'].

Tu ne peux pas définir toi meme tes noms de colonne sur un mysql_fetch_assoc. Si tu met $result["$title"] et que ton title vaut "COUCOU", PHP ne vas pas connaitre la colonne COUCOU parce qu'il n'y en a pas !


Messages postés
6
Date d'inscription
lundi 27 août 2012
Statut
Membre
Dernière intervention
9 septembre 2015

Merci Webster95 pour ta réponse mais je pense que je n'ai pas été assez claire dans ma question.

Ma variable $titre contient ceci:

$title = "titre_".$lang; 


et la variable $lang varie selon 3 extensions différentes, du coup ma variable $titre peut prendre les valeurs suivantes:

titre_fr, titre_en, titre_es

ces 3 valeurs correspondent aux champs de ma base de données. Je veux maintenant que la variable $titre soit utilisée avec $row[] j'ai essayé les façons suivantes:

echo $row["$titre"];
echo $row['$titre'];
echo $row[$titre];

j'ai même essayé:

echo $row["titre"].$lang;

Mais rien n'y fait, je ne suis pas certain qu'il y ait une solution de ce type, personnellement j'en ai une, ce serait de mettre tout ça dans un case et je suis quasi certain que ça va fonctionner mais c'est trop long à écrire j'aurais voulu une solution plus simple.

Merci encore pour ton aide..
Webster95
Messages postés
553
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
9 juillet 2013
115
Tu confond beaucoup de chose !
$title = "titre_".$lang; 


et la variable $lang varie selon 3 extensions différentes, du coup ma variable $titre peut prendre les valeurs suivantes: 


Tu veux parler de ta variable $title non ?


As-tu essayer de faire comme ceci:
echo $row["$title"]; 
Messages postés
6
Date d'inscription
lundi 27 août 2012
Statut
Membre
Dernière intervention
9 septembre 2015

Oui j'ai énuméré les test que j'ai fait dans mon précédent message et cette ligne en fait partie.

En effet en relisant mon message j'ai vu que j'avais confondu $title avec $titre et l'on parle bien ici de $title et non pas de $titre.

Ma question est en faite toute simple, je souhaite savoir s'il est possible d'une manière ou d'une autre de faire quelque chose comme ça:

echo $row[$title];


En sachant que ceci ne fonctionne pas et c'est la même chose si je rajoute des guillemets ou des côtes simples...

Merci d'avance si quelqu'un à la réponse
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
869
as tu bien mis

"SELECT * FROM ......

pour avoir tous tes champs
Messages postés
6
Date d'inscription
lundi 27 août 2012
Statut
Membre
Dernière intervention
9 septembre 2015

Bonjour Alain_42, j'ai en effet construit ma requête SELECT plus haut dans mon code mais j'ai peut être oublié de préciser que mon code fonctionne parfaitement lorsque je l'utilise de cette façon:

$row['nom_du_champ'];


En revanche je veux juste mettre une variable entre les crochets afin de pouvoir faire varier le champ de ma table MySQL ceci visant à changer la langue de mon site, j'ai construit un code qui change la langue tous les textes du site lorsque je clique sur le bon drapeau, exemption faite des textes qui sont chargés depuis la base de données et c'est très embêtant..

Merci pour vos réponses
Webster95
Messages postés
553
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
9 juillet 2013
115
$row["$title"]; ?

Quelle erreur s'affiche ?
Pourquoi pas simplement ?
$result[$title];
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
869
$result est un array donc en principe ça marche avec cette ecriture $result[$title]

mais essayes de mettre des traces
<?php   
$title = "titre_".$lang;  
while($result = mysql_fetch_assoc($requete)) { 
//pour voir le contenu réel de l'array $result  
echo '<br /><pre>'; 
print_r($result); 
echo '</pre>'; 
/// et le contenu de la variable $title pour pouvoir comparer de visu les index de l'array
echo "<br />Champ: ".$title."<br />"; 

?>  

<li><a href="<?php echo($result['url'])?>"><?php echo $result[$title];?></a></li>  

<?php   }  ?> 
Messages postés
6
Date d'inscription
lundi 27 août 2012
Statut
Membre
Dernière intervention
9 septembre 2015

Merci à tout le monde de m'avoir aidé et particulièrement à Tralala8 pour m'avoir transmis son code cela fonctionne, ce n'est pas ce à quoi je m'attendais mais ça me convient merci !