begin process at 2010 02 10 13:41:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > PUBLIPOSTAGE DOCUMENTS WORDS(AU FORMAT RTF) A PARTIR D'UNE BASE MYSQL

PUBLIPOSTAGE DOCUMENTS WORDS(AU FORMAT RTF) A PARTIR D'UNE BASE MYSQL


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :word, publipostage, documents, gestion documentaire Niveau :Initié Date de création :15/01/2008 Date de mise à jour :27/01/2008 23:46:35 Vu / téléchargé :9 793 / 504

Auteur : foxmaster

Ecrire un message privé
Commentaire sur cette source (44)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • <?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();
  • ?>
<?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/




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

15 janvier 2008 23:45:30 :
- correction du bug, + correction de quelques erreurs de frappe...
16 janvier 2008 01:03:50 :
prise en compte des caracteres spéciaux de base
16 janvier 2008 01:09:08 :
mise a jour du zip prise en charge car spec
27 janvier 2008 23:22:53 :
Modification de l'interface et intégration de la possibilité de multipublipostage (plusieurs pages..)
27 janvier 2008 23:46:35 :
petite correction d'un bug dans la validation de modification des documents (accolade en trop :-s)

 Sources du même auteur

Source avec Zip HIÉRARCHISATION D'UN TABLEAU PAR FONCTION RÉCURSIVE
Source avec Zip Source avec une capture TCHAT COMBINANT JAVASCRIPT/PHP (AUCUN APPLET JAVA OU AUTRE T...

 Sources de la même categorie

Source avec Zip Source avec une capture GRACENATUR V02 - CDMS: CONTAIN AND DESIGN MANAGMENT SYSTEM par sajaris
Source avec Zip SIMULBAL: SERVEUR POUR BALANCES ÉLECTRONIQUES DE LABORATOIRE... par laservert
Source avec Zip GESTION D'ESPACE MEMBRES par jmpicot
TEST DU CHI2 OU KHI2 D'INDÉPENDANCE par phpAnonyme
CLASSE PAGINATION par darkis

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PUBLIPOSTAGE (ZIP ET MEL) par ddempt
FORMULAIRE PHP ET INSERTION AUTOMATIQUE DANS UN DOCUMENT RTF... par Slyders
CONVERSION DES CARACTÈRES SPÉCIAUX EN UTF-8 POUR EXPORT DANS... par tarzent

Commentaires et avis

Commentaire de yoman64 le 15/01/2008 04:57:52

Salut,

Quelques petites remarques (qui reviennent souvent, mais il le faut bien ;))

1.Tu devrais utiliser mysql_real_escape_string, parce que sinon on peut passer nimporte quoi dans le $_POST['document_id'] (et surment ailleur). Ou alors document_id est un integer, tu pourrais aussi vérifié si c'est bien un chiffre a la place, avec is_numeric.

2. Parlant de document id, tu ne semble pas faire de vérification si le document existe bien, je lui passe nimporte quoi et il l'accèpte.

3. Tu n'es pas constant dans l'utilisation du quote ou double quote, des fois tu utilises les ' des fois " , tu dervais rester constant et utiliser le simple quote partout, sauf quand t'as besoin d'ajouter une variable dans le string.


Ça m'a l'air interessant, mais, je suis peut être con, j'ai pas tout compris à quoi ça sert ? à gerer des documents/comptes en interne ?

Bonne continuation

Commentaire de malik7934 le 15/01/2008 08:06:38

Salut,

Je n'ai pas bien compris non plus (en faisant l'essai de publipostage sur ton site, cela m'a généré des pages vides - j'utilise Open Office).

Est-ce que le but c'est d'avoir un "chablon Word" et de lui transmettre des données par le formulaire? Si c'est ça alors c'est vraiement intéressant... ceci dit, j'ai parcouru rapidement le code et je n'ai pas trouvé où tu construisais ton document...

Commentaire de ddempt le 15/01/2008 09:17:22

Ca ne marche pas.

Le but de ce code est de réaliser un publipostage d'un document RTF qu'on a créer ou de générer un RTF ?

