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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Exportation de données mysql via une page en php dans un tab

par jobi1722 » 06 mars 2007, 16:22

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 :(

par Luverger » 06 mars 2007, 16:12

Oui mais quand je ne la redéclare pas ça ne fonctionne pas mieux ....

par mere-teresa » 06 mars 2007, 16:09

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.

par Luverger » 06 mars 2007, 14:44

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 ...

par Luverger » 06 mars 2007, 11:55

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 ???

par mere-teresa » 05 mars 2007, 18:11

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 :)

par Luverger » 05 mars 2007, 18:08

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 ...

par mere-teresa » 05 mars 2007, 18:04

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

par Luverger » 05 mars 2007, 17:54

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 ...