Page 1 sur 1

Exportation de données mysql via une page en php dans un tab

Posté : 05 mars 2007, 17:54
par Luverger
Bonjour,

Voilà mon soucis:

J'ai une BDD mysql et une page PHP qui me retourne le contenu de ma BDD classée suivant mon choix.

J'arrive à exporter ces données en pdf mais elles sont séparées par --- ou par autre chose, bref ...

J'aimerais savoir savoir comment je dois faire pour exporter mes données en PDF mais dans un tableau ...

<?php require_once('../Connexions/ConnexionArchives.php');
mysql_select_db($database_ConnexionArchives, $ConnexionArchives);

$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'numaff';
$export = isset($_GET['export']) ? $_GET['export'] : '';

$query_rsDossiers = "SELECT Archives.Numaff, Archives.Client, Archives.Nomaff, Archives.Resprojet, Archives.Annee, Archives.Numcd FROM Archives ORDER BY $orderby";
$rsDossiers = mysql_query($query_rsDossiers, $ConnexionArchives) or die(mysql_error());
$totalRows_rsDossiers = mysql_num_rows($rsDossiers);

if ($export == 'excel') {
header("Content-Type: text/x-csv");
header('Content-Disposition: attachement; filename="Exportexcel.csv"');
$list = "\"N° affaires\"; \"Clients\"; \"Noms d'affaires\"; \"Responsables projets\"; \"Années\"; \"N° CD/DVD\";\r\n";
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$list .= $row_rsDossiers['Numaff'] .";". $row_rsDossiers['Client'] .";"
. $row_rsDossiers['Nomaff'] .";". $row_rsDossiers['Resprojet'] .";"
. $row_rsDossiers['Annee'] .";". $row_rsDossiers['Numcd'] ."\r\n";
}
echo $list;
} else if ($export == 'pdf') {
require('fpdf.php');
$pdf=new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage('P','mm','A4');
$pdf->SetFont('Times','BIU',20);
$pdf->Cell(127,10,'Exportation de la liste des affaires en PDF',1);
$pdf->SetFont('Times', '', 10);
$pdf->Write(20, "\r\n");
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->Write(5,
$row_rsDossiers['Numaff'] ."---".
$row_rsDossiers['Client'] ."---".
$row_rsDossiers['Nomaff'] ."---".
$row_rsDossiers['Resprojet'] ."---".
$row_rsDossiers['Annee'] ."---".
$row_rsDossiers['Numcd'] ."\r\n");
}
$pdf->Output();
} else {
?>

Je suis allez voir chez fdpf.org mais je n'ai rien trouvé ...

D'avance merci ...

Posté : 05 mars 2007, 18:04
par mere-teresa

Posté : 05 mars 2007, 18:08
par Luverger
C'est justement tout ça que j'ai récupéré mais je n'arrive pas à l'exploiter correctement ...

Au lieu de me générer un fichier pdf il me retourne tout le temps ma recherche précédente ....

Je précise que je débute en prog et que j'ai récupéré la plupart des pages qu'un collègue avaient faits pour les mettrent à mon gout ...

Merci quand même ...

Posté : 05 mars 2007, 18:11
par mere-teresa
Désolée, mais tu n'avais pas précisé que tu avais déjà le script. La problématique est que ce sont à chaque fois des fonctions à modifier, et qu'il faut bien comprendre le mécanisme des fonctions :)

Si tu sais faire un tableau en HTML, tu peux aller voir HTML2FPDF : cela te permet de construire le tableau HTML, puis de générer le PDF :)

Posté : 06 mars 2007, 11:55
par Luverger
On m'a conseillé d'utiliser ce code :

<?php

require_once('../Connexions/ConnexionArchives.php');
mysql_select_db($database_ConnexionArchives, $ConnexionArchives);

$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'numaff';
$export = isset($_GET['export']) ? $_GET['export'] : '';

$query_rsDossiers = "SELECT Archives.Numaff, Archives.Client, Archives.Nomaff, Archives.Resprojet, Archives.Annee, Archives.Numcd FROM Archives ORDER BY $orderby";
$rsDossiers = mysql_query($query_rsDossiers, $ConnexionArchives) or die(mysql_error());
$totalRows_rsDossiers = mysql_num_rows($rsDossiers);

