Page 1 sur 2

session start et fpdf

Posté : 16 janv. 2011, 16:38
par LJ01
bonjour
je n'arrive pas à trouver la solution à mon problème
j'essai de développer un module pour Joomla1.5, qui lorsque je clique sur une icone imprimer affiche le résultats des calculs de mon module dans un pdf
mais je n'arrive pas à appeler mes variables qui sont dans le fichier php principale de mon module
j'utilise (enfin j'essaie d'utiliser) la librairie fpdfhttp://www.fpdf.org/ et session start pour appeler ems varibles
voici ce qu'il y a dans le premier fichier php
<?php
session_start();
//var_dump($_POST);
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['year'] = $_POST['year'];

//echo "<br /><a href='/modules/mod_CO2profil/element/printpdf.php'>page 2</a>";

//Related Content//
/**
* @Copyright (C) 2011-janvier
* @ All rights reserved
* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
* @version 2.9
*
**/             

defined( '_JEXEC' ) or die( 'Restricted access' ); 

?>

<body>
<html>

  <script language="javascript">
  function popup_aide(page)      {
  window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes, width=500, height=500");      }
  </SCRIPT>
  
<form action='<?php $_SERVER[PHP_SELF];?>' method='post'>


<?php 
$name_profil=$params->get('name_profil');
$color_form=$params->get('color_form');
dans le fichier php devant créer mon pdf voici ce qu'il y a
<?php
session_start();

echo $_SESSION['naam']; 
echo $_SESSION['year'];

require('./fpdf.php');


class PDF extends FPDF
{

//En-tête
function Header()
{
	//Logo

	$this->Image('world.png',10,8,23,0,'','http://lau.jarry.free.fr/index.php/logiciel-libre/calculs-co2');
	//Police Arial gras 15
	$this->SetFont('Arial','B',15);
	//Décalage à droite
	$this->Cell(50);
	//Titre
	$this->Cell(100,10,'Profil Co2 de '.$_SESSION['naam'].'',1,0,'C');
	$this->Cell($_SESSION['naam']);
	//Saut de ligne
	$this->Ln(10);
	$this->Cell(10);
	$this->SetFont('Arial','',15);
	$this->Cell(0,10,'pour l année '.$_SESSION['year'].'',0,0,'C');
	$this->Ln(20);
	$this->SetFont('Arial','',11);
	$this->MultiCell(0,8,'Ce profil est établi avec les facteurs de conversion CO2 du Bilan Carbone. Ils comprennent les énergies directes et indirectes.',0,1);
	$this->Ln(10);
}

//Chargement des données
function LoadData($file)
{
	//Lecture des lignes du fichier
	$lines=file($file);
	$data=array();
	foreach($lines as $line)
		$data[]=explode(';',chop($line));
	return $data;
}


//Tableau coloré
function FancyTable($header,$data)
{
	//Couleurs, épaisseur du trait et police grasse
	$this->SetFillColor(128,0,0);
	$this->SetTextColor(255);
	$this->SetDrawColor(128,0,0);
	$this->SetLineWidth(.3);
	$this->SetFont('','B');
	//En-tête
	$w=array(40,35);
	for($i=0;$i<count($header);$i++)
		$this->Cell($w[$i],7,$header[$i],1,0,'C',1);
	$this->Ln();
	//Restauration des couleurs et de la police
	$this->SetFillColor(224,235,255);
	$this->SetTextColor(0);
	$this->SetFont('');
	//Données
	$fill=false;
	foreach($data as $row)
	{
		$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
		$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
		$this->Ln();
		$fill=!$fill;
	}
	$this->Cell(array_sum($w),0,'','T');
}

//Pied de page
function Footer()
{
	//Positionnement à 1,5 cm du bas
	$this->SetY(-15);
	//Police Arial italique 8
	$this->SetFont('Arial','I',8);
	//Numéro de page
	$this->Cell(0,10,'Module Joomla!1.5 - Profil CO2',0,0,'C');
}

}

$pdf=new PDF();
//Titres des colonnes
$header=array('Energie','Co2 (kg)');
//Chargement des données
$data=$pdf->LoadData('pays.txt');
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->FancyTable($header,$data);
$pdf->SetTitle('Profil CO2');
$pdf->SetAuthor('LJ01');
$pdf->write(5,$_SESSION['naam']);

$pdf->Output();
?>
le pdf s'affiche bien mais pas les variables
une aide est nécessaire
le module est en text ICIhttp://batenergie.free.fr/index.php/la-charte
merci LJ

Re: session start et fpdf

Posté : 17 janv. 2011, 15:19
par Invité
je viens de penser à une chose
vu que je suis dans un module ma session start n'est peut être pas démarré en premier dans ma page
et donc ne ramène pas mes variables dans la deuxième !?
ce qui voudrait dire que la session start n'est pas adapté à mon problème
est-ce que quelqu'un peut m'en dire plus

merci LJ

Re: session start et fpdf

Posté : 17 janv. 2011, 15:58
par xTG
Je ne connais pas Joomla ne l'ayant jamais utilisé mais n'utilise-t-il pas déjà les sessions ?
Essayes dans tous les cas un :
print_r($_SESSION);
plutôt qu'un affichage d'index nommé, tu seras rapidement fixé.

Re: session start et fpdf

Posté : 17 janv. 2011, 17:29
par LJ01
merci pour la réponse mais je dois remplacer quoi au juste ...
par le "print_r($_SESSION);" ??

Lj

Re: session start et fpdf

Posté : 17 janv. 2011, 18:28
par xTG
Tu ne remplaces rien tu le rajoutes.
C'est pour voir le contenu du tableau $_SESSION. ;)

Re: session start et fpdf

Posté : 17 janv. 2011, 18:46
par Invité
ca me ramène cela

Code : Tout sélectionner

Array ( [__default] => Array ( [session.counter] => 9 [session.timer.start] => 1295281766 [session.timer.last] => 1295282658 [session.timer.now] => 1295282715 [session.client.browser] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10 [registry] => JRegistry Object ( [_defaultNameSpace] => session [_registry] => Array ( [session] => Array ( [data] => stdClass Object ( ) ) ) [_errors] => Array ( ) ) [user] => JUser Object ( [id] => 0 [name] => [username] => [email] => [password] => [password_clear] => [usertype] => [block] => [sendEmail] => 0 [gid] => 0 [registerDate] => [lastvisitDate] => [activation] => [params] => [aid] => 0 [guest] => 1 [_params] => JParameter Object ( [_raw] => [_xml] => [_elements] => Array ( ) [_elementPath] => Array ( [0] => /mnt/159/sdd/e/a/batenergie/libraries/joomla/html/parameter/element ) [_defaultNameSpace] => _default [_registry] => Array ( [_default] => Array ( [data] => stdClass Object ( ) ) ) [_errors] => Array ( ) ) [_errorMsg] => [_errors] => Array ( ) ) ) [naam] => [year] => year )
LJ

Re: session start et fpdf

Posté : 17 janv. 2011, 19:51
par xTG
Donc les fonctions sont bien actives.
Ce qui semblerait impliquer que Joomla formate les variables sessions.
Ce n'est qu'une hypothèse bien sûr vu que je ne connais pas du tout son système.
Mais il semblerait qu'il mette en cache dans une variable à lui les variables de session en début de script (initialisation Joomla) puis remet cette variable dans le tableau $_SESSION en écrasant tout ce qu'il y avait.
Regardes donc l'API Joomla pour voir s'il n'y a pas des fonctions pour manipuler les sessions, et plus particulièrement les variables de session.

Edit : en effet j'avais mal lu le retour, elles sont bien présentes.

Re: session start et fpdf

Posté : 17 janv. 2011, 20:41
par Ryle
A priori les deux variables que tu as défini en session sont bien présentes et apparaissent dans le tableau $_SESSION :

Code : Tout sélectionner

Array ( ..... [naam] => [year] => year)
La première (naam) est vide, mais la seconde est bien renseignée. Il faut donc vérifier le moment où tu la renseignes, car "à priori" ton pdf affiche bien la valeur en session, qui est une chaine vide :)

