Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

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é: 8 347 / 443

Note :
8,33 / 10 - par 3 personnes
8,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (43)
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

Pour les "Membres Club", vous pouvez 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)

Commentaires et avis

signaler à un administrateur
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

signaler à un administrateur
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...

signaler à un administrateur
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.

signaler à un administrateur
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...

signaler à un administrateur
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?

signaler à un administrateur
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 :-(

signaler à un administrateur
Commentaire de foxmaster le 16/01/2008 01:10:29

c bon j'ai réctifié

signaler à un administrateur
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 ?

signaler à un administrateur
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.

signaler à un administrateur
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

signaler à un administrateur
Commentaire de jadu le 22/01/2008 16:07:10

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

signaler à un administrateur
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 !

signaler à un administrateur
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.

signaler à un administrateur
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)

signaler à un administrateur
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 ;-)

signaler à un administrateur
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

signaler à un administrateur
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?

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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";

signaler à un administrateur
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.

signaler à un administrateur
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.

signaler à un administrateur
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?

signaler à un administrateur
Commentaire de foxmaster le 07/02/2008 21:45:19

quel genre d'erreur?

signaler à un administrateur
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.

signaler à un administrateur
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é?

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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;}

signaler à un administrateur
Commentaire de LuthiLaTonnelle le 07/02/2008 22:00:35

Quel est l'url de ta démo?

signaler à un administrateur
Commentaire de foxmaster le 07/02/2008 22:03:30

http://foxmaster.info/makedocument/

signaler à un administrateur
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?

signaler à un administrateur
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

signaler à un administrateur
Commentaire de LuthiLaTonnelle le 07/02/2008 22:34:29

OK, Merci bien

signaler à un administrateur
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.

signaler à un administrateur
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.

signaler à un administrateur
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

}

signaler à un administrateur
Commentaire de foxmaster le 23/07/2008 12:57:24

DDEMPT
ton lien n'est pas bon

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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...)

signaler à un administrateur
Commentaire de gigamaster le 15/06/2009 21:09:52 9/10

Utile et pratique.
^_^

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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,624 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.