Page 1 sur 1

problème create_function

Posté : 17 févr. 2007, 00:42
par ekobol
bonjour a tous,

je travaille avec une base mysql.
J'ai fait une fonction toute bète ligneTab() qui prend un type array en entrée et mais les balises entre chaque élément nécessaire pour afficher dans une ligne d'un tableau.
Maintenant j'essaye de faire une fonction dans laquelle je récupérer des informations sur la table sélectionner en fonction de quoi je créer le array a transmettre à la première fonction. Mais a l'affichage je reçoit un Function name must be a string in....
Je n'ai rien trouver qui ce rapproche de mon problème donc si vous pouvez m'aider merci d'avance.

Code : Tout sélectionner

if ($table==$MYSQLCFG['cremiCodediplomeRelationTable']) { ligneTab(array('code','Code diplome','niveau')); $ligne=create_function('$val,$link','return array($val,getCodeDiplomeNAME($link,$val),getCodediplomeLevel($link,$val));'); $requete= ("DELETE FROM ".$_POST['table']." WHERE ".Array2Char("CODE", $selec)); ///////////////////////////////////////////////codeetape_relations } else if ($table==$MYSQLCFG['cremiCodeetapeRelationTable']) { ligneTab(array('code','code Etape','niveau')); //$ligne=create_function('&val,$link','return (array($val,getCodeetapeNAME($link,$val),getCodeetapelevel($link,$val)));'); $requete= ("DELETE FROM ".$_POST['table']." WHERE ".Array2Char("CODE", $selec)); } foreach ($selec as $valeur){ ligneTab($ligne($valeur, $link)); }
p.s. : Je pense que problème vient de la fonction array() dans create_function() d'aprés ce que j'ai lu mais est-ce le cas et comment le contourner?

Posté : 19 févr. 2007, 11:59
par Genova
Simple question : pourquoi utiliser create_function() si tu ne créés par une fonction avec un contenu dynamique ?

RE:

Posté : 19 févr. 2007, 12:47
par ekobol
Comment ça un contenu dynamique?
En fait la sur la partie du code que j'ai montrer je ne teste que deux tables et il se trouve que ça ne change rien mais aprés il y en aura plus et la fonction changera.
Si c'est ça ta question.
voilà.

Posté : 19 févr. 2007, 15:34
par Genova
Pour ne pas créer une fonction alors tout simplement, au lieu de

Code : Tout sélectionner

create_function('$val,$link','return array($val,getCodeDiplomeNAME($link,$val),getCodediplomeLevel($link,$val));');
tu te fais une fonction

Code : Tout sélectionner

function ma_fonction($val, $link) { return array($val,getCodeDiplomeNAME($link,$val),getCodediplomeLevel($link,$val)); }
ça marchera au moins.

create_fonction() est fait pour créer des fonctions dont le contenu est variable surtout (ou bien pour créer des callback).

Posté : 19 févr. 2007, 20:51
par ekobol
en fait en fonction de la tableau les éléments de la fonction que je met dans la tableau peuvent être totalement différents. Pas seulement la valeur de $val mais aussi le nombre d'éléments que par exemple que je met dans le tableau.
En clair j'ai brsoin de créer une fonction dynamique.

Posté : 19 févr. 2007, 21:53
par ekobol
si on regarde bien entre le deux déclarations l'une utilise getCodeDiplomeNAME($link,$val) et l'autre getCodeEtapeNAME($link,$val)

Posté : 20 févr. 2007, 01:07
par Hywan
Et si tu créais tes fonctions de façon statique, avec un appel par callback (je pense à call_user_func_array(); par exemple).

En utilisant call_user_func_array();, tu peux passer des arguments facilements, sous forme de tableaux.

J'ai pas très bien saisi ton code, mais jvoulais juste te donner cet élément de réponses ^^


Doc :
* fonction call_user_func_array(); sur PHP.net.

merci

Posté : 05 mars 2007, 22:42
par ekobo
merci à tous .
en fait l'erreur été vraiment idiote,
j'avais encapsuler une variable et sa a poser des problèmes au moment du test, du coup je ne passais pas par create_function et forcemment il y avai problème