problème create_function

Petit nouveau ! | 4 Messages

17 févr. 2007, 00:42

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?

ViPHP
ViPHP | 928 Messages

19 févr. 2007, 11:59

Simple question : pourquoi utiliser create_function() si tu ne créés par une fonction avec un contenu dynamique ?

Petit nouveau ! | 4 Messages

19 févr. 2007, 12:47

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à.

ViPHP
ViPHP | 928 Messages

19 févr. 2007, 15:34

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).

Petit nouveau ! | 4 Messages

19 févr. 2007, 20:51

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.

Petit nouveau ! | 4 Messages

19 févr. 2007, 21:53

si on regarde bien entre le deux déclarations l'une utilise getCodeDiplomeNAME($link,$val) et l'autre getCodeEtapeNAME($link,$val)

ViPHP
ViPHP | 4674 Messages

20 févr. 2007, 01:07

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.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ekobo
Invité n'ayant pas de compte PHPfrance

05 mars 2007, 22:42

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