Re: session start et fpdf

Posté : 17 janv. 2011, 22:08
par Invité
ulala je suis débutant donc pas tout bien compris
ne soyez pas avare d'explication pour moi ....
LJ

Re: session start et fpdf

Posté : 17 janv. 2011, 23:13
par Ryle
Alors en fait, le print_r (ou var_dump) que t'a demandé xTG te permet de voir le contenu de la session. Elle contient bien sur tous les éléments nécessaire à joomla, mais on voit également apparaitre tes deux variables "naam" et "year". Cela veut dire que tes variables sont bien enregistrées dans la session et que tu peux les récupérer comme bon te semble.

On voit également la valeur de tes variables :

Code : Tout sélectionner

[naam] => [year] => year
Donc ta variable $_SESSION["year"] contient la valeur "year", mais ta variable $_SESSION["naam"] est vide. Du coup quand tu essayes de l'afficher dans le pdf, tu ne vois rien...

Le soucis viendrait donc du moment où tu affectes tes valeurs à tes variables :
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['year'] = $_POST['year'];
Il faudrait vérifier ici que $_POST['naam'] n'est pas vide... et donc que dans ton formulaire tu envois bien ce champ (en faisant attention aux majuscules/minuscules, etc.)

Re: session start et fpdf

Posté : 18 janv. 2011, 08:35
par LJ01
ok c plus clair je regarderai mieux ce soir pour 'naam', bien que dans le formulaire lorsque je calcul il reprend bien le naam dans les résultats ...
et comme 'year' est bien pris dans la session comment ce fait-il qu'il n'apparaissent pas dans le pdf,est-ce parce que 'naam' n'est pas pris ...
je viens de tester aussi une seule variable 'year' mais idem pas d'affichage dans le pdf ...
avec ceci mes 2 variables arrivent dans le print-r mais toujrous pas dans le pdf ...

