IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

syntaxe des variables [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut syntaxe des variables
    Bonjour à tous,

    Je possède dans mon code un certain nombres de variables de la forme
    $data1
    $data2
    .
    .
    $data20

    Si je souhaite par exemple afficher toutes ces variables, je souhaiterai faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ($i = 0; i <= 20; $i++)
    {echo $data$i;}
    Mais à priori, ca marche pas...
    une idée de la syntaxe correcte?

    Merci!

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Bon, je vais être obligé de détailler un peu plus car j'ai un problème étonnant....
    En fait, je recupere des datas par php sur une base SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    while($data = mysql_fetch_assoc($req))
    	{...}
    Le contenu de chaque ligne va me renvoyer le tableau suivant:
    $data['CODE_ARTICLE_1'] $data['CODE_ARTICLE_2'] $data['CODE_ARTICLE_3']

    Je veux ensuite traiter ces élements dans une boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (i=1; i <=3; i++) {
    echo ${'data[\'CODE_ARTICLE_'.$i.'\']'};
    Et j'ai le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: data['CODE_ARTICLE_1']
    Pourtant, si je modifie le code en demandant l'affichage de la variable écrit en "dur" , Là, ca fonctione....:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $data['CODE_ARTICLE_1'];

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Le contenu de chaque ligne va me renvoyer le tableau suivant:
    $data['CODE_ARTICLE_1'] $data['CODE_ARTICLE_2'] $data['CODE_ARTICLE_3']
    Est-ce réellement cela que tu as dans cette table ?
    C'est à dire :
    "une_table"
    CODE_ARTICLE_1 | CODE_ARTICLE_2 |CODE_ARTICLE_3 | etc ...

    Si c'est le cas il y a théoriquement une erreur de conception (le phénomène de répétition des champs est assez caractéristique en général).

    Si pour 1 donnée on l'associe à n (plusieurs) autres données, raison de plus si n est variable, il vaut mieux "sortir" ces n données dans une autre nouvelle table.

    Exemple simple/typique : On a une table "categories", et pour 1 catégorie on associe n produits.
    De plus, le nombre de produits par catégories est variable.

    On va alors créer une table "categories_produits" pour pouvoir représenter cette relation de 1 à plusieurs.
    (On ne va pas ajouter dans la table categories des champs : produit_1 | produit_2 | produit_3 | etc ... ce serait une erreur de conception).


    Si, de ton coté pour 1 article il y a plusieurs codes d'articles associés, alors théoriquement il faudrait créer une table "articles_codes" pour enregistrer les différents codes d'articles.
    table "articles_codes" : (champs) id_article | code
    Ou alors : table "articles_codes" : (champs) id_code | id_article | code



    Faudrait peut être éclaircir ce point.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Cela serait compliqué d'expliquer ma table....
    Mais je peux assurer que la conception est correcte.

    Si cela peut te permettre de m'aider sur le probleme, considere que les champs CODE_ARTICLE_1 devienne RESULTAT_1 etc....

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Cela serait compliqué d'expliquer ma table....
    Mais je peux assurer que la conception est correcte.
    Je pense que tu ne prend les choses dans le bon sens.
    Justement, ça doit surement intéressé plus d'un de savoir pourquoi une erreur de conception ne le serait pas, car cela y ressemble comme 2 gouttes d'eau.
    Prendre le temps de l'expliquer (ne serait-ce qu'un peu) tout comme les membres ici t'accordent un peu de leur temps pour t'apporter une aide aurait été le minimum.
    N'oublie pas qu'un forum d'entraide marche dans les 2 sens, c'est même sa vocation 1ère.

    Un simple copier/coller de la structure d'une table ici suffit dans la majorité des cas de comprendre la conception.
    Ca prend 2 minutes, ce n'est pas le bout du monde.


    Pour information, il y a des Normes : 1 NF, 2NF, 3NF, 4NF, 5NF.
    La conception de ta Bdd ne serait pas 3NF (3ème forme normale).
    Un lien : Normalisation des noms des objets des bases de données

    Ceci dit, il arrive que l'on conçoit mal volontairement, bien souvent c'est pour une raison de performance, de diminuer le nombre de requête SQL.
    Mais quand une Bdd est mal conçue, c'est l'applicatif qui trinque, devient plus complexe et plus lourde car des traitements supplémentaires seront à faire pour palier à ça.

    Faut donc savoir à l'avance les conséquences pour ne pas faire erreur.
    Mais encore faut-il savoir mal concevoir correctement.
    Tout cela sous entend que lorsqu'on a les connaissances suffisantes pour mal concevoir volontairement on saura faire le code applicatif.
    Vu que ce n'est pas le cas, je reste étonné.


    Bref ... personnellement je demande à voir où serait cette grande complication où on ne serait pas capable de le comprendre.


    Au faite, un simple foreach() dans la boucle (while) suffit pour parcourir les éléments de la table.
    Pour info, les fonctions mysql_* sont obsolètes, vouées à disparaitre.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 14
    Points
    14
    Par défaut variables php dynamiques
    Salut,

    Pierricktpt, Au lieux d'écrire :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=1; i <=3; i++) {
    echo ${'data[\'CODE_ARTICLE_'.$i.'\']'};

    On peut écrire, par exemple :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=1; i <=3; i++) {
    echo ${'data'}['CODE_ARTICLE_'.$i];

    En reprenant ton code, cela me donnerait :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $data_1 = array(
    	'CODE_ARTICLE_1'=>'A1',
    	'CODE_ARTICLE_2'=>'A2',
    	'CODE_ARTICLE_3'=>'A3',
    );
     
    $data_2 = array(
    	'CODE_ARTICLE_1'=>'B1',
    	'CODE_ARTICLE_2'=>'B2',
    	'CODE_ARTICLE_3'=>'B3',
    );
     
    for ($index=1; $index <=2; $index++) {
    	for ($i=1; $i <=3; $i++) {
    		echo ${'data_'.$index}['CODE_ARTICLE_'.$i] . ', ';
    	}
    }


    Bonne journée,

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Bon, je vais être obligé de détailler un peu plus car j'ai un problème étonnant....
    En fait, je recupere des datas par php sur une base SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while($data = mysql_fetch_assoc($req))
    	{...}
    Pourtant, si je modifie le code en demandant l'affichage de la variable écrit en "dur" , Là, ca fonctione....:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $data['CODE_ARTICLE_1'];
    Comme ceci peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while($data = mysql_fetch_assoc($req)) {
        foreach ($data as $code_article) {
            echo $code_article.'<br />';
        }
    }
    Devrait afficher :
    RESULTAT_1
    RESULTAT_2
    RESULTAT_3
    ... etc ...
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Merci pour votre aide.
    Avec vos indications, j'ai pu résoudre mes problèmes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PB: Syntaxe pour mettre des variables dans un LIKE %..% ?
    Par $p00ky dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/11/2007, 22h37
  2. Syntaxe d'url d'image avec des variables
    Par foxofx dans le forum Langage
    Réponses: 3
    Dernier message: 17/04/2007, 22h16
  3. syntaxe requete mysql avec des variables
    Par harlock59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/09/2006, 17h53
  4. Problème de syntaxe pour concaténer des variables
    Par renaud26 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/09/2006, 09h44
  5. [Tableaux] Syntaxe pour transmettre des variables
    Par kilkikou dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo