Publier un PDF avec la méthode GET - PHP  

Forum > PHP > Publier un PDF avec la méthode GET

Publier un PDF avec la méthode GET

Membre
# Le 20/11/2012 à 22h55
Voila j'aimerai générer un pdf avec la méthode get mais cela ne fonctionne pas, j'ai essayé pas mal de chose. Je vais vous montrer 3 codes :

Cette partie contient les fonctions.
  1. <?php
  2. /**
  3.  * Regroupe les fonctions d'accès aux données.
  4.  * @package default
  5.  * @author Arthur Martin
  6.  * @todo Fonctions retournant plusieurs lignes sont à réécrire.
  7.  */
  8.  
  9. /**
  10.  * Se connecte au serveur de données MySql.
  11.  * Se connecte au serveur de don
  12.  nées MySql à partir de valeurs
  13.  * prédéfinies de connexion (hôte, compte utilisateur et mot de passe).
  14.  * Retourne l'identifiant de connexion si succès obtenu, le booléen false
  15.  * si problème de connexion.
  16.  * @return resource identifiant de connexion
  17.  */
  18. function clotureVisiteur($idVisiteur)
  19. {
  20. $datesys=date('Y/m/d');
  21. $dmodif = explode("/", $datesys);
  22. if($dmodif[1] == 1)
  23. {
  24. $dmodif[0] = $dmodif[0] - 1;
  25. $dmodif[1] = 13;
  26. $dmodif[1] = sprintf('%02d');
  27. $datemodif = $dmodif[0].($dmodif[1]-1);
  28. }
  29. else
  30. {
  31. $dmodif[1] = sprintf('%02d', $dmodif[1]-1);
  32. $datemodif = $dmodif[0].($dmodif[1]);
  33. echo "UPDATE fichefrais SET idEtat='CL' WHERE '".$datemodif."' <= mois AND idVisiteur = '".$idVisiteur."'";
  34. }
  35. $exec=mysql_query("UPDATE fichefrais SET idEtat='CL' WHERE '".$datemodif."' <= mois AND idVisiteur = '".$idVisiteur."'");
  36. }
  37. function clotureComptable($idComptable)
  38. {
  39. $datesys=date(y/m/d);
  40. $dmodif = explode("/", $datesys);
  41. if(( 10 < $dmodif[2]) && ($dmodif[2] < 20))
  42. {
  43. if($dmodif[1] == 1)
  44. {
  45. $dmodif[0] = $dmodif[0] - 1;
  46. $dmodif[1] = 13;
  47. $dmodif[1] = sprintf('%02d');
  48. $datemodif = $dmodif[0].($dmodif[1]-1);
  49. }
  50. else
  51. {
  52. $dmodif[1] = sprintf('%02d');
  53. $datemodif = $dmodif[0].($dmodif[1]-1);
  54. }
  55. $exec=mysql_query("UPDATE fichefrais SET idEtat='CL' WHERE ".$datemodif." <= mois AND idVisiteur = ".$idVisiteur."");
  56. $ligne=mysql_fetch_array($exec);
  57. }
  58. }
  59.  
  60. function connecterServeurBD() {
  61. $hote = "localhost";
  62. /* $login = "userGsb";
  63.   $mdp = "secret"; */
  64. $login="root" ;
  65. $mdp="";
  66. return mysql_connect($hote, $login, $mdp);
  67. }
  68.  
  69. /**
  70.  * Sélectionne (rend active) la base de données.
  71.  * Sélectionne (rend active) la BD prédéfinie gsb_frais sur la connexion
  72.  * identifiée par $idCnx. Retourne true si succès, false sinon.
  73.  * @param resource $idCnx identifiant de connexion
  74.  * @return boolean succès ou échec de sélection BD
  75.  */
  76. function activerBD($idCnx) {
  77. $bd = "gsb_frais";
  78. $query = "SET CHARACTER SET utf8";
  79. // Modification du jeu de caractères de la connexion
  80. $res = mysql_query($query, $idCnx);
  81. $ok = mysql_select_db($bd, $idCnx);
  82. return $ok;
  83. }
  84.  
  85. /**
  86.  * Ferme la connexion au serveur de données.
  87.  * Ferme la connexion au serveur de données identifiée par l'identifiant de
  88.  * connexion $idCnx.
  89.  * @param resource $idCnx identifiant de connexion
  90.  * @return void
  91.  */
  92. function deconnecterServeurBD($idCnx) {
  93. mysql_close($idCnx);
  94. }
  95.  
  96. /**
  97.  * Echappe les caractères spéciaux d'une chaîne.
  98.  * Envoie la chaîne $str échappée, càd avec les caractères considérés spéciaux
  99.  * par MySql (tq la quote simple) précédés d'un , ce qui annule leur effet spécial
  100.  * @param string $str chaîne à échapper
  101.  * @return string chaîne échappée
  102.  */
  103. function filtrerChainePourBD($str) {
  104. if ( ! get_magic_quotes_gpc() ) {
  105. // si la directive de configuration magic_quotes_gpc est activée dans php.ini,
  106. // toute chaîne reçue par get, post ou cookie est déjà échappée
  107. // par conséquent, il ne faut pas échapper la chaîne une seconde fois
  108. $str = mysql_real_escape_string($str);
  109. }
  110. return $str;
  111. }
  112.  
  113. /**
  114.  * Fournit les informations sur un visiteur demandé.
  115.  * Retourne les informations du visiteur d'id $unId sous la forme d'un tableau
  116.  * associatif dont les clés sont les noms des colonnes(id, nom, prenom).
  117.  * @param resource $idCnx identifiant de connexion
  118.  * @param string $unId id de l'utilisateur
  119.  * @return array tableau associatif du visiteur
  120.  */
  121. function obtenirDetailVisiteur($idCnx, $unId) {
  122. $id = filtrerChainePourBD($unId);
  123. $requete = "select id, nom, prenom from visiteur where id='" . $unId . "'";
  124. $idJeuRes = mysql_query($requete, $idCnx);
  125. $ligne = false;
  126. if ( $idJeuRes ) {
  127. $ligne = mysql_fetch_assoc($idJeuRes);
  128. mysql_free_result($idJeuRes);
  129. }
  130. return $ligne ;
  131. }
  132.  
  133. /**
  134.  * Fournit les informations d'une fiche de frais.
  135.  * Retourne les informations de la fiche de frais du mois de $unMois (MMAAAA)
  136.  * sous la forme d'un tableau associatif dont les clés sont les noms des colonnes
  137.  * (nbJustitificatifs, idEtat, libelleEtat, dateModif, montantValide).
  138.  * @param resource $idCnx identifiant de connexion
  139.  * @param string $unMois mois demandé (MMAAAA)
  140.  * @param string $unIdVisiteur id visiteur
  141.  * @return array tableau associatif de la fiche de frais
  142.  */
  143. function obtenirDetailFicheFrais($idCnx, $unMois, $unIdVisiteur) {
  144. $unMois = filtrerChainePourBD($unMois);
  145. $ligne = false;
  146. $requete="select IFNULL(nbJustificatifs,0) as nbJustificatifs, Etat.id as idEtat, libelle as libelleEtat, dateModif, montantValide
  147. from FicheFrais inner join Etat on idEtat = Etat.id
  148. where idVisiteur='" . $unIdVisiteur . "' and mois='" . $unMois . "'";
  149. $idJeuRes = mysql_query($requete, $idCnx);
  150. if ( $idJeuRes ) {
  151. $ligne = mysql_fetch_assoc($idJeuRes);
  152. }
  153. mysql_free_result($idJeuRes);
  154.  
  155. return $ligne ;
  156. }
  157.  
  158. /**
  159.  * Vérifie si une fiche de frais existe ou non.
  160.  * Retourne true si la fiche de frais du mois de $unMois (MMAAAA) du visiteur
  161.  * $idVisiteur existe, false sinon.
  162.  * @param resource $idCnx identifiant de connexion
  163.  * @param string $unMois mois demandé (MMAAAA)
  164.  * @param string $unIdVisiteur id visiteur
  165.  * @return booléen existence ou non de la fiche de frais
  166.  */
  167. function existeFicheFrais($idCnx, $unMois, $unIdVisiteur) {
  168. $unMois = filtrerChainePourBD($unMois);
  169. $requete = "select idVisiteur from FicheFrais where idVisiteur='" . $unIdVisiteur .
  170. "' and mois='" . $unMois . "'";
  171. $idJeuRes = mysql_query($requete, $idCnx);
  172. $ligne = false ;
  173. if ( $idJeuRes ) {
  174. $ligne = mysql_fetch_assoc($idJeuRes);
  175. mysql_free_result($idJeuRes);
  176. }
  177.  
  178. // si $ligne est un tableau, la fiche de frais existe, sinon elle n'exsite pas
  179. return is_array($ligne) ;
  180. }
  181.  
  182. /**
  183.  * Fournit le mois de la dernière fiche de frais d'un visiteur.
  184.  * Retourne le mois de la dernière fiche de frais du visiteur d'id $unIdVisiteur.
  185.  * @param resource $idCnx identifiant de connexion
  186.  * @param string $unIdVisiteur id visiteur
  187.  * @return string dernier mois sous la forme AAAAMM
  188.  */
  189. function obtenirDernierMoisSaisi($idCnx, $unIdVisiteur) {
  190. $requete = "select max(mois) as dernierMois from FicheFrais where idVisiteur='" .
  191. $unIdVisiteur . "'";
  192. $idJeuRes = mysql_query($requete, $idCnx);
  193. $dernierMois = false ;
  194. if ( $idJeuRes ) {
  195. $ligne = mysql_fetch_assoc($idJeuRes);
  196. $dernierMois = $ligne["dernierMois"];
  197. mysql_free_result($idJeuRes);
  198. }
  199. return $dernierMois;
  200. }
  201.  
  202. /**
  203.  * Ajoute une nouvelle fiche de frais et les éléments forfaitisés associés,
  204.  * Ajoute la fiche de frais du mois de $unMois (MMAAAA) du visiteur
  205.  * $idVisiteur, avec les éléments forfaitisés associés dont la quantité initiale
  206.  * est affectée à 0. Clôt éventuellement la fiche de frais précédente du visiteur.
  207.  * @param resource $idCnx identifiant de connexion
  208.  * @param string $unMois mois demandé (MMAAAA)
  209.  * @param string $unIdVisiteur id visiteur
  210.  * @return void
  211.  */
  212. function ajouterFicheFrais($idCnx, $unMois, $unIdVisiteur) {
  213. $unMois = filtrerChainePourBD($unMois);
  214. // modification de la dernière fiche de frais du visiteur
  215. $dernierMois = obtenirDernierMoisSaisi($idCnx, $unIdVisiteur);
  216. $laDerniereFiche = obtenirDetailFicheFrais($idCnx, $dernierMois, $unIdVisiteur);
  217. if ( is_array($laDerniereFiche) && $laDerniereFiche['idEtat']=='CR'){
  218. modifierEtatFicheFrais($idCnx, $dernierMois, $unIdVisiteur, 'CL');
  219. }
  220.  
  221. // ajout de la fiche de frais à l'état Créé
  222. $requete = "insert into FicheFrais (idVisiteur, mois, nbJustificatifs, montantValide, idEtat, dateModif) values ('"
  223. . $unIdVisiteur
  224. . "','" . $unMois . "',0,NULL, 'CR', '" . date("Y-m-d") . "')";
  225. mysql_query($requete, $idCnx);
  226.  
  227. // ajout des éléments forfaitisés
  228. $requete = "select id from FraisForfait";
  229. $idJeuRes = mysql_query($requete, $idCnx);
  230. if ( $idJeuRes ) {
  231. $ligne = mysql_fetch_assoc($idJeuRes);
  232. while ( is_array($ligne) ) {
  233. $idFraisForfait = $ligne["id"];
  234. // insertion d'une ligne frais forfait dans la base
  235. $requete = "insert into LigneFraisForfait (idVisiteur, mois, idFraisForfait, quantite)
  236. values ('" . $unIdVisiteur . "','" . $unMois . "','" . $idFraisForfait . "',0)";
  237. mysql_query($requete, $idCnx);
  238. // passage au frais forfait suivant
  239. $ligne = mysql_fetch_assoc ($idJeuRes);
  240. }
  241. mysql_free_result($idJeuRes);
  242. }
  243. }
  244.  
  245. /**
  246.  * Retourne le texte de la requête select concernant les mois pour lesquels un
  247.  * visiteur a une fiche de frais.
  248.  *
  249.  * La requête de sélection fournie permettra d'obtenir les mois (AAAAMM) pour
  250.  * lesquels le visiteur $unIdVisiteur a une fiche de frais.
  251.  * @param string $unIdVisiteur id visiteur
  252.  * @return string texte de la requête select
  253.  */
  254. function obtenirReqMoisFicheFrais($unIdVisiteur) {
  255. $req = "select fichefrais.mois as mois from fichefrais where fichefrais.idvisiteur ='"
  256. . $unIdVisiteur . "' order by fichefrais.mois desc ";
  257. return $req ;
  258. }
  259.  
  260. function obtenirMoisVisiteur() {
  261. $rek = "select distinct fichefrais.mois as mois from fichefrais order by fichefrais.mois desc ";
  262. return $rek ;
  263. }
  264.  
  265. function obtenirReqIdFicheFrais() {
  266. $rec = "select Visiteur.nom as nom, visiteur.id as id, Visiteur.prenom as prenom from visiteur";
  267. return $rec ;
  268. }
  269.  
  270. /**
  271.  * Retourne le texte de la requête select concernant les éléments forfaitisés
  272.  * d'un visiteur pour un mois donnés.
  273.  *
  274.  * La requête de sélection fournie permettra d'obtenir l'id, le libellé et la
  275.  * quantité des éléments forfaitisés de la fiche de frais du visiteur
  276.  * d'id $idVisiteur pour le mois $mois
  277.  * @param string $unMois mois demandé (MMAAAA)
  278.  * @param string $unIdVisiteur id visiteur
  279.  * @return string texte de la requête select
  280.  */
  281. function obtenirReqEltsForfaitFicheFrais($unMois, $unIdVisiteur) {
  282. $unMois = filtrerChainePourBD($unMois);
  283. $requete = "select idFraisForfait, libelle, quantite from LigneFraisForfait
  284. inner join FraisForfait on FraisForfait.id = LigneFraisForfait.idFraisForfait
  285. where idVisiteur='" . $unIdVisiteur . "' and mois='" . $unMois . "'";
  286. return $requete;
  287. }
  288.  
  289. /**
  290.  * Retourne le texte de la requête select concernant les éléments hors forfait
  291.  * d'un visiteur pour un mois donnés.
  292.  *
  293.  * La requête de sélection fournie permettra d'obtenir l'id, la date, le libellé
  294.  * et le montant des éléments hors forfait de la fiche de frais du visiteur
  295.  * d'id $idVisiteur pour le mois $mois
  296.  * @param string $unMois mois demandé (MMAAAA)
  297.  * @param string $unIdVisiteur id visiteur
  298.  * @return string texte de la requête select
  299.  */
  300. function obtenirReqEltsHorsForfaitFicheFrais($unMois, $unIdVisiteur) {
  301. $unMois = filtrerChainePourBD($unMois);
  302. $requete = "select id, date, libelle, montant from LigneFraisHorsForfait
  303. where idVisiteur='" . $unIdVisiteur
  304. . "' and mois='" . $unMois . "'";
  305. return $requete;
  306. }
  307.  
  308. /**
  309.  * Supprime une ligne hors forfait.
  310.  * Supprime dans la BD la ligne hors forfait d'id $unIdLigneHF
  311.  * @param resource $idCnx identifiant de connexion
  312.  * @param string $idLigneHF id de la ligne hors forfait
  313.  * @return void
  314.  */
  315. function supprimerLigneHF($idCnx, $unIdLigneHF) {
  316. $requete = "delete from LigneFraisHorsForfait where id = " . $unIdLigneHF;
  317. mysql_query($requete, $idCnx);
  318. }
  319.  
  320. /**
  321.  * Ajoute une nouvelle ligne hors forfait.
  322.  * Insère dans la BD la ligne hors forfait de libellé $unLibelleHF du montant
  323.  * $unMontantHF ayant eu lieu à la date $uneDateHF pour la fiche de frais du mois
  324.  * $unMois du visiteur d'id $unIdVisiteur
  325.  * @param resource $idCnx identifiant de connexion
  326.  * @param string $unMois mois demandé (AAMMMM)
  327.  * @param string $unIdVisiteur id du visiteur
  328.  * @param string $uneDateHF date du frais hors forfait
  329.  * @param string $unLibelleHF libellé du frais hors forfait
  330.  * @param double $unMontantHF montant du frais hors forfait
  331.  * @return void
  332.  */
  333. function ajouterLigneHF($idCnx, $unMois, $unIdVisiteur, $uneDateHF, $unLibelleHF, $unMontantHF) {
  334. $unLibelleHF = filtrerChainePourBD($unLibelleHF);
  335. $uneDateHF = filtrerChainePourBD(convertirDateFrancaisVersAnglais($uneDateHF));
  336. $unMois = filtrerChainePourBD($unMois);
  337. $requete = "insert into LigneFraisHorsForfait(idVisiteur, mois, date, libelle, montant)
  338. values ('" . $unIdVisiteur . "','" . $unMois . "','" . $uneDateHF . "','" . $unLibelleHF . "'," . $unMontantHF .")";
  339. mysql_query($requete, $idCnx);
  340. }
  341.  
  342. /**
  343.  * Modifie les quantités des éléments forfaitisés d'une fiche de frais.
  344.  * Met à jour les éléments forfaitisés contenus
  345.  * dans $desEltsForfaits pour le visiteur $unIdVisiteur et
  346.  * le mois $unMois dans la table LigneFraisForfait, après avoir filtré
  347.  * (annulé l'effet de certains caractères considérés comme spéciaux par
  348.  * MySql) chaque donnée
  349.  * @param resource $idCnx identifiant de connexion
  350.  * @param string $unMois mois demandé (MMAAAA)
  351.  * @param string $unIdVisiteur id visiteur
  352.  * @param array $desEltsForfait tableau des quantités des éléments hors forfait
  353.  * avec pour clés les identifiants des frais forfaitisés
  354.  * @return void
  355.  */
  356. function modifierEltsForfait($idCnx, $unMois, $unIdVisiteur, $desEltsForfait) {
  357. $unMois=filtrerChainePourBD($unMois);
  358. $unIdVisiteur=filtrerChainePourBD($unIdVisiteur);
  359. foreach ($desEltsForfait as $idFraisForfait => $quantite) {
  360. $requete = "update LigneFraisForfait set quantite = " . $quantite
  361. . " where idVisiteur = '" . $unIdVisiteur . "' and mois = '"
  362. . $unMois . "' and idFraisForfait='" . $idFraisForfait . "'";
  363. mysql_query($requete, $idCnx);
  364. }
  365. }
  366.  
  367. /**
  368.  * Contrôle les informations de connexionn d'un utilisateur.
  369.  * Vérifie si les informations de connexion $unLogin, $unMdp sont ou non valides.
  370.  * Retourne les informations de l'utilisateur sous forme de tableau associatif
  371.  * dont les clés sont les noms des colonnes (id, nom, prenom, login, mdp)
  372.  * si login et mot de passe existent, le booléen false sinon.
  373.  * @param resource $idCnx identifiant de connexion
  374.  * @param string $unLogin login
  375.  * @param string $unMdp mot de passe
  376.  * @return array tableau associatif ou booléen false
  377.  */
  378. function verifierInfosConnexion($idCnx, $unLogin, $unMdp) {
  379. $unLogin = filtrerChainePourBD($unLogin);
  380. $unMdp = filtrerChainePourBD($unMdp);
  381. // le mot de passe est crypté dans la base avec la fonction de hachage md5
  382. $req = "select id, nom, prenom, login, mdp from Visiteur where login='".$unLogin."' and mdp='" . $unMdp . "'";
  383. $idJeuRes = mysql_query($req, $idCnx);
  384. $ligne = false;
  385. if ( $idJeuRes ) {
  386. $ligne = mysql_fetch_assoc($idJeuRes);
  387. mysql_free_result($idJeuRes);
  388. }
  389. return $ligne;
  390. }
  391.  
  392. /**
  393.  * Modifie l'état et la date de modification d'une fiche de frais
  394.  
  395.  * Met à jour l'état de la fiche de frais du visiteur $unIdVisiteur pour
  396.  * le mois $unMois à la nouvelle valeur $unEtat et passe la date de modif à
  397.  * la date d'aujourd'hui
  398.  * @param resource $idCnx identifiant de connexion
  399.  * @param string $unIdVisiteur
  400.  * @param string $unMois mois sous la forme aaaamm
  401.  * @return void
  402.  */
  403. function modifierEtatFicheFrais($idCnx, $unMois, $unIdVisiteur, $unEtat) {
  404. $requete = "update FicheFrais set idEtat = '" . $unEtat .
  405. "', dateModif = now() where idVisiteur ='" .
  406. $unIdVisiteur . "' and mois = '". $unMois . "'";
  407. mysql_query($requete, $idCnx);
  408. }
  409. // fonction vérifier infos comptable
  410.  
  411. function verifierInfosConnexionComptable($idCnx, $unLogin, $unMdp) {
  412. $unLogin = filtrerChainePourBD($unLogin);
  413. $unMdp = filtrerChainePourBD($unMdp);
  414. // le mot de passe est crypté dans la base avec la fonction de hachage md5
  415. $req2 = "select id, nom, prenom, login, mdp from comptable where login='".$unLogin."' and mdp='" . $unMdp . "'";
  416. echo $req2;
  417. $idJeuRes2 = mysql_query($req2, $idCnx);
  418. $ligne = false;
  419. if ( $idJeuRes2 ) {
  420. $ligne = mysql_fetch_assoc($idJeuRes2);
  421. mysql_free_result($idJeuRes2);
  422. }
  423. return $ligne;
  424. }
  425. function obtenirDetailComptable($idCnx, $unId) {
  426. $id = filtrerChainePourBD($unId);
  427. $requete2 = "select id, nom, prenom, login, mdp from comptable where id='" . $unId . "'";
  428. $idJeuRes2 = mysql_query($requete2, $idCnx);
  429. $ligne = false;
  430. if ( $idJeuRes2 ) {
  431. $ligne = mysql_fetch_assoc($idJeuRes2);
  432. mysql_free_result($idJeuRes2);
  433. }
  434. return $ligne ;
  435. }
  436.  
  437. ?>


