ecrire code php dans fichier

Invité
Invité n'ayant pas de compte PHPfrance

01 févr. 2008, 12:23

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.

Invité
Invité n'ayant pas de compte PHPfrance

01 févr. 2008, 12:36

en gros, je crois que tout ça se résume en "comment écrire une variable dans un fichier?"

d0m
Mammouth du PHP | 1141 Messages

01 févr. 2008, 12:37

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';

Invité
Invité n'ayant pas de compte PHPfrance

01 févr. 2008, 13:56

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

Petit nouveau ! | 2 Messages

01 févr. 2008, 14:23

Ce n'est pas le même problème?

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

d0m
Mammouth du PHP | 1141 Messages

01 févr. 2008, 14:37

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

Invité
Invité n'ayant pas de compte PHPfrance

01 févr. 2008, 14:40

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'];

d0m
Mammouth du PHP | 1141 Messages

01 févr. 2008, 14:45

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';

Invité
Invité n'ayant pas de compte PHPfrance

01 févr. 2008, 16:11

wow, c vicieux les quotes/double quotes! ok, j'essaye.

Invité
Invité n'ayant pas de compte PHPfrance

01 févr. 2008, 16:15

super, merci!