Creation de variable dynamique

Résolu
emlesna Messages postés 27 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 5 juin 2008 - 7 mai 2008 à 09:37
emlesna Messages postés 27 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 5 juin 2008 - 14 mai 2008 à 15:45
Bonjour,

Voici ma question :

J'utilise une fonction qui récupère des valeurs de champs dans une  bdd
J'ai fait en sorte que les variable soient créées dynamiquement  pour sauter
le travail d'affectation.

Ce qui me donne :

<?php
function lire_bdd($id)
{   $query mysql_query("SELECT id_fiche, nom, adresse, ville FROM fiche_contact WHERE id_fiche $id")
   or die("Erreur SQL ! pendant l'acces a la table fiche_contact ".mysql_error());
  
   $row = mysql_fetch_array($query);

    while(list($key,$val) = each($row))
    {
        // création dynamique de la variable
        ${$key} = $val;
       
    }
 
}
?>

- Si je fait "echo $ville;" pour tester, j'obtiens :
=> " Undefined variable: ville in /home/.... "
=> mais également  l'affichage de sa valeur !!!!

-J'en déduis que l'erreur PHP se justifie par la non-déclaration des variables
mais qu'elle s'affiche néanmoins car elle existe.....

J'ai ajouté "@" devant, ce qui ignore l'erreur, mais  est-ce une véritable solution ?
Comment rendre accessible ces variables en dehors de la boucle "while" ?

Merci,

.|Anselme&co|.
A voir également:

8 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 mai 2008 à 19:55
Parce que faire un return dans la fonction ne règlera rien au problème... : il faudra retourner un tableau et elle n'aura jamais ses $nom, $ville etc.
3
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
7 mai 2008 à 11:32
Salut,

J'ai pratiqué cette manière de faire, pour affecter mes variables ...et cela fonctionne très bien !
$this->$key = $value ... // je travaille avec une class

Il y a peut-être un souci avec l'utilisation de mysql_fetch_array,  cfr : http://fr.php.net/manual/fr/function.mysql-fetch-array.php ?

Conseil : affiche dans un echo les valeurs de $key 

   while(list($key,$val) = each($row))
    {
        // création dynamique de la variable

        ${$key} = $val; 
        
      // vérifications :          echo ( "key $key , $key " . $$key ) ;

    }

Tiens moi au courant
0
emlesna Messages postés 27 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 5 juin 2008
7 mai 2008 à 14:18
Merci,

Voici ce que j'obtiens sur ma page web :

"key 0 , 0 2key id_fiche , id_fiche 2key 1 , 1 Rabouankey nom , nom Rabouankey 2 , 2 Anselmekey prenom , prenom Anselme...........

"
et pas d'erreur php.....

Ceci etant fait, comment restituer ces variables à la sortie de cette fonction.?
(Par exemple, dans la continuité de mon code, je souhaite utiliser directement $adresse, $ville, $nom)

.|Anselme&co|.
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
7 mai 2008 à 14:39
Bonjour

comment veux tu les utiliser ailleurs si tu n'as pas de return dans ta fonction?

-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
emlesna Messages postés 27 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 5 juin 2008
7 mai 2008 à 14:47
Pardon,

Comment formuler mon "return",
si tu préfère ?

Merci,




.|Anselme&co|.
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
7 mai 2008 à 15:07
http://fr.php.net/manual/fr/function.return.php



-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 mai 2008 à 19:54
Hello,

<?php
function lire_bdd($id)
{
    $aData = array();   $query mysql_query("SELECT id_fiche, nom, adresse, ville FROM fiche_contact WHERE id_fiche $id")
   or die("Erreur SQL ! pendant l'acces a la table fiche_contact ".mysql_error());
  
   $row = mysql_fetch_array($query, MYSQL_ASSOC);

    while(list($key,$val) = each($row))
    {
        // création dynamique de la variable
       $aData[$key] = $val;
       
    }
     return $aData;
}
extract(lire_bdd($id), <tt>EXTR_SKIP</tt>);
?>

Mais c'est moche comme façon de coder. Qu'est-ce qui t'empêche d'utiliser directement le tableau ?
0
emlesna Messages postés 27 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 5 juin 2008
14 mai 2008 à 15:45
Salut et merci à Malalam !

Toujours dans dans le même genre :
J'ai besoin de créer et initialiser des variables qui corespondent aux noms de colonnes d'une table de ma BDD
Je souhaite qu'elles existent mais que leur valeur soit nulle.

($nom; $prenom; $ville)

De la sorte je pourrai laisser mon code tel quel :

<?php
$form .= <label for="nom">Nom</label>
;
?>

sans afficher de message d'erreur  .

Voici où j'en suis :

<?php
//récupère tout les champs d'un table
$fields=mysql_list_fields('ma_bdd','ma_table');
// récupère le nombre de champs d'un table
$columns=mysql_num_fields($fields);

$aField = array();

for($i=0;$i<$columns;$i++)
{
// on affecte les valeurs du tableau
$aField[$i] = mysql_field_name($fields,$i);
}
?>

Oui, mais voilà,  je suis coinçé ...
Comment toucher mon but en partant de mon tableau $aField ?

Merci

.|Anselme&co|.
0