courriers type.

Mammouth du PHP | 702 Messages

15 juin 2012, 16:05

Bonjour à tous, j'ai fais un module de gestion pour les courriers type,

je stocke donc mes données dans ma bdd, le soucis c'est que tout est stocké de la sorte:
en fait tout passe par ckeditor, lors de la génération de courrier
<p style="text-align: right; ">
	$debiteur['raison_sociale']<br />
	$debiteur['civilite']&nbsp;$debiteur['nom']&nbsp;$debiteur['prenom']<br />
	$debiteur['adresse']<br />
	$debiteur['code_postal'] -&nbsp;$debiteur['ville']<br />
	$debiteur['pays']</p>
<p style="text-align: right; ">
	&nbsp;</p>
<p style="text-align: left; ">
	Nos REF.:&nbsp;<strong>$creance['n_doss']</strong></p>
<p style="text-align: left; ">
	AFF.:&nbsp;$client['forme_juridique']&nbsp;$client['raison_sociale']<br />
	c/&nbsp;$debiteur['raison_sociale']&nbsp;$debiteur['nom']</p>
<p style="text-align: left; ">
	Vos REF.:&nbsp;$creance['ref_client']</p>
<p style="text-align: left; ">
	&nbsp;</p>
<p style="text-align: right; ">
	MAISONS-LAFFITTE, le&nbsp;date('d-m-Y')</p>
<p style="text-align: right; ">
	&nbsp;</p>
<p style="text-align: center; ">
	<u><strong>ATTESTATION DE PERTE</strong></u></p>
maintenant, je vais avoir besoin de récupérer les données, si je fais un echo, ca m'afficher vulgairement tout le code,

sachant que par exemple tous les caractères sont changés ça m'arranges pas du tout.

Par exemple date('d-m-Y')
donne ici date('d-m-Y')

je ne sais pas comment procéder ici,
en fait ce que je veux c'est que je choississe la lettre, toutes les requêtes sont préfaites (non pas dans la bdd, mais dans le fichier qui édite le courrier)

et la en fait selon les champs ils s'affichent en fonction des paramètres en url...

Je ne sais pas je suis bloqué,

j'ai pensé a la fonction eval, grâce a un membre de ce forum mais je ne sais pas dans la mesure ou mon code est encodé, par exemple les simple quotes donnent '

ça ne m'arrange pas


D'avance merci pour votre aide.

ViPHP
xTG
ViPHP | 7331 Messages

15 juin 2012, 19:31

Faut rajouter des echo et des balises PHP puis utiliser la fonction eval(), sinon faudrait te créer ton propre parseur...

ViPHP
ViPHP | 2577 Messages

15 juin 2012, 20:51

Un de tes problèmes est les variables $client['forme_juridique']
Il vaudrait mieux les mettre sous la forme $client_forme_juridique ou $forme_juridique.
C'est extract() qui permet la transformation de $client['forme_juridique'] en $forme_juridique. Je faisait ca dans une fonction pour que les variables créer par extract garde leur portée local et n'existe pas en dehorsde la fonction.

Par rapport à ma proposition précédente, il faut peut etre mettre (comme dit xTG) :

$lettre = '<?PHP $retour = "'.$contenu.'"; ?>';
un echo $lettre pour vérifier que tu as bien un truc genre :
<?PHP $retour = "Le texte de ta lettre $forme_juriduque..." ; ?>
Si tu as des " dans le texte, ca va poser problème. Donc remplace les par \"
ensuite eval($lettre);
et $retour contient le texte transformé.

ViPHP
ViPHP | 2577 Messages

15 juin 2012, 21:02

<?PHP
function creation_lettre($lettre,$variable)
{
   $chaine = '<?PHP $contenu = "'.$lettre.'"; ?>';
   extract($variable);
   eval($chaine);
   return $contenu;
}

$lettre = 'Exemple de texte avec variable $client_forme_juridique';  // contenu de la lettre qui peux provenir d'un fichier txt ou d'une base de données
foreach ($client as $cle => $valeur) $data['client_'.$cle] = $valeur;
foreach ($debiteur as $cle => $valeur) $data['debiteur_'.$cle] = $valeur;
foreach ($dossier as $cle => $valeur) $data['dossier_'.$cle] = $valeur;
echo creation_lettre($lettre,$data);
?>
Tu travailles dans le recouvrement ?

Mammouth du PHP | 702 Messages

15 juin 2012, 21:18

oui je bosses dedans, enfin pas encore, je viens d'avoir une maîtrise de droit et comme je trouves pas de boulot je montes ma boite au fur et a mesure (je bosses en parallèle mais dans aucun milieu juridique) donc je dois créer mon propre logiciel car rien ne me correspond (pas d'anatocisme, ni rien, etc...). la plupart des logiciels présents sont chers et fait par des informatiiens pas des juristes ^^

Mammouth du PHP | 702 Messages

15 juin 2012, 21:20

sinon dans le pire des cas je pensais stocker les template de mes lettres dans des fichier php...? qu'en pensez vous?

