Insérer tableau dans word avec php

Résolu/Fermé
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023 - 26 avril 2022 à 09:54
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023 - 27 avril 2022 à 10:53
Bonjour,

Au clic sur un bouton, je télécharge un fichier word (.doc) rempli avec des variables issues de ma bdd. Jusque là, tout va bien.

Mais lorsque je veux insérer un tableau dans mon document word, c'est là où tout se gâte.

Pour être plus précis, j'ai un fichier .rtf principal (présent sur le serveur) qui est complété par des fichiers .rtf secondaires (eux aussi présents sur le serveur). les variables de ces fichiers secondaires sont remplis avec les données de la bdd via php.

Voici mon code pour remplir le fichier secondaires "successibles.rtf":
$resultatsucc = $bdd->prepare('SELECT * FROM successible WHERE pjt_id = :numpjt ');
		$resultatsucc->bindValue(':numpjt',$numpjt, PDO::PARAM_INT);
		$executeIsOk2 = $resultatsucc->execute();
		
		$filesucc = $succ;
		$fs = fopen($filesucc,'r');
		$successibles = fread($fs, filesize($filesucc));
		fclose($fs);
		
		$tableauSuccessibles .=		"<table>
										<tr>
											<td>Civilité</td>
											<td>Prénom</td>
											<td>Nom</td>
											<td>Age</td>
											<td>Lien de parenté</td>
											<td>Parent de</td>
										</tr>";
		while  ($success=$resultatsucc->fetch()) {
			if ($success['lien_parente_succ'] <> 'Petit enfant') {
				$enfantSucc = $success['parent_succ'];
				} else {
				$enfantSucc = $success['enfant_de_succ'];
			};
			$tableauSuccessibles .= 
				'<tr>';
					$tableauSuccessibles .= '<td>'.$success['genre_succ'].'</td>';
					$tableauSuccessibles .= '<td>'.$success['prenom_succ'].'"</td>';
					$tableauSuccessibles .= '<td>'.$success['nom_succ'].'</td>';
					$tableauSuccessibles .= '<td>'.$success['age_succ'].'</td>';
					$tableauSuccessibles .= '<td>'.$success['lien_parente_succ'].'</td>';
					$tableauSuccessibles .= '<td>'.$enfantSucc.'</td>';
				$tableauSuccessibles .= '</tr>';
		}
		$tableauSuccessibles .= "</table>";
		$successibles = str_replace("[tableauSuccessibles]",	$tableauSuccessibles,					$successibles);


Ensuite j'insère mon tableau dans mon fichier principal "ric.rtf" :

$filename = $ric;
		$fp = fopen($filename,'r');
		$content = fread($fp, filesize($filename));
		fclose($fp);
$content = str_replace("[successibles]",				$successibles,							$content);


Lorsque je télécharge ce fichier en .doc, j'obtiens bien les 2 lignes correspondant mais les balises du tableau sont affichées et la mise en forme, c'est du n'importe.



Quelqu'un peut il m'aider SVP

Par avance merci.

François

Configuration: Macintosh / Firefox 99.0
A voir également:

2 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
26 avril 2022 à 10:17
Bonjour

Tu n'utilises pas la bonne syntaxe pour les tableaux en rtf
Toi tu essayes de faire du html.. mais ce n'est pas comme ça.

Jette un œil ici
http://www.biblioscape.com/rtf15_spec.htm#Heading40
0
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023
26 avril 2022 à 10:23
Merci beaucoup,
J'y jette un oeil.
0
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023
27 avril 2022 à 10:53
Bonjour,

Je l'ai déjà dit hier ; mais encore merci Jordane.
J'aurai pu chercher encore longtemps.
rectification faite (pour ceux que ça intéresse) :
		$tableauSuccessibles .=	'{\rtf1\ansi\deff0{\fonttbl {\f0 Calibri;}}\trowd\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx1750\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx3500\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx5250\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx7000\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx8750\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx10500
{\f0\fs16{\colortbl ;\red0\green0\blue255;} {\b Civilité}}\intbl\cell
{\f0\fs16 {\b Prénom}}\intbl\cell
{\f0\fs16 {\b Nom}}\intbl\cell
\qc{\f0\fs16 {\b Age}}\intbl\cell
\qc{\f0\fs16 {\b Lien de parenté}}\intbl\cell
\qc{\f0\fs16 {\b Parent de}}\intbl\cell\row}';
/* foreach ($resultatsucc as $success) { */
		while  ($success=$resultatsucc->fetch()) {
			if ($success['lien_parente_succ'] <> 'Petit enfant') {
			$enfantSucc = $success['parent_succ'];
			} else {
			$enfantSucc = $success['enfant_de_succ'];
							};
		$tableauSuccessibles .=	'{\rtf1\ansi\deff0{\fonttbl {\f0 Calibri;}}\trowd\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx1750\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx3500\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx5250\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx7000\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx8750\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs\cellx10500
{\f0\fs16 '.$success['genre_succ'].'}\intbl\cell
{\f0\fs16 '.$success['prenom_succ'].'}\intbl\cell
{\f0\fs16 '.$success['nom_succ'].'}\intbl\cell
\qc{\f0\fs16 '.$success['age_succ'].'}\intbl\cell
\qc{\f0\fs16 '.$success['lien_parente_succ'].'}\intbl\cell
\qc{\f0\fs16 '.$enfantSucc.'}\intbl\cell\row}';
			}
			$successibles = str_replace("[tableauSuccessibles]",	$tableauSuccessibles,					$successibles);

résultat :


Bon, RTF n'est pas la syntaxe la plus facile mais ça le fait quand on pige. Je cherche encore pour changer la couleur de la police.

François
0