courriers type.

Eléphanteau du PHP | 21 Messages

18 juin 2012, 17:37

Avec exactement le code que j'ai mis ? Si oui c'est bizarre moi ça fonctionne, si non montre ton code afin de trouver l'erreur.
Tu as bien mis l'echo comme moi dans l'eval ?

Mammouth du PHP | 702 Messages

19 juin 2012, 08:10

je dois dire que tu m'as bien aider, néanmoins j'ai encore certains problèmes,

en fait mon code est enregistré dans la base de donnée,

il faut savoir une chose c'est que j'ai une page qui me permet de générer mes courriers, (ce sont mes champs de fusions)

donc il faut que je trouves un autre artifice, car la lors de la génération je n'ai pas le $str= "
...
"

et pour concaténer les variables surtout toutes les variables je ne sais pas comment procéder car en fait dans mon générateur, j'ai mon champ ckeditor avec les boutons de mise en forme, puis mes chhamps de fusion qyui sont des input et avec un onclick dessus, addvalue, et mes champs sont enregistrés sous la forme $requete['nom_du_champs'].

donc concaténer tout ca, je vois pas comment surtout qu'après c'est ckeditor qui gère,

moi je fais juste le html entity decode.

ViPHP
xTG
ViPHP | 7331 Messages

19 juin 2012, 08:59

Depuis quand ckeditor fait le traitement côté serveur ? Ce n'est qu'un éditeur wysiwyg.
Tu as donc forcement un script PHP que tu as fait derrière ou bien l'un de tes collègues.

Mammouth du PHP | 702 Messages

19 juin 2012, 09:28

non ckeditor ne fais aucun traitment il transforme juste les caractères en leur code html

ViPHP
ViPHP | 2577 Messages

19 juin 2012, 11:54

Il me semble que tu dois saisir ton texte simplement en mettant {$debiteur['nom']} comme si c'était le nom du débiteur. cf http://www.php.net/manual/fr/language.t ... ing.simple pour le comportement de php avec les variables par rapport aux { et }

Ensuite tu récupères cela de ta base de données dans une variable ($lettre).
Tu remplaces les " par \" via $lettre str_replace('"','\\"',$lettre); // vérifier le résultat par un echo pour voir si on a bien \"
Tu constitue la commande PHP à utiliser :
$comnande = 'echo "'.$lettre.'";'
et tu fais l'eval()

Il faut transformer que les " pour que la commande puisse être correct mais rien d'autre. Comme si tu faisais echo "<p align=\"left\">toto</p>"; directement en PHP.

Ce que tu stockes dans ta base doit être du html normal avec du texte normal. C'est juste que {$debiteur['nom']} est un texte comme un autre que seul php comprendra lors de l'eval().

Mammouth du PHP | 702 Messages

19 juin 2012, 14:30

j'ai un soucis avec ckeditor et la base de donnée j'ai fais ça:
  <?php if(isset($_POST['enregistrer'])) {
	  
$sql="INSERT INTO courrier SET
code_lettre = '".$_POST['code_lettre']."',
type = '".$_POST['categorie']."',
contenu = '".html_entity_decode($_POST['editor1'])."',
titre = '".$_POST['titre']."'
";	  

echo $_POST['editor1'];
$result= mysql_query($sql) or die(__LINE__.mysql_error().$sql); 

  }
  
  ?>
et en dépit de tout il m'enregistre les caractères sous leur forme html alors que j'ai bien mis html entity decode.

Mammouth du PHP | 702 Messages

19 juin 2012, 14:43

je modifies ce que j'ai dis, le courrier s'affiche parfaitement, le soucis qui demeure c'est qu'avec cette commande ci:
eval('echo \''.$courrier['contenu'].'\';');
il m'affiche le courrier tel qu'il a été rédigé (avec les champs de fusions)
{$debiteur['nom']} {$debiteur['prenom']}
{$debiteur['adresse']}
{$debiteur['adresse2']}
{$debiteur['ville']} - {$debiteur['code_postal']}
{$debiteur['pays']}

 

Affaire: {$client['raison_sociale']}

c/ {$debiteur['nom']}

Nos Refs: {$creance['n_doss']}

Reference client: {$creance['ref_client']}

 

Maisons-Laffitte, le {date('d-m-Y')}

 

ATTESTATION 
Alors que normalement il devrait me remplacer les champs lors du eval non?

la il me les affiches en brut.

en fait le html est bien interprété mais pas le php

ViPHP
ViPHP | 2577 Messages

19 juin 2012, 14:56

