(PHP) comment executer une fonction PHP stockee dans une variable?????

comment executer une fonction PHP stockee dans une variable????? (PHP) - Programmation

Marsh Posté le 14-06-2001 à 15:09:09    

:hello:
 
bon, le sujet du topic n'est pas tres clair alors je vais developper :
 
je dois faire une condition sur des champs qui sont generes "dynamiquement" par une boucle en fonction d'un nombre
 
du coup, j'ai ete oblige de generer ma condition par une portion de script QUI ATTERIT DANS UNE VARIABLE. Cela marche tres bien : j'obtiens exactement ce que je devrais taper.
 
Par contre, c'est la ou ca coince, c'est que je n'arrive pas a dire a PHP d'executer ca :cry: car c'est dans une variable en texte.
 
Sauriez vous m'indiquer une solution svp :sweat:
 
merci d'avance ! :)  
 
++

 

[edit]--Message édité par Batman-Fr--[/edit]


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 14-06-2001 à 15:09:09   

Reply

Marsh Posté le 14-06-2001 à 15:14:24    

ca m'étonnerai un peu que ce soit possible...
quoi qu'il en soit il est certain que tu peux faire autrement... c'est pas une bonne facon de programmer ça....
 
sorry pour ce message plein de "pas de solution"

Reply

Marsh Posté le 14-06-2001 à 15:18:25    

d'accord avec nolive, space ta façon de programmer?
A mon avis ya moyen autrement. Sinon je crois pas non plus que ce soit possible.
DESOLE!...

Reply

Marsh Posté le 14-06-2001 à 15:31:05    

merde :cry:
 
comment je dois faire alors pour generer l'interieur de mon if vu que le nombre de variables varie en fonction d'un nombre ?????
 
j'veux mourir !!!


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 14-06-2001 à 15:56:26    

SISI, c'est possible avec eval() !
 

Code :
  1. <?php
  2. $toto = 'if ( $a == 1 ) { Echo "Première possibilité.<br>"; }else{ ECHO "Autre cas !<BR>"; }';
  3. $a = 1;
  4. eval( $toto );
  5. $a=2;
  6. eval( $toto );
  7. ?>


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 14-06-2001 à 16:03:13    

Bon Mara's dad a déja répondu. Mais je suis d'accord avec les autres,c 'est une mauvaise façon de programmer.
De plus php permet une manipulation tres souple des variables:
 
$a = "bonjour";
$$a = "monde";    <=> $bonjour = "monde";
echo "$a ${$a}";  <=> echo "$a $bonjour";
 
avec ça, tu peux TOUT faire.
 
Voir la doc a ce sujet

Reply

Marsh Posté le 14-06-2001 à 16:52:21    

merci de votre aide :)
 
le probleme, c'est que le nombre de variables inclues dans la condition varie en fonction d'un nombre donc je ne vois pas comment cette (enorme) possibilite peut m'aider :??:
 
en tout cas, eval ne fonctionne pas dans mon script :cry:
 
il semblerait que le if( ....... ) ne soit pas pris en compte car IE m'affiche une erreur a la ligne ou je tape le "else" (a la fin du script) de mon "if" inclu dans ma variable
 
