[FPDF] Utiliser variables dans PDF
Bonjour tout le monde,
J'essaie d'afficher la valeur d'une variable de session dans un PDF avec FPDF mais je n'y arrive pas.
J'ai pourtant déjà effectué ce genre de tâche sans problème :(
Voici mon code :
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <?php
session_start();
require('../fpdf.php');
//Connexion a la base
mysql_connect('localhost','root','mdp');
mysql_select_db('pharma');
$sql_annee = "SELECT Nom_complet FROM annees WHERE NOM_ANNEE = '".$_SESSION['choix_annee']."'";
$req_annee = mysql_query($sql_annee);
$annee = mysql_fetch_array($req_annee);
class PDF extends FPDF
{
//En-tête
function Header()
{
//Logo
$this->Image('../../Images/logo.png',10,8,17);
//Police Arial gras 15
$this->SetFont('Arial','B',12);
//Décalage à droite
$this->Cell(80);
//Titre
//$pdf->Cell(56,10,'Filiere choisie : ' . $_SESSION['Filiere_actuelle'] );
$this->Cell(30,10,'Institut de journalisme : '. $annee['Nom_complet'],0,'C');
//Saut de ligne
$this->Ln(20);
}
}
//Instanciation de la classe dérivée
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Institut de Pharmacie : '.$_SESSION['choix_annee'],0,'C');
$pdf->Ln();
$pdf->Cell(30,10,'Institut de Pharmacie : '. $annee['Nom_complet'],0,'C');
$pdf->AliasNbPages();
$pdf->Output();
?> |
Cela ne s'affiche ni dans l'en-tête, ni dans le corps.
EDIT :
Ma variable de session n'a pas l'air d'arriver dans mon code car quand je fais ceci :
Code:
$pdf->Cell(40,10,'requete sql : '.$sql_annee,0,'C');
j'obtiens ceci :
Citation:
SELECT Nom_complet FROM annees WHERE NOM_ANNEE = ''
Je crée ma variable de session en AJAX, c'est-à-dire que :
1) sur le changement d'une liste déroulante, j'appelle une fonction js qui envoie en paramètre la valeur de la liste déroulante.
2)J'envoie à PHP (AJAX) la valeur
3) la valeur postée est transformée en variable de session
J'ai vérifié le retour, ça fonctionne, voici quand même le code au cas où :
Code de la liste déroulante :
Code:
1 2 3 4 5 6 7 8
| <select name="select" onchange="Creer_var_session(this.value),window.open('RN.php')">
<option>Choisissez une année</option>
<option>BA1</option>
<option>BA2</option>
<option>BA3</option>
<option>MA1</option>
<option>MA2</option>
</select> |
code JS (Ajax) :
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| function getXhr()
{
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
function Creer_var_session(choix_annee)
{
var xhr = getXhr();
//si choix_annee correspond à "choisissez une année, je ne tiens pas compte (avec return)"
if(choix_annee.length > 3) return;
//alert(choix_annee);
xhr.onreadystatechange = function()
{
//alert(xhr.readyState);
//alert(xhr.status);
if(xhr.readyState == 4 && xhr.status == 200)
{
retour = xhr.responseText;
//alert("le retour " + retour);
document.getElementById('ca').innerHTML = retour;
//window.open('PDF/resume_cours.php');
}
}
// Ici on va voir comment faire du post
//j'ouvre le fichier Scripts/Comptage.php
xhr.open("POST","AJAX/creer_var_sess.php",true);
// ne pas oublier ça pour le post
//indispensable pour le POST
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("choix_annee="+choix_annee);
} |
Code PHP :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php
//var_dump($_POST);
//Transformation de la variable javascript (passé dans le $_POST) en variable de session PHP
$_SESSION['choix_annee'] = $_POST['choix_annee'];
$sql_annee = "SELECT Nom_complet FROM annees WHERE NOM_ANNEE = '".$_SESSION['choix_annee']."'";
echo $_SESSION['choix_annee'];
?> |
Merci d'avance et bon Dimanche.
beegees