Publipostage documents words(au format rtf) a partir d'une base mysql

Description

suite a une demande a mon boulot, j'ai créé une sorte d'interface
permettant de gérer des documents dont certains sont téléchargeables et d'autres pour du publipostage

je ne sais pas trop comment expliquer si ce n'est par son fonctionnement:

l'exemple est plus ou moins conçus pour des courriers
dans un premier temps gestion des utilisateurs (ou destinataires, expéditeur)

on va retrouver les informations personnelles de l'utilisateur de l'application
qui pourront servir par exemple pour la partie "expéditeur d'un courrier"
et un listing de destinataires "dans mon exemple je les ai appelé "utilisateur"..

dans un second temps la gestion documentaire

deux tableau differenciant les documents en téléchargement direct
et les documents pour publipostage

pour finir les formulaires pour le publipostage et pour l'ajout de document a dl/ou pour publipostage.

Source / Exemple :


<?php
require('../connexion/_connect.php');//connexion a la base
function change_carspec($texte)//fonction qui remplace certains caracteres spéciaux tels que les guillemets dans un forma rtf
	{
		$texte= str_replace("'"," \\rquote ",$texte); 
		$texte= str_replace('"'," \\ldblquote ",$texte); 
		$texte= str_replace('{'," \\{ ",$texte); 
		$texte= str_replace('{'," \\} ",$texte); 
		
		return $texte;
	}
	
//initialisation des variables
$nb_checkbox=count($_POST["checkdest"]);//on compte le nombre de destinataires  sélectionnés
if($nb_checkbox==0){$nb_checkbox=1;}//si aucun on met le compteur à 1
//variable qui contiendra les pages remplies
$texte="";
if($nb_checkbox>1){$texte="{\\rtf1 \n";}//si plusieurs destinataires sélectionnées on met ce code en debut de page.
//date
$date_jour=date("d/m/Y");
//infos utilisateur
$titre_user="";
$nom_user="";
$prenom_user="";
$adresse_user="";
$cp_user="";
$ville_user="";
$tel_user="";
$email_user="";

//mes infos
$my_info_titre="";
$my_info_nom="";
$my_info_prenom="";
$my_info_enseigne="";
$my_info_adresse="";
$my_info_cp="";
$my_info_ville="";
$my_info_tel="";
$my_info_fax="";
$my_info_email="";

