comment executer une fonction PHP stockee dans une variable????? (PHP) - Programmation
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"
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!...
Marsh Posté le 14-06-2001 à 15:31:05
merde
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 !!!
Marsh Posté le 14-06-2001 à 15:56:26
SISI, c'est possible avec eval() !
Code :
|
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
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
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]
Marsh Posté le 14-06-2001 à 18:04:51
aidez moi ou je vais peter un cable
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
j'vais m'faire moine si ca continue !!!!!!
Marsh Posté le 18-06-2001 à 09:27:39
svp
Marsh Posté le 18-06-2001 à 14:23:37
pitie
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)!
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
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
j'arrive a generer ma condition comme un grand, mais du coup, elle est stockee dans une variable, d'ou mon topic ...
voila
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
}
Marsh Posté le 18-06-2001 à 17:34:37
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 (j'suis un peu claque a cette heure ci )
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!
Marsh Posté le 14-06-2001 à 15:09:09
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 car c'est dans une variable en texte.
Sauriez vous m'indiquer une solution svp
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