ViPHP
xTG
ViPHP | 7331 Messages

15 juin 2012, 21:26

C'est ce que je t'avais donné comme possibilité. :)

Mammouth du PHP | 702 Messages

15 juin 2012, 21:27

bon je vais tout tenter alors :)

Merci pour les conseils.

ViPHP
ViPHP | 2577 Messages

15 juin 2012, 22:20

Je voyais plus des fichiers .txt que tu lis pour alimenter $lettre dans mon exemple de script. Eventuellement .html pour les visualiser facilement.

Mammouth du PHP | 702 Messages

15 juin 2012, 22:59

bon je ferais plusieurs essais et puis je verrais lequel est plus facile a adapter sachant que je veux pouvoir ouvrir et modifier le template de la lettre en toute simplicité.

ViPHP
xTG
ViPHP | 7331 Messages

16 juin 2012, 00:05

Je voyais plus des fichiers .txt que tu lis pour alimenter $lettre dans mon exemple de script. Eventuellement .html pour les visualiser facilement.
En fait il parlait de ce que je lui avais laissé comme possibilité dans un autre topic.
A savoir un fichier PHP généré lors de la création du modèle contenant déjà le code avec variable.

Mammouth du PHP | 702 Messages

18 juin 2012, 09:54

rebonjour à tous, je suis confronté à pleins de problèmes et je sais pas torp comment m'en sortir.

Donc j'ai la page 1 qui contient ce code ci:
<fieldset><legend>EXPEDITION DU COURRIER</legend>
<form id="form1" action="editer_courrier2.php?id=<?php echo $_GET['id'] ; ?>&code_client=<?php echo $_GET['code_client'] ; ?>&n_doss=<?php echo $_GET['n_doss'] ; ?>" method="post" name="form1" >
	<label for="destinataire">DESTINATAIRE</label>		<select name="type" size="1" onchange="submit()">
				<option value="">Choissisez...</option>
				<option value="client">Client</option>
				<option value="deb">Débiteur</option>
				<option value="avo">Avocat</option>
                <option value="hui">Huissier</option>
                <option value="conf">Confrère</option>
                <option value="rep_cre">Représentant des créanciers</option>
                <option value="man_liq">Mandataire liquidateur</option>
                <option value="adm_jud">Administrateur Judiciaire</option>
                <option value="jug_com">Juge commissaire</option>
                <option value="com_exe">Commissaire exécution plan</option>
                <option value="tri">Tribunal</option>
                <option value="emp">Employeur</option>
                <option value="ger">Gérant</option>
                <option value="seq">Séquestre</option>
                <option value="not">Notaire</option>
                <option value="tie">Tiers</option>
			</select>
		</form>

       
        
<p align="right">&nbsp;</p></fieldset>
c'est une âge dans laquelle je choisis le type de courrier à éditer,
jusque la je n'ai pas de problèmes

Page suivante:
<fieldset><legend>EXPEDITION DU COURRIER</legend>

	
  <?php if(isset($_POST['type']) AND $_POST['type']="deb") { ?> 
        <p id="cli" class="hiddenDiv"><strong>Adresse destinataire</strong><br /><br />
        
        Choix de l'adresse: <form action="editer_courrier3.php?id=<?php echo $_GET['id'] ; ?>&code_client=<?php echo $_GET['code_client'] ; ?>&n_doss=<?php echo $_GET['n_doss'] ; ?>&type=<?php echo $_POST['type'] ; ?>" method="post" > <select name="destinataire" size="1" onchange="submit()">
				<option value="">Choissisez...</option>
			 <?php 
$sql = "SELECT * FROM debiteur where n_doss='".mysql_real_escape_string($_GET['n_doss'])."'";
echo $sql;

$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>
    <?php
     while($donnees2 = mysql_fetch_assoc($result)) {
      ?>
     <option value="<?php echo $donnees2['qualite'] ; ?>"><?php echo $donnees2['qualite'] ; ?> <?php echo $donnees2['nom'] ; ?> <?php echo $donnees2['prenom'] ; ?> <?php echo $donnees2['raison_sociale'] ; ?> <?php echo $donnees2['siret'] ; ?></option><?php } ?></select></form>
     <?php } 
	 
	 else echo "Aucun destinataire" ; ?>
        <p id="tie" class="hiddenDiv">This is paragraph 1.</p>
<p align="right">&nbsp;</p></fieldset>
c'est une page dans laquelle je choisis l'adresse du destinataire (en fait plus proprement dit toutes les informations sur le contact, enregistré dans la table concernée).

Puis sur la page 3, j'ai ce code ci:
<table width="310"><tr><td width="300">
<fieldset><legend>EXPEDITION DU COURRIER</legend>
<form id="form1" action="editer-courrier4.php?code_client=<?php echo $_GET['code_client'] ; ?>&n_doss=<?php echo $_GET['n_doss'] ; ?>&type=<?php echo $_GET['type'] ; ?>&qualite=<?php echo $_POST['destinataire'] ; ?>" method="post" />

	<label for="destinataire"><strong>CHOIX DU COURRIER</strong></label>
  
  

 <select name="courrier" size="1" onchange="submit()">
				<option value="">Choissisez...</option>
		 <?php 
