Page 1 sur 1

ecrire code php dans fichier

Posté : 01 févr. 2008, 12:23
par Invité
Bonjour à tous,

j'essaye de générer un fichier contenant du code php créé dynamiquement.
Dans mon fichier créé, je souhaite avoir le code suivant:
$fiche->marque= $values['marque'];
J'ai donc fait une concaténation pour mettre ça dans une var et l'insérer dans le fichier généré:
$validation .= "$fiche->" . $row1['nomvar'] . "=" . "$values['" . $row1['nomvar'] . "']; \n";
$row1['nomvar'] contient le mot "marque".
En testant, je reçois l'erreur
Parse error: syntax error, unexpected '"', expecting T_STRING in c:\program files\...
Voyez vous ce qui ne va pas?
Merci pour vos réponses.

Posté : 01 févr. 2008, 12:36
par Invité
en gros, je crois que tout ça se résume en "comment écrire une variable dans un fichier?"

Posté : 01 févr. 2008, 12:37
par d0m
Ton problème c'est les quotes apparement.
Ce qui est entre simple quote '.....' n'est pas interprété par PHP
Par contre ce qui est entre double quote "....." l'est.
$toto = 'salut';

echo "$toto";
//va afficher : salut

echo '$toto';
//va afficher : $toto
en résumé, pour mettre du code PHP dans une variable il faut mettre le code entre simple quote.
$validation .= '$fiche->' . $row1['nomvar'] . '=' . '$values[\'' . $row1['nomvar'] . '\']; \n';

Posté : 01 févr. 2008, 13:56
par Invité
merci pour ta réponse, ça résoud le pb. Par contre autre chose ressort.
Lorsque j'essaye d'insérer dans mon fichier le contenu de $validation en faisant:
$validation  = "function checkForm($values) \n";
Je reçois l'erreur "variable indéfinie" pour $values. Comment faire dans ce cas?
ma variable $values ne sera définie que lors de l'exécution du fichier php généré...

Posté : 01 févr. 2008, 14:23
par bill moruuv
Ce n'est pas le même problème?

passe en simple quote , et je pense que ca résoudra ton problème :wink:

Posté : 01 févr. 2008, 14:37
par d0m
merci pour ta réponse, ça résoud le pb.
Je ne pense pas, le problème c'est que tu ne sais pas quand mettre des simples et double quote.
$validation  = "function checkForm($values) \n";
tu mets ça entre double quotes donc
- PHP regarde ce qu'il y a dans la chaine
- il trouve $values qui est une variable PHP
=> il essaie de l'interpreter
=> il la trouve pas donc il ressort une erreur

Posté : 01 févr. 2008, 14:40
par Invité
ok pardon, ça marche effectivement.
Par contre, comment faire pour forcer les retours à la ligne dans mon fichier créé?
J'ai mis des \n dans la concaténation mais dans le fichier créée, j'obtiens ceci:
$fiche = new DataObject_inscription; \n$fiche->Array=$values['Array']; \n$fiche->Array=$values['Array']; \n$fiche->Array=$values['Array']; \n$fiche->Array=$values['Array']; \n$fiche->Array=$values['Array']; \n$fiche->Array=$values['Array'];

Posté : 01 févr. 2008, 14:45
par d0m
Toujours une histoire de quotes mais dans l'autre sens cette fois:
\n est un caractère qui représente le saut de ligne.

entre double quote, il est interprété comme un saut de ligne
entre simple quote il est interpreté comme la chaine \n

Si tu veux sauter une ligne dans ton fichier, c'est le saut de ligne qu'il faut lui passer donc entre doubles quotes :
$a_ecrire = 'premiere ligne'."\n".'deuxieme ligne'."\n".'derniere ligne';

Posté : 01 févr. 2008, 16:11
par Invité
wow, c vicieux les quotes/double quotes! ok, j'essaye.

Posté : 01 févr. 2008, 16:15
par Invité
super, merci!