Quand j'upload un document, je récupère un autre.

Commentaire de foxmaster le 15/01/2008 23:57:17

le but est de réaliser un publipostage sur un document rtf créé

dans mon exemple je suis partis sur un systeme de lettres types
j'en ai pour ma part une toute autre utilisation aprés réadaptation

j'ai une grosse banque de donnée sous mysql avec des informations divers et a partir d'un numéro de dossier un utilisateur qui a créé un document type (un lettre pour un assureur par ex) va récupérer la lettre remplie avec les éléments du dossiers aux endroit qu'il aura défini

"Je n'ai pas bien compris non plus (en faisant l'essai de publipostage sur ton site, cela m'a généré des pages vides - j'utilise Open Office).
"
pour les pages vides c que j'avais eu un souci suite a une faute de frappe de ma part sur le code et j'avais mis des document avec uniqument les mot clé qui été en cause par la faute de frappe.. (j'ai corrigé depuis)

"1.Tu devrais utiliser mysql_real_escape_string, parce que sinon on peut passer nimporte quoi dans le $_POST['document_id'] (et surment ailleur). Ou alors document_id est un integer, tu pourrais aussi vérifié si c'est bien un chiffre a la place, avec is_numeric."
pas bien compris la...
"2. Parlant de document id, tu ne semble pas faire de vérification si le document existe bien, je lui passe nimporte quoi et il l'accèpte."
je corrigerais cela..
"3. Tu n'es pas constant dans l'utilisation du quote ou double quote, des fois tu utilises les ' des fois " , tu dervais rester constant et utiliser le simple quote partout, sauf quand t'as besoin d'ajouter une variable dans le string."
je corrigerais aussi :-D j'essaye de faire attention mais j'ai encore des difficultés...

Commentaire de foxmaster le 16/01/2008 00:14:35

je viens de voir que dans les sources en rapport avec mon code y avais ceci...
http://www.phpcs.com/codes/FORMULAIRE-PHP-INSERTION-AUTOMATIQUE-DANS-DOCUMENT-RTF-WORD_43277.aspx
donc je vais sans doute retirer ma source (sauf si elle vous parait interressante a exploiter?

Commentaire de foxmaster le 16/01/2008 00:41:18

Bizarement je viens de voir que les quoite et simple quotes passaient mal sur le rtf sur mon hébergeur.. mais pas sur mon serveur local(wamp)
je n'ai pour l'isntant pas d'idée de parade, j'ai essayé avec un str_replace('"',chr(34),$texte);
mais ça ne marche pas correctement :-(

Commentaire de foxmaster le 16/01/2008 01:10:29

c bon j'ai réctifié

Commentaire de ddempt le 16/01/2008 08:01:59

Est-ce que ce code peut générer un seul document de plusieurs fiches ?

Commentaire de foxmaster le 16/01/2008 11:51:57

tel qu'il a été réalisé, non
mais cela peut etre faisable, j'ajouterais cela dans la soirée.

Commentaire de ddempt le 16/01/2008 12:29:19

Justement j'ai essayé de le faire mais j'ai un problème pour joindre plusieurs fichiers, il y a en fait à chaque fichier un entete qu'il ne faut pas répéter dans le document final.

Si tu y arrive fais moi signe

Commentaire de jadu le 22/01/2008 16:07:10

la soirée du 16 est longue !!!!

Commentaire de foxmaster le 25/01/2008 19:16:17

sympa la remarque JADU, ça donne presque pas envie de répondre,
j'ai pas eu trop de temps a moi (taff) et le soir pas trop le temps..

bref j'ai trouvé la parade, reste plus qu'a mettre en place, je sais juste pas niveau interface comment mettre ça mais ça va venir prochainement !

Commentaire de jadu le 25/01/2008 19:34:52

Pardon, foxmaster , mais je ne voulais en aucun cas être blessant !
Je compatissais plutôt à l'idée du travail que cela t'entraînat.
Je vais faire plus gaffe à mes remarques dès à présent.

Commentaire de foxmaster le 27/01/2008 22:18:59

Ayé j'ai fais les modifications

je mettrais a jour la source dans la foulée.
laissez des commentaires merci et si vous pouviez noter mon travail
(ça me donne l'impression d'etre encore a l'école :-D)

Commentaire de foxmaster le 27/01/2008 23:31:10

voila j'ai mis a jour la source , attention ça reste du "bricolage" mais ça fonctionne bien (testé avec word 2003).

si quelqu'un a l'occasion d'ouvrir un fichier sous linux ou avec un autre logiciel que word pour savoir si cela se lit correctement .. ça serait cool ;-)

Commentaire de foxmaster le 28/01/2008 00:28:06

je viens de faire quelques essais, le resultat du document avec multi pages fonctionne correctement avec:
Open office
Word

mais pas avec wordpad de windows :-S

Commentaire de LuthiLaTonnelle le 07/02/2008 12:55:13 8/10

Hello, super ce script. mais j'ai une petit erreur que je ne peux résoudre sans votre aide:

Warning: fopen(attestation - 07-02-2008.rtf) [function.fopen]: failed to open stream: Permission denied in /*/documents/make_document.php on line 166

Pouvez-vous m'aider?

Commentaire de theboubourse le 07/02/2008 17:13:05

salut FOXMASTER tu as l'air calé avec word moi je recherche le moyen d'avoir dans une variable les mots clés qui se trouvent dans les propriétés d'un document word si vous avez une idée merci d'avance

Commentaire de ddempt le 07/02/2008 19:10:45

On ne peut pas télécharger l'ensemble des fiches dans 1 seul document, domage

Commentaire de foxmaster le 07/02/2008 20:40:34

LuthiLaTonnelle bonsoir,

vu l'erreur il semblerais qu'il s'agit d'une erreur de permission.. êtes vous sous linux? un chmod peut etre...

le 'a+' créer un fichier si celui ci n'existe il  le créer au meme endroit que la ou se situe le script ce qui est une erreur de ma part...
la solution est donc (et je mettrais le script a jour)

de creer un dossier nommé "temp" (par exemple)

et de modifier la ligne 60 par ceci:
$temp_file = "./temp/$intitule_document - ".date("d-m-Y").".rtf";

Commentaire de foxmaster le 07/02/2008 20:42:56

DDEMPT
"On ne peut pas télécharger l'ensemble des fiches dans 1 seul document, domage"

je ne comprend pas la remarque..? peux tu expliquer

merci.

Commentaire de foxmaster le 07/02/2008 20:43:58

theboubourse

dslé j'ai pas d'idée,
il faut aussi savoir que ce n'est pas un document word "DOC" mais un document RTF.

Commentaire de LuthiLaTonnelle le 07/02/2008 21:37:08

foxmaster

Merci c'était bien ça j'avais mis les droit d'écriture sur le dossier upload_documents mais pas sur le dossier mère documents.

J'ai suivis ton conseil et j'ai créé un dossier /temp/ avec les droits en écriture. Merci

Une autre question: Je souhaite ajouter une mise en page. Mais quand je modifie un fichier .rtf en y ajoutant des mot clés en gras. J'obtiens des erreurs lors du publipostage.

Qu'en penses-tu?

Commentaire de foxmaster le 07/02/2008 21:45:19

quel genre d'erreur?

Commentaire de ddempt le 07/02/2008 21:48:01

En faite en faisant un publipostage sur WORD on a un résultat sous forme d'un seul document .DOC
C'est cela que je cherche à faire pour avoir 1 seul document à télécharger, je suis amener à traiter des centaines de fiches et si je dois les télécharger 1 par 1 ça fait long.

Commentaire de LuthiLaTonnelle le 07/02/2008 21:50:19

Lors de l'ouverture du fichier .rtf générer par l'application. S'affiche une erreur me signalant que le fichier est corrompu.

Est-il possible d'utiliser des documents .rtf dont certains mot clés seraient en gras ou souligné?

Commentaire de foxmaster le 07/02/2008 21:51:38

eh ben c ce que cela fait ...
il suffit de choisir plusieurs destinataires et cela sort un seul document avec les differentes fiches (si j'ai bien compris votre requete

Commentaire de foxmaster le 07/02/2008 21:53:16

ma réponse précédente était pour  DDEMPT
LuthiLaTonnelle
ah .. quelle version de word utilisez vous?

pouvrriez vous uploader votre document sur ma démo et tester et me dire si cette erreur se produit ? merci

Commentaire de foxmaster le 07/02/2008 21:55:17

pour infio jh'ai oublié de mettre a jour..

il faut modifier la ligne 162
if($numpub>0){$texte.=" \page ".$output;}else{$texte.=$output;}
par
if($numpub>0){$texte.=" \page \par ".$output;}else{$texte.=$output;}

Commentaire de LuthiLaTonnelle le 07/02/2008 22:00:35

Quel est l'url de ta démo?

Commentaire de foxmaster le 07/02/2008 22:03:30

http://foxmaster.info/makedocument/

Commentaire de LuthiLaTonnelle le 07/02/2008 22:12:40

J'ai fait le test avec le document en publipostage "mise en page". Celui en télécharger est une erreur.

Si tu effectue le téléchargement. tu obtiendras une erreur. Il affiche les # mais a remplacé les mots clés.

Alors, qu'en dis-tu?

Commentaire de foxmaster le 07/02/2008 22:30:12

oui c'est normal tu n'a pas mis les # quand tu a s uploadé le document et mis les mot cl" alors que tu as mis des mots clés avec des #

d'ailleur pour info je conseille de mettre finalement des mots clés sans les # car des fois avec les # ça foire

Commentaire de LuthiLaTonnelle le 07/02/2008 22:34:29

OK, Merci bien

Commentaire de Isarien59 le 23/07/2008 09:31:57

bonjour et merci pour le script.

je m'en suis largement inspiré pour celui que j'ai créé mais je tombe sur un problème : je n'arrive pas à créer plusieurs pages (même en utilisant " \page \par ") Ce que je souhaite faire, c'est créer un fichier contenant 10 fois la même lettre (créé a partir d'un modèle avec des balises perso) pour 10 destinataires différents. Les données sont bien enregistrées dans le fichier mais quand je l'ouvre avec word, je ne vois que la première page.

Commentaire de ddempt le 23/07/2008 10:00:54

Bonjour,

J'ai eu le même soucis et c'est pourquoi j'ai fais cela : http://www.phpcs.com/ajoutcode.aspx?step=1&ID=46614
Si cela peut d'aider.

Commentaire de foxmaster le 23/07/2008 12:56:41

Bonjour ISARIEN59,
ton document doit etre créé de la sorte:
commencer par


{\\rtf1

#boucle(plusieurs)

le contenu de ton document
\page \par
le contenu de ton document
\page \par
le contenu de ton document
\page \par
le contenu de ton document

}

Commentaire de foxmaster le 23/07/2008 12:57:24

DDEMPT
ton lien n'est pas bon

Commentaire de ddempt le 23/07/2008 14:36:49

Autant pour moi.

Lien vers une autre application de publipostage : http://www.phpcs.com/codes/PUBLIPOSTAGE-ZIP-MEL_46614.aspx

Commentaire de Isarien59 le 23/07/2008 14:59:16

oui effectivement ca marche mieux comme ca en fait en analysant les fichier générés par ton site de démo, il semblerait que ce soit ca la syntaxe utilisée '{\par \page}' pour les changements de pages et '{\rtf1' pour le début du fichier et '}' pour la fin. Par contre j'arrive pas a garder la même mise en page que le fichier d'origine (les en têtes et pieds de pages sont tout simplement zappés à l'affichage ds word). C'est du au fait que j'ai plusieurs header de fichier rtf ds mon fichier rtf généré (puisque je concatène les fiche issues du modèle dans le fichier initial.) Peut être qu'il faudrait que je créé un topic ds le forum pour mon sujet ca polluerai pas les commentaire de ce script

Pour le lien de DDEMPT c'est : http://www.phpcs.com/codes/PUBLIPOSTAGE-ZIP-MEL_46614.aspx

Commentaire de foxmaster le 23/07/2008 15:32:47

Fais comme tu veux :-P

pour les entetes et pieds de pages je sais pas trop j'ai plus ou moins le probleme
mais je l'ai résolu assez simplement...(on a des papiers d'entête :-D)

par contre, j'ai remarqué que si on générais beaucoup de document et qu'il y a des images dedans (les images allourdissent énormément un RTF... car l'image est transformé en code qui est assez conséquent celon l'image)
cela peut planter l'application disant que le fichier est trop volumineux par rapport à la taille maxi que le serveur apache gere

Commentaire de Isarien59 le 23/07/2008 15:51:11 8/10

Oui d'après ce que j'ai lu la taille des variable ds php est limitée à 8 mo. Après faut modifier le php.ini.

Pour l'entête et les pieds de page ca donne le même résultat avec ton code (jai uploadé un fichier sur ton site de test) et le miens (ds un sens ca me rassure). je vais voir pour trouver une autre solution (utilisation de tableau...)

Commentaire de gigamaster le 15/06/2009 21:09:52 9/10

Utile et pratique.
^_^

Commentaire de thiefou le 29/07/2009 18:02:58 10/10

Hello Foxmaster,
Je recherche une solution similaire à ton développement que je trouve super bon voir excellent, j'ai cependant encore trés peux d'expérience,(je travail plutôt en dotnet VB ou Delphi) je commence hélas seulement maintenant avec PHP et WAMP Mais mes début sont plutôt positifs.
j'ai donc chargé tes sources et j'utilise wamp v 2.2.11 mais je rencontre quelques soucis.
j'ai bien recréé les tables pour les users et pour les documents
je parviens a me connecter sur la base, car j'ai modifié en dur les paramètre de connexion avec le fichier _connect.php
cependant j'ai ensuite une erreur sur la page après un certain temps.

pourais tu me donner un tuyeau pour rechercher l'origine de mon problème?
un grand merci pour ton aide
thierry.francis@gmail.com




en et la table document

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Publipostage [ par Fantomas33 ] Bonjour,je suis sous Linux et l'application que je développe dois faire du publipostage. Le poste client est sous windows/wordQuelqu'un aurait il une publipostage word [ par mahher ] Bonjour,Je dois d&#233;velopper une page&nbsp;php qui fait un publipostage entre une base de donn&#233;es MySQL et un document word.Au d&#233;part, on problème:Générer un fichier word [ par EMSIEN ] J'a envie de g&#233;n&#233;rer un fichier word (.doc) et j'ai trouv&#233; ce bout de code en effectuant des recherches,mais &#231;a ne marche pas et & Publipostage word excel différent [ par teez ] Les instructions de ce que je voudrais faire sont dans le id.docDites-moi si vous avez une idée de comment faire !C'est ici le fichier à télécharger.h PHP à Word [ par Slyders ] Bonjour, je n'ai pas trouvé sur codes-sources, j'ai peut êter mal cherché.Je recherche une méthode pour envoyer des informations saisi par un utilisat Prtoblème PHP classe COM [ par brian85 ] Bonjour @ tous,J'ai parcouru les topics là dessus mais bon j'ai pas encore trouvé de solution, j'ai un serveur wamp de dev sous vista avec office inst lire doc word en php [ par kwantine ] bonjour je dispose d'une base de données contenant des documents word, txt et pdf. pour pouvoir lire les documents pdf et txt pas de probleme mais je Publipostage via word en php sous linux [ par Fantomas33 ] Bonjour,Tout est dans le titre : Publipostage via word en php sous linuxLe problème est que je format word est d'une part binaire et que contrairement détecter word et version windows [ par 3Rescator ] Comment détecter si Word, Excel et powerpoint sont installés sur l'ordi du client ?Et aussi, comment détecter si le client utilise Windows XP ?Je sais réduction d'un doc [ par babybutt ] bonjour a tous j'aimerais savoir comment on fait pour un document word ou ppt à la taille d'un cadre ?je m'explique, j'ai deux iframe, Cadre 1 c une


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,576 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales