je souhaite, au sein d'une boucle foreach, générer autant de pdf que de valeurs contenus dans un array() (Ici une variable de session $_SESSION['lisMed'] ) ... puis mailler chaque pdf à son destinataire avec la class PJMail
chaque boucle fait appel a une requête sql qui s'effectue bien et que je ne met pas ici car un peu longue et sans réelle importance.
En general , j'ai une boucle de 8-10 éléments à faire. Donc 8 à 10 pdf a generer et 8 -10 mails a faire partir a des destinataires différents. Les donnes sont tirés de la base de données.
Le hic est que seul le premier mail comporte un pdf correct ... et que les autres ont un pdf "vide".
Pourriez vous me dire où je fais une boulette dans mon script :
<?php include ('parametrix.inc.php'); // # POUR GENERER LE PDF require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php'); // # POUR MAILER require_once(dirname(__FILE__).'/pjmail/pjmail.class.php'); ob_start(); foreach ($_SESSION['listMed'] as $c=>$idMed) { $sql="SELECT .... ORDER BY dateDebut,M.nom, mois ASC"; $rep=mysql_query($sql) or die(mysql_error()); $row=mysql_num_rows($rep); $pluriel=($row>1)? 's' : ''; $msfr=mysql_fetch_row($rep); # pour exploiter les données avant de faire la boucle. ?> <page style="font-size:12pt" backtop="7mm" backbottom="7mm" backleft="10mm" backright="10mm" footer="page;" style="font-size: 10pt"> <br /><br /> Je soussigné, certifie avoir perçu en <?php echo $_SESSION['anRecap'];?><br />les honoraires suivants de la part de <?php echo $msfr[0];?> :<br /><br /><br /> <table cellspacing="10" style="width: 100%; border: solid 1px black; background: #E7E7E7; font-size:12pt;"> <tr> <th style="width:50%; text-align: center;">Période<?php echo $pluriel; ?></th> <th style="width:50%; text-align: right;">Rétrocession<?php echo $pluriel; ?></th> </tr> </table> <table cellspacing="10" style="width:100%; border:solid 1px black; font-size:12pt;"> <?php mysql_data_seek($rep,0); # on repart au début du tableau car on avait fait un mysql_fetch_row plus haut while($donnees=mysql_fetch_assoc($rep)) { ?> <tr> <td style="width:50%; text-align: center;"><?php echo $donnees['date_debut_fr'];?> au <?php echo $donnees['date_fin_fr'];?></td> <td style="width:50%;text-align: right;"><?php echo $donnees['retrocession'];?> €</td> </tr> <?php } ?> ...... le reste de la page </page> <?php $content= ob_get_clean(); $html2pdf = new HTML2PDF('P','A4','fr'); $html2pdf->WriteHTML($content); $content_PDF= $html2pdf->Output('mondoc'.$idMed.'.pdf',true); # POUR MAILER $mailText="Bonjour,<br /><br />Se trouve ci-joint, au format pdf, le justificatif comptable au cours de cette annee ".$_SESSION['anRecap'].".<br/><br />Pour ma part, je mentionnerai ce montant au titre des honoraires de l'exercice ".$_SESSION['anRecap'].".<br /><br />Bien confraternellement.<br />"; $mail = new PJmail(); $mail->setAllFrom('xxx@xxx.fr', "XXX"); $mail->addrecipient('xxx@xxx.fr'); $mail->addbcc('xxx@xxx.fr'); $mail->addsubject("Justificatif comptable ".$_SESSION['anRecap']); $mail->html = $mailText; $mail->addbinattachement("recap_".$_SESSION['anRecap'].".pdf", $content_PDF); $mail->sendmail(); #echo $res; } // end foreach ?>
je ne sais pas si c'est important : Avant de mettre en 'production' ... je m'envoi les mails à moi même . J'en recois autant que d'éléments dans le array() mais la PJ est pas OK pour tous sauf le premier.
Je vous remercie.