voici mon script, au cas ou :( :
 
// GENERATION DE LA CONDITION
if ($nb_enf > '0' )
 {
 if ($conjoint == "conjoint_oui" )
  $condi = "if ( empty(\$dn_jour_c) || empty(\$dn_mois_c) || empty(\$dn_annee_c) || ";
 else
  $condi = "if ( ";
 
 for ($i = 1; $i <= $nb_enf ; $i++)
  {
  $var="dn_jour_e" .$i;
  if( isset( $var ) )  
   {
   $tmp_jour = $var;
   }  
   
  $var="dn_mois_e" .$i;
  if( isset( $var ) )  
   {
   $tmp_mois = $var;
   }  
 
  $var="dn_annee_e" .$i;
  if ( isset( $var ) )  
   {
   $tmp_annee = $var;
   }  
 
  $condi = $condi ."empty(\$" .$tmp_jour ." ) || empty(\$" .$tmp_mois ." ) || empty(\$" .$tmp_annee ." )";
   
  if ($i < $nb_enf)
   $condi = $condi ." || ";
  }
 $condi = $condi ." ) {";
 }
// FIN
echo "condi = $condi<br>";
 
 
 
eval ( $condi );
//if ( empty($dn_jour_c) || empty($dn_mois_c) || empty($dn_annee_c) || empty($dn_jour_e1) || empty($dn_mois_e1) || empty($dn_annee_e1) || empty($dn_jour_e2) || empty($dn_mois_e2) || empty($dn_annee_e2) )

//{
 
/* TEST SUR LE PARAMETRE "FIRST" QUI VERIFIE SI C'EST LE PREMIER AFFICHAGE DE LA PAGE */
if ( !isset($first))
 echo"<img src='../images/adhesion/pt%20exclam.jpg' width='36' height='31'> Vous n'avez pas rempli tous les champs<br>";
 
?>
<form method="post" action="adhesion_dx.php" name="form_adh_val">
  <?php
 
echo"<input type='hidden' name='typ_gar' value='$typ_gar'>";
echo"<input type='hidden' name='typ_reg' value='$typ_reg'>";
echo"<input type='hidden' name='dn_jour' value='$dn_jour'>";
echo"<input type='hidden' name='dn_mois' value='$dn_mois'>";
echo"<input type='hidden' name='dn_annee' value='$dn_annee'>";
echo"<input type='hidden' name='conjoint' value='$conjoint'>";
echo"<input type='hidden' name='nb_enf' value='$nb_enf'>";
?>  
 
<?php
if ($conjoint == "conjoint_oui" )
{
?> <font face="Times New Roman, Times, serif" size="3"><b>VOTRE CONJOINT (E) :<br></b></font><font face="Times New Roman, Times, serif" size="3"><?php if( (empty($dn_jour_c) || empty($dn_mois_c) || empty($dn_annee_c)) && ( !isset($first))) echo"<img src='../images/adhesion/fl_red.gif'>";?>  
          date de naissance  
          <input type="text" name="dn_jour_c" size="3" maxlength="2" value="<?php if(isset($dn_jour_c)) echo "$dn_jour_c"; ?>">
          /  
          <input type="text" name="dn_mois_c" size="3" maxlength="2" value="<?php if(isset($dn_mois_c)) echo "$dn_mois_c"; ?>">
          /  
          <input type="text" name="dn_annee_c" size="6" maxlength="4" value="<?php if(isset($dn_annee_c)) echo "$dn_annee_c"; ?>">
  <font size="2">( jj / mm / aaaa )</font><br>
  </font>
 
<?php
}
 
if ($nb_enf > 0)
 {
 if ($nb_enf == 1)
  echo"<br><font face='Times New Roman, Times, serif' size='3'><b> DATE DE NAISSANCE DE VOTRE ENFANT ( jj / mm / aaaa )</font><br><br>";
 else
  echo"<br><font face='Times New Roman, Times, serif' size='3'><b> DATE DE NAISSANCE DE VOS ENFANTS ( jj / mm / aaaa )</font><br><br>";
 }
 
for ($i = 1; $i <= $nb_enf; $i++)  
 {
 echo"enfant $i : ";
 echo"<input type='text' name='dn_jour_e$i' size='3' maxlength='2'> / ";  
 echo"<input type='text' name='dn_mois_e$i' size='3' maxlength='2'> / ";  
 echo"<input type='text' name='dn_annee_e$i' size='6' maxlength='4'> <br>";
 }
 
?>
 
<br>
<input type="submit" name="submit" value="Calculer">
<input type="reset" name="reset" value="Effacer">
</form>
<?php
}
 