if(isset($_POST["id_document"]))//si a été choisi un document
	{
		$id_document=$_POST["id_document"];
		
		$SQL_document="SELECT * FROM documents WHERE document_id=$id_document";
		$rc_document=mysql_query($SQL_document);
		$row_document=mysql_fetch_array($rc_document);
		//on récupere les infos du document choisi
		$type_document=$row_document["document_type"];
		$intitule_document=$row_document["document_intitule"];
		$nom_document=$row_document["document_nom"];
		$nomtemp_document=$row_document["document_tempnom"];
		
		// On ouvre le fichier type uploadé
		$rep="./upload_documents/";
		$filename = "$rep$nomtemp_document";
		$temp_file = "$intitule_document - ".date("d-m-Y").".rtf";
		$fp = fopen ( $filename, 'r' );
		
		// On le place en variable $output et on le ferme
		$foutput = fread( $fp, filesize( $filename ) );
		fclose ( $fp );

for ($numpub=0; $numpub < $nb_checkbox; $numpub++)//si plusieurs 
{
	$output=$foutput;
	if(isset($_POST["util_info"])) //si les infos du destinataire sont requises
	{
		if(isset($_POST["checkdest"][$numpub]))//on récupere l'id du destinataire contenu dans le checkbox
			{
				$user_id=$_POST["checkdest"][$numpub];
				$SQLdest="SELECT * FROM user WHERE user_id=$user_id";
				$rc_dest = @mysql_query($SQLdest);
				$row_users=mysql_fetch_array($rc_dest);
				
				$titre_user=$row_users["user_titre"];
				$nom_user=$row_users["user_nom"];
				$prenom_user=$row_users["user_prenom"];
				$adresse_user=$row_users["adresse"];
				$cp_user=$row_users["code_postal"];
				$ville_user=$row_users["ville"];
				$tel_user=$row_users["user_tel"];
				$email_user=$row_users["user_email"];
			}
	}
	
	//si infos personnelles requises
	if(isset($_POST["my_info"]))
	{
		$SQL_my_info="SELECT * FROM my_info WHERE 1";
		$rc_my_info=mysql_query($SQL_my_info);
		$row_my_info=mysql_fetch_array($rc_my_info);
		if(mysql_num_rows($rc_my_info)==0)
			{
				mysql_query("INSERT INTO my_info (my_info_titre) VALUES('')");
				$my_info_id=mysql_insert_id();
			}
			else
			{
				$my_info_titre=$row_my_info["my_info_titre"];
				$my_info_nom=$row_my_info["my_info_nom"];
				$my_info_prenom=$row_my_info["my_info_prenom"];
				$my_info_enseigne=$row_my_info["my_info_enseigne"];
				$my_info_adresse=$row_my_info["my_info_adresse"];
				$my_info_cp=$row_my_info["my_info_cp"];
				$my_info_ville=$row_my_info["my_info_ville"];
				$my_info_tel=$row_my_info["my_info_tel"];
				$my_info_fax=$row_my_info["my_info_fax"];
				$my_info_email=$row_my_info["my_info_email"];
			}
	
	}
	
	// si autres infos requis
	if(isset($_POST["other_info"]))
	{
			$nb_form=$_POST["nb_otherinfo"];
			
			for ($num=1; $num <= $nb_form; $num++)
			{
				if ($_POST["otherinfo_id_$num"]!="")// on récupere les valeurs des champs otherinfo_id_1,otherinfo_id_2,otherinfo_id_3,etc....
					{
						$SQL_other_infos="SELECT * FROM publipostage WHERE publipostage_id=".$_POST["otherinfo_id_$num"];
						$rc_other_infos=mysql_query($SQL_other_infos);
						$row_other_infos=mysql_fetch_array($rc_other_infos);
						$publipostage_keyword=$row_other_infos["publipostage_keyword"];
						$publipostage_texte=$_POST["other_info_$num"];
						$publipostage_texte=str_replace(CHR(10),"\par ", $publipostage_texte);
						$publipostage_texte=change_carspec($publipostage_texte);
						$output = str_replace("$publipostage_keyword", "$publipostage_texte", $output);
					}
			}
	}
	
	// on changes les mots clé par les valeurs des variables
	//si un mot clé n'est pas dans le document , il sera simplement ignoré ;-)
	$output = str_replace("#date#","$date_jour", $output);
	$output = str_replace("#util_titre#","$titre_user", $output);
	$output = str_replace("#util_nom#","$nom_user", $output);
	$output = str_replace("#util_prenom#","$prenom_user", $output);
	$output = str_replace("#util_adresse#","$adresse_user", $output);
	$output = str_replace("#util_cp#","$cp_user", $output);
	$output = str_replace("#util_ville#","$ville_user", $output);
	$output = str_replace("#util_tel#","$tel_user", $output);
	$output = str_replace("#util_email#","$email_user", $output);
	
	$output = str_replace("#mon_titre#","$my_info_titre", $output);
	$output = str_replace("#mon_nom#","$my_info_nom", $output);
	$output = str_replace("#mon_prenom#","$my_info_prenom", $output);
	$output = str_replace("#mon_cp#","$my_info_cp", $output);
	$output = str_replace("#mon_enseigne#","$my_info_enseigne", $output);
	$output = str_replace("#mon_adresse#","$my_info_adresse", $output);
	$output = str_replace("#ma_ville#","$my_info_ville", $output);
	$output = str_replace("#mon_tel#","$my_info_tel", $output);
	$output = str_replace("#mon_fax#","$my_info_fax", $output);
	$output = str_replace("#mon_email#","$my_info_email", $output);
	
	//si on utilisateur >1er alors on ajoute \page qui correspond à saut de page en rtf.
	if($numpub>0){$texte.=" \page ".$output;}else{$texte.=$output;}
}

//enfin on ouvre le fichier avec les variables implémentées
$fp = fopen ( $temp_file, 'a+' );

fputs($fp,$texte);
fclose ( $fp );
header("Content-type: application/force-download");
header("Content-disposition: inline; filename=\"$temp_file\";");
$fh=fopen($temp_file, "rb");
fpassthru($fh);
fclose($fh);
unlink($temp_file);
}
else
{//si aucun document choisi...
echo "Acces Interdit!";
}
mysql_close();
?>

Conclusion :


les commentaires sur les pages seront ajoutées plus tard là il est trop tard je vais me coucher :-D
vous pouvez tester ici:
http://foxmaster.info/makedocument/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.