Cette partie contient le formulaire :

  1. <?php
  2. /**
  3.  * Script de contrôle et d'affichage du cas d'utilisation "Consulter une fiche de frais"
  4.  * @package default
  5.  * @todo RAS
  6.  */
  7. $repInclude = './include/';
  8. require($repInclude . "_init.inc.php");
  9.  
  10. // page inaccessible si visiteur non connecté
  11. if ( ! estVisiteurConnecte() && ! estComptableConnecte()) {
  12. header("Location: cSeConnecter.php");
  13. }
  14. require($repInclude . "_entete.inc.html");
  15. require($repInclude . "_sommaire.inc.php");
  16.  
  17. // acquisition des données entrées, ici le numéro de mois et l'étape du traitement
  18. $moisSaisi=lireDonneePost("lstMois", "");
  19. $etape=lireDonneePost("etape","");
  20.  
  21. if(isset ($_GET['lstVisiteur']) && (isset ($_GET['lstMois'])))
  22. {
  23. if (isset ($_GET['lstVisiteur']))
  24. $idvisit = $_GET['lstVisiteur'];
  25. if (isset ($_GET['lstMois']))
  26. $mois = $_GET['lstMois'];
  27.  
  28. $sql = "UPDATE fichefrais SET idEtat='VA' where idVisiteur = '$idvisit' AND mois=$mois";
  29. $exec = mysql_query($sql);
  30. }
  31.  
  32. if ($etape != "demanderConsult" && $etape != "validerConsult") {
  33. // si autre valeur, on considère que c'est le début du traitement
  34. $etape = "demanderConsult";
  35. }
  36. if ($etape == "validerConsult") { // l'utilisateur valide ses nouvelles données
  37.  
  38. // vérification de l'existence de la fiche de frais pour le mois demandé
  39. $existeFicheFrais = existeFicheFrais($idConnexion, $moisSaisi, $idvisit);
  40. // si elle n'existe pas, on la crée avec les élets frais forfaitisés à 0
  41. if ( !$existeFicheFrais ) {
  42. ajouterErreur($tabErreurs, "Aucun enregistrement pour ce mois");
  43. }
  44. else {
  45. // récupération des données sur la fiche de frais demandée
  46. $tabFicheFrais = obtenirDetailFicheFrais($idConnexion, $moisSaisi, $idvisit);
  47. }
  48. }
  49. ?>
  50. <!-- Division principale -->
  51. <div id="contenu">
  52. <h2>Mes fiches de frais</h2>
  53. <h3>Mois &agrave s&eacutelectionner : </h3>
  54. <form action="cValidationFichesFrais.php?id='$idvisit'&mois='$mois'" method="get">
  55. <div class="corpsForm">
  56. <input type="hidden" name="etape" value="validerConsult" />
  57. <p>
  58. <label for="lstMois">Mois : </label>
  59. <select id="lstMois" name="lstMois" title="Sélectionnez le mois souhaité pour la fiche de frais">
  60. <?php
  61. // on propose tous les mois pour lesquels le visiteur a une fiche de frais
  62. $rek = obtenirMoisVisiteur();
  63. $idJeuMois = mysql_query($rek);
  64. $lgMois = mysql_fetch_assoc($idJeuMois);
  65. while ( is_array($lgMois) ) {
  66. $mois = $lgMois["mois"];
  67. $noMois = intval(substr($mois, 4, 2));
  68. $annee = intval(substr($mois, 0, 4));
  69. ?>
  70. <option value="<?php echo $mois; ?>"<?php if ($moisSaisi == $mois) { ?> selected="selected"<?php } ?>><?php echo obtenirLibelleMois($noMois) . " " . $annee; ?></option>
  71. <?php
  72. $lgMois = mysql_fetch_assoc($idJeuMois);
  73. }
  74. mysql_free_result($idJeuMois);
  75. ?>
  76. </select>
  77. </p>
  78. <p>
  79. <label for="lstVisiteur">Visiteur : </label>
  80. <select id="lstVisiteur" name="lstVisiteur" title="Sélectionnez l'Id du visiteur">
  81. <?php
  82. // on propose tous les Visiteurs
  83. $rec = obtenirReqIdFicheFrais();
  84. $idvisiteur = mysql_query($rec);
  85. $lgUsers = mysql_fetch_assoc($idvisiteur);
  86. while(is_array($lgUsers)){
  87. $nom = $lgUsers['nom'];
  88. $id = $lgUsers['id'];
  89.  
  90. ?>
  91. <option value="<?php echo $id ?>"><?php echo $nom ?></option>
  92. <?php
  93. $lgUsers = mysql_fetch_assoc($idvisiteur);
  94. }
  95.  
  96. ?>
  97. </select>
  98. </p>
  99. </div>
  100. <div class="piedForm">
  101. <p>
  102. <input id="ok" type="submit" value="Valider" size="20"
  103. title="Demandez à consulter cette fiche de frais" />
  104. <input id="annuler" type="reset" value="Effacer" size="20" />
  105. </p>
  106. </div>
  107.  
  108. </form>
  109. <?php
  110.  
  111. // demande et affichage des différents éléments (forfaitisés et non forfaitisés)
  112. // de la fiche de frais demandée, uniquement si pas d'erreur détecté au contrôle
  113. if ( $etape == "validerConsult" ) {
  114. if ( nbErreurs($tabErreurs) > 0 ) {
  115. echo toStringErreurs($tabErreurs) ;
  116. }
  117. else {
  118. ?>
  119. <h3>Fiche de frais du mois de <?php echo obtenirLibelleMois(intval(substr($moisSaisi,4,2))) . " " . substr($moisSaisi,0,4); ?> <a href='cFicheFraisPDF.php?id="$idvisit"&mois="$mois"'> <img src='images/logo_pdf.png '> </a>:
  120. <em><?php echo $tabFicheFrais["libelleEtat"]; ?> </em>
  121. depuis le <em><?php echo $tabFicheFrais["dateModif"]; ?></em></h3>
  122. <div class="encadre">
  123. <p>Montant valid&eacute : <?php echo $tabFicheFrais["montantValide"] ;
  124. ?>
  125. </p>
  126. <?php
  127. // demande de la requête pour obtenir la liste des éléments
  128. // forfaitisés du visiteur connecté pour le mois demandé
  129. $req = obtenirReqEltsForfaitFicheFrais($moisSaisi, $idvisit);
  130. $idJeuEltsFraisForfait = mysql_query($req, $idConnexion);
  131. echo mysql_error($idConnexion);
  132. $lgEltForfait = mysql_fetch_assoc($idJeuEltsFraisForfait);
  133. // parcours des frais forfaitisés du visiteur connecté
  134. // le stockage intermédiaire dans un tableau est nécessaire
  135. // car chacune des lignes du jeu d'enregistrements doit être doit être
  136. // affichée au sein d'une colonne du tableau HTML
  137. $tabEltsFraisForfait = array();
  138. while ( is_array($lgEltForfait) ) {
  139. $tabEltsFraisForfait[$lgEltForfait["libelle"]] = $lgEltForfait["quantite"];
  140. $lgEltForfait = mysql_fetch_assoc($idJeuEltsFraisForfait);
  141. }
  142. mysql_free_result($idJeuEltsFraisForfait);
  143. ?>
  144. <table class="listeLegere">
  145. <caption>Quantit&eacutes des &eacutel&eacutements forfaitis&eacutes </caption>
  146. <tr>
  147. <?php
  148. // premier parcours du tableau des frais forfaitisés du visiteur connecté
  149. // pour afficher la ligne des libellés des frais forfaitisés
  150. foreach ( $tabEltsFraisForfait as $unLibelle => $uneQuantite ) {
  151. ?>
  152. <th><?php echo $unLibelle ; ?></th>
  153. <?php
  154. }
  155. ?>
  156. </tr>
  157. <tr>
  158. <?php
  159. // second parcours du tableau des frais forfaitisés du visiteur connecté
  160. // pour afficher la ligne des quantités des frais forfaitisés
  161. foreach ( $tabEltsFraisForfait as $unLibelle => $uneQuantite ) {
  162. ?>
  163. <td class="qteForfait"><?php echo $uneQuantite ; ?></td>
  164. <?php
  165. }
  166. ?>
  167. </tr>
  168. </table>
  169. <table class="listeLegere">
  170. <caption>Descriptif des &eacutel&eacutements hors forfait - <?php echo $tabFicheFrais["nbJustificatifs"]; ?> justificatifs re&ccedilus -
  171. </caption>
  172. <tr>
  173. <th class="date">Date</th>
  174. <th class="libelle">Libell&eacute</th>
  175. <th class="montant">Montant</th>
  176. </tr>
  177. <?php
  178. // demande de la requête pour obtenir la liste des éléments hors
  179. // forfait du visiteur connecté pour le mois demandé
  180. $req = obtenirReqEltsHorsForfaitFicheFrais($moisSaisi, $idvisit);
  181. $idJeuEltsHorsForfait = mysql_query($req, $idConnexion);
  182. $lgEltHorsForfait = mysql_fetch_assoc($idJeuEltsHorsForfait);
  183.  
  184. // parcours des éléments hors forfait
  185. while ( is_array($lgEltHorsForfait) ) {
  186. ?>
  187. <tr>
  188. <td><?php echo $lgEltHorsForfait["date"] ; ?></td>
  189. <td><?php echo filtrerChainePourNavig($lgEltHorsForfait["libelle"]) ; ?></td>
  190. <td><?php echo $lgEltHorsForfait["montant"] ; ?></td>
  191. </tr>
  192. <?php
  193. $lgEltHorsForfait = mysql_fetch_assoc($idJeuEltsHorsForfait);
  194. }
  195. mysql_free_result($idJeuEltsHorsForfait);
  196. ?>
  197. </table>
  198. </div>
  199. <?php
  200. }
  201. }
  202. ?>
  203. </div>
  204. <?php
  205. require($repInclude . "_pied.inc.html");
  206. require($repInclude . "_fin.inc.php");
  207. ?>


