Bonjour,



je voudrais réaliser du publipostage en PHP grâce à des variables récupérés via une requêtes SQL.



En fait j'ai une table épreuve liée à des intervenants. Donc pour une épreuve il peut exister plusieurs intervenants. Je voudrais avoir un bouton qui permettrait d'imprimer des convocations personnalisées pour chaque intervenant suivant un modèle en XML ( édité sur WORD ).

J'ai donc suivi un tutoriel sur internet pour réalisé ceci. La seule subtilité est que je veux autant de convocations qu'il y a d'intervenants ( donc avec une boucle while après ma requête ). C'est ici que ça bloque , impossible de réaliser plusieurs fichiers :/



Voici le code PHP :



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
//connexion bdd
include('../../../../bdd/connexion.php');
$cxn = connect();
//récupère l'id passé en URL
$idEp = $_GET['idEp'];
$exterieur = "select * from epreuve e , externe_particip ep,exterieur ext where e.idEp = ep.idEp AND ep.idExt=ext.idEx AND e.idEp =".$idEp." ";
$reqExt = $cxn -> query($exterieur);
while($ligneExt = $reqExt->fetch(PDO::FETCH_ASSOC))
{
	$name = 'convoc.xml'; // nom du fichier à ouvrir
	$myFile = file_get_contents($name);
	$searchReplace = array(
	    '«NOM»' =>  $ligneExt["nomEx"],
	    '«PRE»' =>  $ligneExt["prenomEx"]
	    );
	$search  = array_keys($searchReplace);
	$replace = array_values($searchReplace);
	$nomFinale = 'convoc_'.$ligneExt["nomEx"].'_'.$ligneExt["prenomEx"].'.xml';
	// envoi d'un en-tête php qui indique au navigateur web que le contenu qui arrive 
	// est de type binaire et à exploiter par Word
	header('Content-Type: application/msword; name="'.$nomFinale.'"');
	header('Content-Transfer-Encoding: binary');
	header('Content-Disposition: attachment; filename="'.$nomFinale.'"');
	// on génère le flux de données à la volée, aucun stockage sur disque
	echo str_replace($search, $replace, $myFile);
}
?>

Merci d'avance ..