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 :

[Tableaux] déclaration variable dépendant d'une autre


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut [Tableaux] déclaration variable dépendant d'une autre
    bonjour à tous

    j'ai des soucis pour arriver à générer mes variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $nb = 1;
    $max = 8;
     
    while($nb != $max) {
      $sql.$nb = "SELECT lien,nom,image,largeur,hauteur,cat,souscat,datedoc
    	            FROM liens
                        where cat=2 and souscat=$nb";	
      $nb++;
    }
    je souhaiterai obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql1 = "SELECT lien,nom,image,largeur,hauteur,cat,souscat,datedoc
    	     FROM liens
    	     where cat=2 and souscat=1 ";
    etc...
    $sql7 = "SELECT lien,nom,image,largeur,hauteur,cat,souscat,datedoc
    	     FROM liens
    	     where cat=2 and souscat=7 ";
    mais ma syntaxe ne passe pas...

    comment dois je l'écrire?

    merci pour votre aide

  2. #2
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut Re: syntaxe déclaration variable dépendant d'une autre
    Citation Envoyé par mussara
    mais ma syntaxe ne passe pas...
    Salut, essaie :
    a+

  3. #3
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    malheureusement ça ne fonctionne pas..
    si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $nb = 1;
    $max = 8;
    while($nb != $max) {
      $sql{$nb} = "SELECT lien,nom,image,largeur,hauteur,cat,souscat,datedoc
    		      FROM liens
    		      where cat=2 and souscat=$nb";	
      echo $sql{$nb};	
    $nb++;
    }
    il me donne pour résultat SSSSSSS, à savoir 7 fois la 1ère lettre du "SELECT etc..."
    et le message d'erreur suivant, logique car j'essaie d'utiliser la variable $sql1,
    Notice: Undefined variable: sql1 in l:\weblocal\intranet\php\requete_liens.inc.php on line 50

  4. #4
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Salut, regarde ça, section variable dynamique :
    http://www.themanualpage.org/php/php_syntaxe.php

    En fait, il doit falloir passer par une variable de type string intermediaire.
    a+

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Les accolades sont utilisées pour accéder à une lettre précise d'une chaîne (pareil qu'avec les crochets, en somme) :/

    J'imagine que tu souhaites conserver tes requêtes dans un tableau de requêtes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql[$nb] = 'SELECT ...';
    [Edit] Considérez la différence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $sql{$nb}; // si $nb == 1
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ${'sql'.$nb}; // si $nb == 1

  6. #6
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut Re: syntaxe déclaration variable dépendant d'une autre
    Citation Envoyé par nako
    Salut, essaie :
    C'est plutôt :
    ${'sql' . $nb} ;
    Consultant idéaliste.

  7. #7
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    je viens de trouver à partir du tutorial donné:

    ma syntaxe devient cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while($nb != $max) {
    	$sql = 'sql'.$nb;echo $sql;
    	$$sql = "SELECT lien,nom,image,largeur,hauteur,cat,souscat,datedoc
    			FROM liens
    			where cat=2 and souscat=$nb";	
    	echo $$sql;	
    $nb++;
    }
    merci à tous

  8. #8
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Il vaut mieux travailler sur le nom de la variable que d'utilser des variables variables -> ${'sql' . $nb} ;
    Consultant idéaliste.

  9. #9
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    pourquoi?
    c'est en terme de logique de programmation que vous me dites ça?

    si tel est le cas, je vais utiliser la syntaxe ${'' . $increment};

  10. #10
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Parce que le jour où ta variable variable sera un array tu va avoir de drôles de comportements dans tes scripts...

    Citation Envoyé par php.net
    Afin de pouvoir utiliser les variables dynamiques avec les tableaux, vous avez à résoudre un problème ambigü. Si vous écrivez $$a[1], l'analyseur a besoin de savoir si vous parler de la variable qui a pour nom $a[1] ou bien si vous voulez l'index [1] de la variable $$a. La syntaxe pour résoudre cette ambiguÔté est la suivante : ${$a[1]} pour le premier cas et ${$a}[1] pour le deuxième.
    Donc vaut mieux s'habituer aux accolades.
    Consultant idéaliste.

  11. #11
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    c'est très clair
    merci beaucoup pour les explications

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Il y a eu une discussion à ce sujet sur #php de je ne sais plus quel serveur...

    Tous les admins étaient d'accord avec moi : il vaut mieux utiliser un tableau associatif contenant des cases à index variable plutôt qu'essayer de construre des variables à nom variable.

  13. #13
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Bonjour

    Je me permets de relancer ce sujet car j'ai un petit souci du même ordre :
    J'affiche un tableau dynamique (issu d'une base mysql) comportant une checkbox par ligne (j'ai mis la balise <form> avant le tableau et la balise </form après>).
    J'ai donc besoin de créer une variable de nom différent par case à cocher.

    Le problème, c'est que je n'arrive pas à la récupérer dans le tableau $_GET (et encore moins dans $_POST, qui refuse obstinément de se remplir mais c'est un autre problème).

    Si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_GET['box_vu_9GRENO'];
    il me répond bien
    mais si je lui mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $var = '$_GET[\'box_vu_'.$data[0].'\']';
    echo $$var;
    (avec $data[0] qui sort d'une base et qui vaut 9GRENO évidemment), il m'insulte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: $_GET['box_vu_9GRENO']
    Pourquoi donc ?
    Je suis preneur de toute solution/explication !

    Merci d'avance

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/05/2010, 18h10
  2. Réponses: 2
    Dernier message: 13/11/2008, 14h07
  3. Perl : nom de variable dépendant d'une autre
    Par nicolaskarp dans le forum Langage
    Réponses: 9
    Dernier message: 06/08/2007, 03h05
  4. [Tableaux] récupérer un tableau sur une autre page
    Par samsso2005 dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 22h58
  5. [Conception] récupération d'une variable php dans une autre page
    Par vali7 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2006, 11h19

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