$sql = "SELECT * FROM courrier where type='".mysql_real_escape_string($_GET['type'])."'";
$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>
    <?php
     while($donnees2 = mysql_fetch_assoc($result)) {
      ?>
     <option value="<?php echo $donnees2['id'] ; ?>"><?php echo $donnees2['titre'] ; ?></option><?php } ?></select>
 	</p>
		
<p align="right">Editer le courrier <img src="images/mail.png" width="32" height="32" /></p></form></fieldset></td></tr>
 </table>
Dans cette page, après les 2 premières étapes et donc après avoir choisi le type de courrier et le destinataire je choisis le courrier à éditer.

Une fois que tout est sélectionné j’atterris sur la page suivante:
<?php 	$sql= "SELECT * FROM `courrier` WHERE id ='".mysql_real_escape_string($_POST['courrier'])."'";
		$sql1= "SELECT * FROM `creance` WHERE `n_doss`='".mysql_real_escape_string($_GET['n_doss'])."'" ;
		$sql2= "SELECT * FROM `debiteur` WHERE `n_doss`='".mysql_real_escape_string($_GET['n_doss'])."' AND `qualite`=`n_doss`='".mysql_real_escape_string($_GET['qualite'])."'";
		$sql3="SELECT * FROM `decompte` WHERE `n_doss`='".mysql_real_escape_string($_GET['n_doss'])."'";
		$sql4="SELECT * FROM `factures` WHERE`n_doss`='".mysql_real_escape_string($_GET['n_doss'])."'";
		$sql5="SELECT * FROM `interets` WHERE `n_doss`='".mysql_real_escape_string($_GET['n_doss'])."'";
		$sql6="SELECT * FROM `client` WHERE `code_client`='".mysql_real_escape_string($_GET['code_client'])."'";


		$result = mysql_query($sql)  or die (__LINE__.mysql_error().$sql); 
		$result1= mysql_query($sql1) or die (__LINE__.mysql_error().$sql1); 
		$result2= mysql_query($sql2) or die (__LINE__.mysql_error().$sql2);
		$result3= mysql_query($sql3) or die (__LINE__.mysql_error().$sql3);
		$result4= mysql_query($sql4) or die (__LINE__.mysql_error().$sql4);
		$result5= mysql_query($sql5) or die (__LINE__.mysql_error().$sql5);
		$result6= mysql_query($sql6) or die (__LINE__.mysql_error().$sql6);

while($courrier = mysql_fetch_assoc($result))  { eval(html_entity_decode($courrier['contenu'])) ;
while($creance  = mysql_fetch_assoc($result1)) { 
while($debiteur = mysql_fetch_assoc($result2)) { 
while($decompte = mysql_fetch_assoc($result3)) { 
while($factures = mysql_fetch_assoc($result4)) { 
while($interets = mysql_fetch_assoc($result5)) { 
while($client   = mysql_fetch_assoc($result6)) { 

?>		
<table width="790"><tr><td>
<p align="left"></p></td></tr>
 </table>
<?php 
}
}
}
}
}
}
}
?>
</p>


ici il est censé avec toutes les informations reçues pendant les 3 premieres étapes enregistrer les informations concernant le courrier à éditer, le destinataire et le type de courrier,

et lorsque je fais un eval du contenu du courrier plus le html entity decode, m'afficher le courrier généré avec tous les éléments requis.

Mais ca bloque, je ne sais pas d'ou cela vient, quand je fais un echo $courrier['contenu'] ; j'ai bien mon courrier en brut, mais après plus rien ne vas...

en fait il me met dejà un message d'erreur de ce type:


Parse error: syntax error, unexpected '<' 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.0015 714680 {main}( ) ..\editer-courrier4.php:0

alors que pourtant je n'ai pas ce caractère à la ligne mentionnée.


Enfin je suis perdu,

d'avance merci pour votre aide.

ViPHP
xTG
ViPHP | 7331 Messages

18 juin 2012, 13:43

<?php
eval("echo 'hello world !;"); // correct
eval("<?php echo 'hello world !; ?>"); // incorrect

Mammouth du PHP | 702 Messages

18 juin 2012, 13:48

mais je n'ai pas les <?php et ?>

mais j'ai d'autres balises html.

comme des <p align="center"> ou autre,

et j'ai utilisé html entity decode et stripslashes

ViPHP
ViPHP | 2577 Messages

18 juin 2012, 14:16

Tu devrais regarder le contenu dont tu veux faire un eval() avec un echo. Tu pourrais peut être détecter le problème.

A priori, il faudrait savoir ce que contient $courrier['contenu'], ou plutot html_entity_decode($courrier['contenu'].
Mieux vaut regarder dans le source html de la page que via le navigateur car le navigateur interprète les entité avant de les afficher.