8795 sujets

Développement web côté serveur, CMS

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 Smiley ohwell



Voici le code PHP :



<?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 ..