Et enfin cette dernière la page de génération du pdf :

  1. <?php
  2. session_start(); // On démarre la session AVANT toute chose
  3.  
  4. ob_end_clean();
  5. @ini_set('memory_limit', '16M');
  6. include_once('fpdf.php') ;
  7. include_once('phpToPDF.php') ;
  8. //on initialise les données entete et pied de page
  9. $_SESSION['entete']="NON" ;
  10. $_SESSION['orientation']="C" ; //classique
  11.  
  12. $proprieteHeader = array(
  13. 'T_COLOR' => array(0,0,0),
  14. 'T_SIZE' => 11,
  15. 'T_FONT' => 'Arial',
  16. 'T_ALIGN_COL0' => 'L',
  17. 'T_ALIGN' => 'C',
  18. 'V_ALIGN' => 'T',
  19. 'T_TYPE' => 'N',
  20. 'LN_SIZE' => 5,
  21. 'BG_COLOR_COL0' => array(255, 255, 255),
  22. 'BG_COLOR' => array(255, 255, 255),
  23. 'BRD_COLOR' => array(0,0,0),
  24. 'BRD_SIZE' => 0.1,
  25. 'BRD_TYPE' => 1,
  26. 'BRD_TYPE_NEW_PAGE' => '',
  27. );
  28.  
  29. // Définition des propriétés du reste du contenu du tableau.
  30. $proprieteContenu = array(
  31. 'T_COLOR' => array(0,0,0),
  32. 'T_SIZE' => 11,
  33. 'T_FONT' => 'Arial',
  34. 'T_ALIGN_COL0' => 'L',
  35. 'T_ALIGN' => 'R',
  36. 'V_ALIGN' => 'M',
  37. 'T_TYPE' => '',
  38. 'LN_SIZE' => 6,
  39. 'BG_COLOR_COL0' => array(255, 255, 255),
  40. 'BG_COLOR' => array(255,255,255),
  41. 'BRD_COLOR' => array(0,0,0),
  42. 'BRD_SIZE' => 0.1,
  43. 'BRD_TYPE' => '1',
  44. 'BRD_TYPE_NEW_PAGE' => '',
  45. );
  46.  
  47. // Définition des propriétés du tableau.
  48. $proprietesTableau = array(
  49. 'BRD_COLOR' => array(0,0,0),
  50. 'BRD_SIZE' => '0.1',
  51. 'BRD_TYPE' => 0,
  52. 'TB_ALIGN' => 'C',
  53. 'L_MARGIN' => 0,
  54. );
  55.  
  56.  
  57. $pdf=new phpToPDF();
  58.  
  59.  
  60.  
  61. // Contenu du header du tableau.
  62. $contenuHeader = array() ;
  63. $contenuTableau=array();
  64.  
  65. $numCellEntete=0;
  66. $contenuHeader[$numCellEntete++]=30 ; //largeur colonne forfait étape
  67. $contenuHeader[$numCellEntete++]=30 ; //largeur colonne frais kilométrique
  68. $contenuHeader[$numCellEntete++]=30 ; //largeur colonne nuit hôtel
  69. $contenuHeader[$numCellEntete++]=30 ; //largeur colonne repas restaurant
  70. $contenuHeader[$numCellEntete++]='[C] Forfait étape' ; //contenu colonne forfait étape
  71. $contenuHeader[$numCellEntete++]='[C] Frais kilométrique' ; //contenu colonne frais kilométrique
  72. $contenuHeader[$numCellEntete++]='[C] Nuit hôtel' ; //contenu colonne nuit hôtel
  73. $contenuHeader[$numCellEntete++]='[C] Repas restaurant' ; //contenu colonne repas restaurant
  74.  
  75.  
  76. $pdf->SetMargins(5,5,0);
  77. $pdf->SetAutoPageBreak(true,10);
  78. $pdf->startPageNums();
  79. $pdf->AliasNbPages();
  80.  
  81. // Contenu du tableau.
  82. $numCellDetail=0 ;
  83.  
  84. // on se connecte à notre base
  85. $base = mysql_connect ('localhost', 'root', '');
  86. mysql_select_db ('gsb_frais', $base) ;
  87.  
  88. //recherche des groupes
  89. $sql = "select idFraisForfait, fraisforfait.libelle, lignefraisforfait.quantite as quantite from LigneFraisForfait
  90. inner join FraisForfait on FraisForfait.id = LigneFraisForfait.idFraisForfait
  91. where lignefraisforfait.idVisiteur='a131' and LigneFraisForfait.mois='201211'";
  92.  
  93. $exec = mysql_query($sql) or die(mysql_error());
  94. while ( $ligne = mysql_fetch_array($exec)) {
  95. $contenuTableau[$numCellDetail++]="[L] ".$ligne['quantite'] ;
  96.  
  97.  
  98. }
  99. $pdf->AddPage();
  100. $pdf->drawTableau($pdf, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
  101. $pdf->Output();
  102.  
  103.  
  104. ?>
  105.  


Merci une fois encore pour votre aide.