if ($export === 'excel') {
	header("Content-Type: text/x-csv");
	header('Content-Disposition: attachement; filename="Exportexcel.csv"');
 $list = "\"N° affaires\"; \"Clients\"; \"Noms d'affaires\"; \"Responsables projets\"; \"Années\"; \"N° CD/DVD\";\r\n";
  while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $list .= $row_rsDossiers['Numaff'] .";". $row_rsDossiers['Client'] .";"
	  	  .  $row_rsDossiers['Nomaff'] .";". $row_rsDossiers['Resprojet'] .";"
		  .  $row_rsDossiers['Annee'] .";". $row_rsDossiers['Numcd'] ."\r\n";
  }
  echo $list;
} else if ( $export === 'pdf' ) {

  require('fpdf.php');

$x = '10';
$y = '10';

$pdf=new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage('P','mm','A4');

$pdf->SetXY($x, $y);
$pdf->SetFont('Times','BIU',20);
$pdf->Cell(127,10,'Exportation de la liste des affaires en PDF',1);

// calcul de chaque colonne
$nb_col = 7;
$largeur_total_page = 210;
$largeure_colonne = ($largeur_total_page - 20) / $nb_col

$pdf->SetXY($x, $y+10);   // LIGNE 43
$pdf->SetFont('Times', '', 10);
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Client'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Nomaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Annee'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numcd'], 1, 1, 'C', 0);
}

$pdf->Output();
}

?>
Mais il me retourne cette erreur:

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\Archives\Listes\liste.php on line 43

Et la ligne 43 correspond à celle-ci:
$pdf->SetXY($x, $y+10);
Sauriez-vous me dire de quoi cela vient ???

Posté : 06 mars 2007, 14:44
par Luverger
Bon problème résolu ...

Par contre j'aimerais savoir comment je peux modifier ce code pour qu'il ajuste la taille des cellules de mon tableau aux nombres MAX de caractères étant présent dans ma BDD ???

Car là j'ai des cellules trop grandes pour ce qu'il y a dedans et d'autre beaucoup trop petites !!!

Comment modifier le code pour y arriver ???

Le revoilà:
<?php

require_once('../Connexions/ConnexionArchives.php');
mysql_select_db($database_ConnexionArchives, $ConnexionArchives);

$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'numaff';
$export = isset($_GET['export']) ? $_GET['export'] : '';

$query_rsDossiers = "SELECT Archives.Numaff, Archives.Client, Archives.Nomaff, Archives.Resprojet, Archives.Annee, Archives.Numcd FROM Archives ORDER BY $orderby";
$rsDossiers = mysql_query($query_rsDossiers, $ConnexionArchives) or die(mysql_error());
$totalRows_rsDossiers = mysql_num_rows($rsDossiers);

if ($export === 'excel') {
	header("Content-Type: text/x-csv");
	header('Content-Disposition: attachement; filename="Exportexcel.csv"');
 $list = "\"N° affaires\"; \"Clients\"; \"Noms d'affaires\"; \"Responsables projets\"; \"Années\"; \"N° CD/DVD\";\r\n";
  while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $list .= $row_rsDossiers['Numaff'] .";". $row_rsDossiers['Client'] .";"
	  	  .  $row_rsDossiers['Nomaff'] .";". $row_rsDossiers['Resprojet'] .";"
		  .  $row_rsDossiers['Annee'] .";". $row_rsDossiers['Numcd'] ."\r\n";
  }
  echo $list;
} elseif ( $export === 'pdf' ) {

  require('fpdf.php');

$x = '10';
$y = '10';

$pdf=new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage('P','mm','A4');

$pdf->SetXY($x, $y);
$pdf->SetFont('Times','BIU',20);
$pdf->Cell(127,10,'Exportation de la liste des affaires en PDF',1);

// calcul de chaque colonne
$nb_col = 7;
$largeur_total_page = 210;
$largeure_colonne = ($largeur_total_page - 20) / $nb_col;

$pdf->SetXY($x, $y+10);
$pdf->SetFont('Times', '', 7);
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Client'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Nomaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Annee'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numcd'], 1, 1, 'C', 0);
}

