problème create_function

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème create_function

merci

par ekobo » 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

par Hywan » 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.

par ekobol » 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)

par ekobol » 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.

par Genova » 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).

RE:

par ekobol » 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à.

par Genova » 19 févr. 2007, 11:59

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

problème create_function

par ekobol » 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?