eval('echo "'.$courrier['contenu']."';');

chaine avec des ", pas des ' pour permettre l'interprétation des variables.

Autrement, je te conseille
$commande = 'echo "'.$courrier['contenu']."';'
et eval($commande);

Ca permet de faire un echo $commande pour vérifier la syntaxe facilement. Vérifier dans le source de la page html !
Et pense à remplacer les " par \" dans $courrier['contenu'].

Remarque, dans ton exemple avec des ', c'est bizarre qu'il n'y ait pas d'erreur avec les ' des noms de colonne.

Essayes :
<?PHP
$debiteur['nom'] = 'toto';
echo 'debiteur : {$debiteur[\'nom\']}';
echo "debiteur : {$debiteur['nom']}";
?>

Je pense que tu ne connais pas la différence entre ' et ".

Mammouth du PHP | 702 Messages

19 juin 2012, 15:09

a vrais dire je ne connais pas la difference, je sais juste que lors des concaténation je suis amené à jongler entre les deux.

je pense que les doubles quotes servent à entourer des chaines de caractères uniquement, ou du moins en principal, je me trompes?

j'ai essayer ainsi $str= 'echo"'.$courrier['contenu'].'";'; eval($str);

mais j'ai tjs des problèmes au niveau des erreurs,

il me dit:
( ! ) Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\DOSSIERS\editer-courrier4.php(92) : eval()'d code on line 1
Call Stack
# Time Memory Function Location
1 0.0005 714736 {main}( ) ..\editer-courrier4.php:0


alors que dans DW je n'ai aucun message d'erreurs relatif à l'encodage./

Mammouth du PHP | 702 Messages

19 juin 2012, 15:16

ok a chaque fois j'ai un message d'erreur différent, en fait la j'ai ce message ci:

( ! ) Parse error: syntax error, unexpected '&', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\DOSSIERS\editer-courrier4.php(92) : eval()'d code on line 2
Call Stack
# Time Memory Function Location
1 0.0006 718952 {main}( ) ..\editer-courrier4.php:0

alors que j'utilises ce code ci
$lettre= $courrier['contenu'] ; $str= str_replace('"','\\"',$lettre); $commande = 'echo "'.$str.'";'; eval($commande);

Mammouth du PHP | 702 Messages

19 juin 2012, 15:24

lorsque je fais un echo $commande;
j'ai ça:
echo "
$debiteur['nom'] {$debiteur['prenom']}
{$debiteur['adresse']}
{$debiteur['adresse2']}
{$debiteur['ville']} - {$debiteur['code_postal']}
{$debiteur['pays']}

 

Affaire: {$client['raison_sociale']}

c/ {$debiteur['nom']}

Nos Refs: {$creance['n_doss']}

Reference client: {$creance['ref_client']}

 

Maisons-Laffitte, le {date('d-m-Y')}

 

ATTESTATION 

";

ViPHP
ViPHP | 2577 Messages

19 juin 2012, 15:37

Il faudrait regarder le source html dans le navigateur (code source de la page).

A mon avis, {$debiteur[&39;nom&39]} au lieu de {$debiteur['nom']} ca correspondrai bien à unexpected '&', (c'est pour ca le code source de la page)

Pour ce qui est de " et ', dans le cas de " php interprète le contenu (variables ou \n) et pour ' il prend la chaine tel quelle.


Edit : Attention pour le str_replace('"','\\"',$XXXX). Eventuellement voir entre \" \\" et \\\" lequel donne effectivement \" comme résultat.

Mammouth du PHP | 702 Messages

19 juin 2012, 15:41

ah pardon, j'ai donc cela:
echo "<p style=\"text-align: right; \">

	$debiteur['nom'] {$debiteur['prenom']}<br />

	{$debiteur['adresse']}<br />

	{$debiteur['adresse2']}<br />

	{$debiteur['ville']} - {$debiteur['code_postal']}<br />

	{$debiteur['pays']}</p>

<p style=\"text-align: right; \">

	 </p>

<p style=\"text-align: left; \">

	Affaire: {$client['raison_sociale']}</p>

<p style=\"text-align: left; \">

	c/ {$debiteur['nom']}</p>

<p style=\"text-align: left; \">

	Nos Refs: <strong>{$creance['n_doss']}</strong></p>

<p style=\"text-align: left; \">

	Reference client: {$creance['ref_client']}</p>

<p style=\"text-align: left; \">

	 </p>

<p style=\"text-align: right; \">

	Maisons-Laffitte, le {date('d-m-Y')}</p>

<p style=\"text-align: right; \">

	 </p>

<p style=\"text-align: center; \">

	<strong>ATTESTATION </strong></p>

";

Mammouth du PHP | 702 Messages

19 juin 2012, 15:42

j'ai fais le html entity decode, end épit de cela il m'affiche toujours les caractères html avec leurs codes.

Mammouth du PHP | 702 Messages

19 juin 2012, 15:58

bon je me suis battu avec plusieurs str repalce dans le code source pour obtenir cela:
echo "<p style=\"text-align: right; \">

	$debiteur[\'nom\'] {$debiteur[\'prenom\']}<br />

	{$debiteur[\'adresse\']}<br />

	{$debiteur[\'adresse2\']}<br />

	{$debiteur[\'ville\']} - {$debiteur[\'code_postal\']}<br />

	{$debiteur[\'pays\']}</p>

<p style=\"text-align: right; \">

	 </p>

<p style=\"text-align: left; \">

	Affaire: {$client[\'raison_sociale\']}</p>

<p style=\"text-align: left; \">

	c/ {$debiteur[\'nom\']}</p>

<p style=\"text-align: left; \">

	Nos Refs: <strong>{$creance[\'n_doss\']}</strong></p>

<p style=\"text-align: left; \">

	Reference client: {$creance[\'ref_client\']}</p>

<p style=\"text-align: left; \">

	 </p>

<p style=\"text-align: right; \">

	Maisons-Laffitte, le {date(\'d-m-Y\')}</p>

<p style=\"text-align: right; \">

	 </p>

<p style=\"text-align: center; \">

	<strong>ATTESTATION DE NON RECOUVREMENT</strong></p>

";
mais rien n'y fais, toujours des messages d'erreurs.

cette fois j'ai le droit à cela:



( ! ) Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\DOSSIERS\editer-courrier4.php(92) : eval()'d code on line 2
Call Stack
# Time Memory Function Location
1 0.0008 720072 {main}( ) ..\editer-courrier4.php:0
Modifié en dernier par piotrowski-s le 19 juin 2012, 16:00, modifié 1 fois.