Flux rss
Communiquer en entreprise avec les outils Google
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[PHP] Export du contenu SQL en Excel avec PHP

miltonis, le vendredi 16 mai 2008 à 10:19:19
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
Répondre à miltonis  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
croy, le vendredi 16 mai 2008 à 10:39:52
La structure de ton script doit être différente.

Ci-dessous un exemple à décortiquer :
<?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;
	}
}
?> 
Répondre à croy

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
miltonis, le vendredi 16 mai 2008 à 11:40:47
Merci de ta réponse Croy,

J'ai testé ton code mais ça n'a pas l'air de fonctionner... il faut dire que je travaille sur un site Joomla, du coup le message est "access restricted"...
Répondre à miltonis

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 miltonis, le vendredi 16 mai 2008 à 12:09:07
STOP !!!
pas la peine de chercher plus loin !
Voici quelque chose qui marche (aussi), en tout cas sur mon serveur, si ça peut en aider certains :
<?
//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++
Répondre à miltonis
Demande pro du php et my sql (Résolu) Bonjour a tous, Je suis étudiant en informatique a marseille et j'ai un gros projet à réaliser pour l'école (stage de 1 mois).Malheureusement, j'ai fait une bonne cure de sommeil en classe et les bases du php et de sql...et vu la... www.commentcamarche.net/forum/affich-6600858-demande-pro-du-php-et-my-sql
[SQL-PHP] Liaison inter-bases (Résolu) Bonjour, Je programme une page PHP avec liaison SQL Server (les commandes sont les mêmes que pour MySQL : ne partez pas ;-) !) $msconnect=mssql_connect("serveur","compte","mdp") or die ('connexion echouée');... www.commentcamarche.net/forum/affich-3895509-sql-php-liaison-inter-bases
Scripte php sql pb ?? (Résolu) Bonjour, j'ai un problème sur mon scripte pour écrire dans une bdd sql le scripte marche je peut voir la page mais je n'arrive pas a écrire dans la bdd sql voila le scripte www.commentcamarche.net/forum/affich-5601117-scripte-php-sql-pb
[PHP] Lister le contenu d'un répertoireGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function... www.commentcamarche.net/faq/sujet-6773-php-lister-le-contenu-d-un-repertoire
Exporter à coup sûr du CSVExporter des données au format CSV n'est pas si trivial qu'il n'y paraît. Dès que vos données contiennent des virgules ou des guillemets, tout semble partir en vrille. Il y a une astuce. Voici comment procéder pour exporter à coup sûr vos... www.commentcamarche.net/faq/sujet-7273-exporter-a-coup-sur-du-csv
Connexion à une base Oracle en php1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à... www.commentcamarche.net/faq/sujet-123-connexion-a-une-base-oracle-en-php
Developement d'un jeu en PHP (Résolu)Bonjours, Je vais crée un jeu en PHP mais donc je cherche des personne connaissant le PHP, HTML, CSS, SQL moi je n'ai que des gout de m*** en matiere de design donc je recherche de preferance un designeur ;) petit resumer du jeu : 2 groupes :... www.commentcamarche.net/forum/affich-1628936-developement-d-un-jeu-en-php
[pb java/php] (Résolu)Voil j'explique mon problème. Nous avons un projet a faire en DUT, et le but est de faire un site Web avec base de données, etc... Donc ce qui implique PHP, CSS, HTML, SQL. Tous ces langages sont assez nouveaux pour nous. Bon enfin bref là... www.commentcamarche.net/forum/affich-2615859-pb-java-php
Problème Upload PHP/MySQL (Résolu)Bonjour, alors voila, j'ai crée un système de news en premier (add.php) titre + contenu en deuxième (add2.php) insertion titre + contenu dans table et choix de l'image en troisième (add3.php) traitement de l'image et envoi dans un... www.commentcamarche.net/forum/affich-7953545-probleme-upload-php-mysql
Télécharger LiveProject Free Project ViewerLiveProject est une application de visualisation de fichier mpp gratuit. LiveProject ne présente aucune degradation du fichier mpp lors de l'exportation au format Excel ou html. Avec LiveProject, vous pourrez imprimer vos propres documents.... www.commentcamarche.net/telecharger/telecharger-34056818-liveproject-free-project-viewer
Importer et exporter des données sous MySQLImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant... www.commentcamarche.net/contents/mysql/mysqlimport.php3