|
|
|
|
Bonjour,
J'ai récupéré un code pour créer un document Excel avec le contenu d'un BDD par du PHP que j'ai modifié pour mes besoins. Je fais face à un "léger" problème car si le fichier se charge bien, il est vide ! Il y a seulement le tableau avec les colonnes Prenom, Nom et Email...
Qu'est-ce qui ne va pas ? Ai-je mal fait quelque chose ?
Pour ceux qui veulent me donner un petit coup de pouce, voici le code :
<?php
header("Content-type: application/vnd.ms-excel");
require_once("test_conf_int.php");
$bdd = mysql_connect($DBHost,$DBUser,$DBPass);
mysql_select_db((DB),$bdd);
$requete=@mysql_query("SELECT name, username, email FROM jos_users");
// on vérifie le contenu de la requête, si elle est vide, on en informe l'utilisateur à l'aide d'un Javascript
if (@mysql_numrows($requete) ==0) {
echo "<script> alert('La requête n\'a pas abouti !')</script>";
}
// construction du tableau HTML
echo '<table border=1>
<!-- impression des titres de colonnes -->
<TR><TD>Prenom</TD><TD>Nom</TD><TD>email</TD><;/TR><TR>';
// lecture du contenu de la requête avec 2 boucles imbriquées; par ligne et par colonne
for ($ligne = 0 ; $ligne < @mysql_numrows($requete); $ligne++) {
for ($colonne = 0; $colonne < 3; $colonne++) {
print '<TD>' .mysql_result($requete , $ligne,$colonne). '</TD>';
}
print '</TR>';
}
print '</TABLE>';
mysql_close();
// on informe l'utilisateur de la réussite
if (@mysql_numrows($requete) > 0) {
print "<script> alert('La table est bien mise à jour !')</script>";
}
?>
merci d'avance :)
Configuration: Windows Vista Firefox 2.0.0.14
La structure de ton script doit être différente.
<?php
require_once("test_conf_int.php");
$bdd = mysql_connect( $DBHost, $DBUser, $DBPas s);
mysql_select_db( (DB), $bdd );
$requete = @mysql_query( "SELECT name, username, email FROM jos_users" )
OR DIE( "erreur : " . mysql_error( $bdd ) );
// on vérifie le contenu de la requête, si elle est vide, on en informe l'utilisateur à l'aide d'un Javascript
if( @mysql_numrows( $requete ) == 0)
echo "La requête ne retourne aucun enregistrement";
else
{
// contenu --> $resultat
$resultat = "";
$rang = 0;
while( ($line = mysql_fetch_assoc($requete)) )
{
$ligne = '';
if( $rang == 0 )
{ // entêtes de colonne
foreach( array_keys( $line ) as $lEntete )
{
if( $ligne != '' ) $ligne .= ';';
$ligne .= $lEntete;
}
$resultat .= $ligne;
}
else
{ // données
foreach( $line as $key=>$value )
{
if( $ligne != '' ) $ligne .= ';';
if( !isset( $value ) OR $value=='' )
$value = '';
else
{
if( substr( $key,0,4) == "date" )
{
$laDate = explode( "-", $value );
$value = $laDate[1] . "/" . $laDate[0];
}
}
$ligne .= '"' . str_replace( '"', '""', utf8_decode( $value ) ) . '"';
}
}
$resultat .= chr(10) . $ligne;
$rang++;
}
// transcodage (laborieux!) iso-8859-1 >>> code Excel ????
// peut-être pas nécessaire selon codage base etc...
$leS = "";
for( $i=0; $i<strlen($resultat); $i++ )
{
$leCar = substr( $resultat, $i, 1 );
switch( ord( $leCar ) )
{
case 0xA7 :
$leCar = chr( 0xa4 );
break;
case 0xB0 :
$leCar = chr( 0xa1 );
break;
case 0xE0 :
$leCar = chr( 0x88 );
break;
case 0xE2 :
$leCar = chr( 0x89 );
break;
case 0xE4 :
$leCar = chr( 0x8A );
break;
case 0xE7 :
$leCar = chr( 0x8d );
break;
case 0xE8 :
$leCar = chr( 0x8f );
break;
case 0xE9 :
$leCar = chr( 0x8e );
break;
case 0xEA :
$leCar = chr( 0x90 );
break;
case 0xEB :
$leCar = chr( 0x91 );
break;
case 0xEF :
$leCar = chr( 0x95 );
break;
case 0xE2 :
$leCar = chr( 0x89 );
break;
case 0xF4 :
$leCar = chr( 0x99 );
break;
case 0xF6 :
$leCar = chr( 0x9A );
break;
case 0xF9 :
$leCar = chr( 0x9d );
break;
case 0xFB :
$leCar = chr( 0x9e );
break;
case 0xFC :
$leCar = chr( 0x9F );
break;
}
$leS .= $leCar;
}
// téléchargement et ouverture dans Excel du fichier
header("Cache-Control: cache, must-revalidate");
header("Pragma: public");
header('Content-Type: application/excel');
header("Content-disposition: inline; filename=" . date("Y-m-d") . ".csv");
echo $leS;
exit;
}
}
?>
|
STOP !!!
<?
//ce fichier montre un exemple permettant de generer un fichier excel (on peut remplacer le .csv par .xls)
//parametres de connexion a la bdd
include("test_02.php");
//defined( '_VALID_MOS' ) or die( 'Restricted access' );
//Premiere ligne = nom des champs (si on en a besoin)
$csv_output = "LOGIN; PASS";
$csv_output .= "\n";
//Requete SQL
$query = "SELECT login, pass FROM user";
$result = mysql_query($query)
or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
//Boucle sur les resultats
while($row = mysql_fetch_array($result)) {
//$csv_output .= "$row[p_nom] $row[p_prenom],$row[p_nom],$row[p_prenom],$row[p_email]\n";
$csv_output .= "$row[login];$row[pass]\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=AddressBook_" . date("Ymd").".csv");
print $csv_output;
exit;
?>
merci de ton aide en tout cas Croy a++ |
Je viens de tester avec ton code mais ça marche une fois sur deux :'(
<?php
//ce fichier montre un exemple permettant de generer un fichier excel (on peut remplacer le .csv par .xls)
//parametres de connexion a la bdd
include("connexion.php");
//defined( '_VALID_MOS' ) or die( 'Restricted access' );
//Premiere ligne = nom des champs (si on en a besoin)
$csv_output = "date; etat";
$csv_output .= "\n";
//Requete SQL
$query = "SELECT * FROM presence WHERE nservice = '1'";
$result = mysql_query($query)
or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
//Boucle sur les resultats
while($row = mysql_fetch_array($result)) {
//$csv_output .= "$row[p_nom] $row[p_prenom],$row[p_nom],$row[p_prenom],$row[p_email]\n";
$csv_output .= "$row[date];$row[etat]\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=AddressBook_" . date("Ymd").".csv");
print $csv_output;
exit;
?> |