$pdf->Output();
}

?>
---------------------

J'aimerais aussi pouvoir mettre en début de page le nom de chaque cellules ... Nom affaire, nom client, etc ...

J'ai essayé ce code:
//En-tête
function Header()
{
    //Logo
    $this->Image('logo_pb.png',10,8,33);
    //Police Arial gras 15
    $this->SetFont('Arial','B',15);
    //Décalage à droite
    $this->Cell(80);
    //Titre
    $this->Cell(30,10,'Titre',1,0,'C');
    //Saut de ligne
    $this->Ln(20);
}

//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,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
Mais il me dit :

Fatal error: Cannot redeclare header() in C:\wamp\www\Archives\Listes\liste.php on line 31

La ligne 31 est celle-ci:
function Header()
Et voilà où j'ai insérer ce bout de code ...
<?php

require_once('../Connexions/ConnexionArchives.php');
mysql_select_db($database_ConnexionArchives, $ConnexionArchives);

$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'numaff';
$export = isset($_GET['export']) ? $_GET['export'] : '';

$query_rsDossiers = "SELECT Archives.Numaff, Archives.Client, Archives.Nomaff, Archives.Resprojet, Archives.Annee, Archives.Numcd FROM Archives ORDER BY $orderby";
$rsDossiers = mysql_query($query_rsDossiers, $ConnexionArchives) or die(mysql_error());
$totalRows_rsDossiers = mysql_num_rows($rsDossiers);

if ($export === 'excel') {
	header("Content-Type: text/x-csv");
	header('Content-Disposition: attachement; filename="Exportexcel.csv"');
 $list = "\"N° affaires\"; \"Clients\"; \"Noms d'affaires\"; \"Responsables projets\"; \"Années\"; \"N° CD/DVD\";\r\n";
  while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $list .= $row_rsDossiers['Numaff'] .";". $row_rsDossiers['Client'] .";"
	  	  .  $row_rsDossiers['Nomaff'] .";". $row_rsDossiers['Resprojet'] .";"
		  .  $row_rsDossiers['Annee'] .";". $row_rsDossiers['Numcd'] ."\r\n";
  }
  echo $list;
} elseif ( $export === 'pdf' ) {

  require('fpdf.php');

$x = '10';
$y = '10';

//En-tête
function Header()
{
    //Logo
    $this->Image('logo_pb.png',10,8,33);
    //Police Arial gras 15
    $this->SetFont('Arial','B',15);
    //Décalage à droite
    $this->Cell(80);
    //Titre
    $this->Cell(30,10,'Titre',1,0,'C');
    //Saut de ligne
    $this->Ln(20);
}

//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,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}

$pdf=new FPDF();

$pdf->AliasNbPages();
$pdf->AddPage('P','mm','A4');

$pdf->SetXY($x, $y);
$pdf->SetFont('Times','BIU',20);
$pdf->Cell(190,10,'Exportation de la liste des affaires en PDF',1);

// calcul de chaque colonne
$nb_col = 6;
$largeur_total_page = 210;
$largeure_colonne = ($largeur_total_page -20) / $nb_col;

$pdf->SetXY($x, $y+10);
$pdf->SetFont('Times', '', 7);
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Client'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Nomaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Annee'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numcd'], 1, 1, 'C', 0);
}

$pdf->Output();
}

?>
Pour le logo_pb.png ce n'est pas un oubli ... j'ai laissé la ligne telle qu'elle mais je l'enleverrai après ...

Posté : 06 mars 2007, 16:09
par mere-teresa
Fatal error: Cannot redeclare header() in C:\wamp\www\Archives\Listes\liste.php on line 31
Ta fonction est déjà incluse, ne la recopie pas.

Posté : 06 mars 2007, 16:12
par Luverger
Oui mais quand je ne la redéclare pas ça ne fonctionne pas mieux ....

Posté : 06 mars 2007, 16:22
par jobi1722
Bonjour,

C'est normal la fonction header existe déjà :

Code : Tout sélectionner

header('Location:index.php');
J'ai pas trop d'idées pour t'aider (je connais pas trop fpdf).

Bon courage pour la suite :D

Edit : On ne peut pas rédéfinir les fonctions natives de PHP :(