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 :

Un nom de fonction dans une table SQL pour ordre d'affichage


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Un nom de fonction dans une table SQL pour ordre d'affichage
    Bonjour à tous,

    Comme l'indique le titre, j'aimerais stocker le nom d'une fonction dans une table qui comprendrait aussi un "poids".
    Le but étant d'afficher sur ma page les-dites fonctions dans l'ordre défini par le poids.
    Exemple : sur ma page j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    function mafunction1(){
    xxx code fonction
    }
     
    function mafunction2(){
    xxx code fonction
    }
    etc jusqu'à 4

    Dans la table :
    fonction | poids
    mafunction1() | 1
    mafunction2() | 3
    mafunction3() | 4
    mafunction4() | 2


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $sql = mysql_query("SELECT fonction from table ORDER BY poids");
    while($row = mysql_fetch_row($sql)){
    $row[0];
    }
    Selon les quotes que je mets autour du résultat, ou le echo, j'obtiens 'mafunction1()' en clair...ou rien du tout.

    Une idée, une atsuce ? ou impossible à faire ?
    Merci d'avance.
    __________________
    Ils ne savaient pas que la chose était impossible...alors ils l'ont faite.

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    dans ta table, tu stockes la fonction et son code ou bien juste son nom pour pouvoir l'appeler?
    et tu veux qu'elles s'exécutent dans la boucle while?
    Est ce qu'un eval pourrait t'aider?

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Dans ma table, je stocke seulement le nom. La fonction et son code, elle, est sur la page. Et oui, je voudrais, dans la boucle while, afficher (exécuter) les fonctions dans l'ordre voulu.
    J'ai testé eval($row[0]);
    mais ça me retourne l'erreur :
    Parse error: parse error in c:\program files\easyphp1-8\www\site-test\index.php(23) : eval()'d code on line 1


  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    et call_user_func ? http://no2.php.net/manual/fr/functio...-user-func.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      	<?php 
     
      	function hello($t){
      		echo 'coucou de hello<br>'.$t;
      	}
     
      	call_user_func('hello','julien');
     
    ?>
    le code ci-dessus fonctionne.
    qu'en est-il si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call_user_func($row[0]);

  5. #5
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bingo ! ça fonctionne impec !

    Il m'a semblé que, dans la boucle, call_user_func() avait besoin d'un 2ème param... j'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    $i=0;
    while($aff = mysql_fetch_row($sql)){
    call_user_func($aff[0], $i);
    $i++;
    }
    Et c'est tout simplement parfait.
    Merci encore et bonne journée.

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    le 2nd paramètre est optionnel. ça dépend si la fonction callback en a besoin ou pas.

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

Discussions similaires

  1. [SQL] fonction en php qui count() dans une table sql
    Par Draner dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/09/2007, 09h12
  2. Réponses: 5
    Dernier message: 16/06/2006, 11h19
  3. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  4. Réponses: 7
    Dernier message: 27/01/2006, 15h57
  5. Nom de Champ dans une table pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 6
    Dernier message: 30/10/2004, 13h28

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