Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2008, 08h17   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 49
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
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 :
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 :
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.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 08h58   #2
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
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?
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 09h23   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 49
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
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

renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 10h33   #4
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
et call_user_func ? http://no2.php.net/manual/fr/functio...-user-func.php
Code :
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 :
call_user_func($row[0]);
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 12h59   #5
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 49
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
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 :
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.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 14h46   #6
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
le 2nd paramètre est optionnel. ça dépend si la fonction callback en a besoin ou pas.
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h21.


 
 
 
 
Partenaires

Hébergement Web