Code : Tout sélectionner

$_SESSION['naam'] = $_POST['naam']; $_SESSION['year'] = 'year';
LJ

Re: session start et fpdf

Posté : 18 janv. 2011, 22:40
par LJ01
bonsoir
voici comment sont écrites mes variables

Code : Tout sélectionner

//display year if ($display_year == 0) { echo "<div align='right'><strong><font color='$co2_color_title'> ".JText::_('YEAR')."</font></strong> <select name='display_year' default='$select_year' size='1' class='verysmall' id='select'> <option value='2005'>2005</option> <option value='2006'>2006</option> <option value='2007'>2007</option> <option value='2008'>2008</option> <option value='2009'>2009</option> <option value='2010'>2010</option> <option value='2011'>2011</option> <option value='2012'>2012</option> <option value='2013'>2013</option> <option value='2014'>2014</option> <option value='2015'>2015</option> <option value='2016'>2016</option> </select> </div>"; } elseif ($display_year == 1) { } echo "<table width='100%' border='".$bordersize_form."' cellpadding='0' cellspacing='0' bordercolor='".$color_form."'>"; //Dislpay name if ($name_profil == 0) { echo " <tr> <td width='60%'><img src='/modules/mod_CO2profil/image/nom.png' width='25' height='25' align='left'><strong>".JText::_('NAME')."</strong></td> </tr> <tr> <td width='40%'><input type='text' size='17' maxlength='17' name='naam' value='".(isset($_POST['naam'])?$_POST['naam']:'')."'></td> </tr>"; } elseif ($name_profil == 1) { }
pour l'heure je sèche grave
LJ

Session start et fpdf

Posté : 27 janv. 2011, 17:36
par LJ01
bonjour
je relance ce post car je n'ai pas avancé ...
donc merci d'une aide
LJ

Re: session start et fpdf

Posté : 27 janv. 2011, 18:39
par enneite
Alors, je ne suis pas ur que cela vienne de là mais dans le code il y a quelque chose qui ne va pas :
echo $_SESSION['naam']; 
echo $_SESSION['year'];
Ce code génère une sortie, or la seule sortie du fichier PDF doit être :
$pdf->Output();
Il faut donc mettre en commentaire toutes les sorties écrites dans ce fichier (comme celles ci-dessus) ou dans les fichiers appelés par celui ci.

Re: session start et fpdf

Posté : 27 janv. 2011, 21:53
par LJ01
j'ai mis ceci à la fin de mon fichier

Code : Tout sélectionner

$pdf->write(5,$_SESSION['naam']); $pdf->write(5,$_SESSION['year']); $pdf->output($_SESSION['naam']); $pdf->output($_SESSION['year']); $pdf->Output();
mais toujours rien
LJ