else  /* IF N°2 */  
{
......
 
je precise que le "if" mis en commentaire en dessous de mon "eval" est exactement la meme chose que ce que contient ma variable $condi sauf qu'a la fin de $condi j'ai ajoute l'accolade ouvrante de mon "if" car je croyais que le pb venait de la au debut.

 

[edit]--Message édité par Batman-Fr--[/edit]


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 14-06-2001 à 18:04:51    

:hot:
 
aidez moi ou je vais peter un cable :cry:
 
j'ai beau triturer le code, ca marche tjrs pas :(
 
la chaine $condi contient le code correct mais PHP ou le navigateur ne semble pas voir le "if (....) {" alors qu'il est bien la !!!
 
lorsque je tape la condition a la main , l'"echo" de $condi est parfait :cry:
 
j'vais m'faire moine si ca continue !!!!!!


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 18-06-2001 à 09:27:39    

svp
 
:sweat:


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 18-06-2001 à 14:23:37    

pitie :D


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 18-06-2001 à 14:23:37   

Reply

Marsh Posté le 18-06-2001 à 15:12:19    

Y'a rien après ton accolade dans $condi ? Dans ce cas, c'est normal que ça marche pas.
C'est quoi que tu veux faire exactement ? (en francais)!

Reply

Marsh Posté le 18-06-2001 à 16:53:01    

merci de faire revivre mon topic :)
 
alors bon, tu viens de me faire ouvrir les yeux : j'avais pas pense qu'il n'irait pas chercher la suite de la condition qui se trouve apres le "eval" :(
 
je vais essayer de tout passer dans le "eavl"
 
ce que je veux faire ?
 
bah je veux tester  des variables mais le probleme, c'est que le nombre de ces variables varie en fonction d'un formulaire. Pire, leur nom varie en fonction de leur nombre :lol:
 
pour eclairer la situation : mon formulaire demande un nombre d'enfant. Pour ces enfants, je demande a l'utilisateur leur date de naissance. Mon formulaire affiche donc pour chaque enfant 3 champs de formulaire : 1 pour son jour de naissance, l'autre pour son mois de naissance et l'autre pour son annee de naissance.
 
Ce qui fait $dn_joue_eX ; $dn_mois_eX ; $dn_annee_eX
 
ou X represente le numero de l'enfant !
 
on en arrive a mon probleme : je veux verifier que l'utilisateur a bien renseigne les champs des dates de naissance : je fais donc un test sur chacun. Mais vu que je ne peux connaitre leur nombre, je suis oblige de passer par la generation "dynamique" de ma condition par le script :o
 
j'arrive a generer ma condition comme un grand, mais du coup, elle est stockee dans une variable, d'ou mon topic ...
 
voila :)


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 18-06-2001 à 17:09:03    

eh bien, c'est comme je t'ai dit dans mon premier post.
Tu peux utiliser les "variables dynamiques " de php
 
Pour ton probleme :
for($i = 0; $i < nombre d'enfants; $i++) {
   $var = 'dn_joue_e' . $i; // SANS LE '$'
   echo ${$var}; // => sort le contenu de $dn_joue_e1 quand $i = 1
}

Reply

Marsh Posté le 18-06-2001 à 17:34:37    

:hello:
 
cela ne me sert que pour creer mes noms de variables a verifier non ? ou bien j'ai rien compris ?
 
si c'est bien le cas, pour ca, il n'y a pas de prob, j'y arrive tres bien (du moins, je pense)
 
j'suis desole, j'ai l'impression de rien comprendre a vos infos :cry: (j'suis un peu claque a cette heure ci :()


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 18-06-2001 à 17:47:55    

Largo a écrit a écrit :

eh bien, c'est comme je t'ai dit dans mon premier post.
Tu peux utiliser les "variables dynamiques " de php
 
Pour ton probleme :
for($i = 0; $i < nombre d'enfants; $i++) {
   $var = 'dn_joue_e' . $i; // SANS LE '$'
   echo ${$var}; // =>sort le contenu de $dn_joue_e1 quand $i = 1
}




 
j'ai rien à ajouter! :)
ah si: dors!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed