Page 1 sur 1

Tableau php dans word

Posté : 20 nov. 2008, 16:20
par Dom!
Bonjour,
JE souhaite afficher un tableau dans word de données sql d'une table, grace à un fichier template.htm(modele du document word) et un fichier export.php ci-dessous :

J'utilise la requete ci-dessous qui m'affiche le prospect numéro 1:
$id_prospect = $_GET['id_prospect'];
mysql_select_db($database_SAGIP, $SAGIP);
$query_faf = "SELECT * FROM tb_prospect WHERE id_prospect = 1";
$faf = mysql_query($query_faf, $SAGIP) or die(mysql_error());
$self = mysql_fetch_assoc($faf);
$titre = $self['prospect_titre'];
$nom = $self['prospect_nom'];
$prenom = $self['prospect_prenom'];

 $content=str_replace('$titre',$nom,$content);
 $content=str_replace('$nom',$nom,$content);
 $content=str_replace('$prenom',$prenom,$content);
Maintenant je veux afficher les charges du prospect dans un tableau word je fais donc cette requete :
$sqldipes = 'select * from tb_charge WHERE id_prospect = '.$_GET['id_prospect'];
	if ($resselectdipes = mysql_query($sqldipes)){
    while ($selectdipes = mysql_fetch_array($resselectdipes))
       { 
      $tableau = '<tr align="center" bgcolor="#FFFFFF" '.$color.'>
                <td align="center">'.$selectdipes["charge_type"].'</td>
                <td>'.$selectdipes["charge_mensualite"].'</td>
               	<td>'.$selectdipes["charge_dte_debut"].'</td>
                 <td>'.$selectdipes["charge_dte_fin"].'</td>
	<td>'.$selectdipes["charge_organisme"].'</td></tr>';	
$content=str_replace('$tableau',$tableau,$content);			                                
         }
   }
Mon probléme est que cette requete ne m'affiche qu'une ligne de la table tb_charge alors que dans ma base le prospect en a 3...

Ensuite j'ouvre WORD :
$filename="facture.doc";
 touch($filename);
 if (is_writable($filename)) {
  if (!$handle = fopen($filename, 'a')) {
   echo "Impossible d'ouvrir le fichier ($filename)";
   exit;
  }
  if (fwrite($handle, $content) === FALSE) {
   echo "Impossible d'écrire dans le fichier ($filename)";
   exit;
  }
  echo "<a href='$filename'>Télécharger le fichier</a>";
  fclose($handle);
 } else {
  echo "Le fichier $filename n'est pas accessible en écriture.";
 }
Comment créer un tableau dynamique dans word à partir de mon export.php ?

Posté : 22 nov. 2008, 15:06
par Ryle
Dans ta boucle tu fais appel à str_replace() pour remplacer ta chaine "$tableau" par la ligne générée. Or une fois le remplacement effectué, ta chaine "$tableau" n'est plus présente et ne peut donc pas être remplacée, complété ou ce que tu veux par les itérations suivantes de ton while...

L'idéal serait donc de le replacer pendant le remplacement, pour que la prochaine ligne puisse faire de même :
$content = str_replace('$tableau', $tableau . '$tableau', $content);

En gros ta première itération ne va plus remplacer la chaine "$tableau", mais écrire à sa place et le déplacer pour que la prochaine itération puisse faire de même.

Une fois sorti du while, il te suffit de supprimer le dernier "$tableau" et tu devrais obtenir le résultat souhaité :
$content = str_replace('$tableau', '', $content);