8791 sujets

Développement web côté serveur, CMS

Bonjour tout le monde.
J'ai un soucis étrange :
J'exporte des données d'une base MySQL vers un fichier excel en php.
Le code est tout bête :

<?php
require("zodiaclib.php");
$XLSquery="select nom, prenom, email, branche from soiree where reponse=1 order by branche, nom";
$XLSresult=mysql_query($XLSquery);
$xls_output="";
while($XLSval=mysql_fetch_array($XLSresult)){
	$xls_output.=$XLSval['nom']."\t ".$XLSval['prenom']."\t ".$XLSval['email']."\t ".$branches[$XLSval['branche']]."\n";
}
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment;filename=inscrits.xls");
print $xls_output;
exit;
?>


Quand je teste en local avec EasyPHP : pas de soucis.
Quand je teste sur mon serveur (OVH mutualisé) : j'ai une erreur :
a écrit :
Warning: Cannot modify header information - headers already sent by (output started at /home.10.29/kamelias/www/zodiac/php_xls.php:1) in /home.10.29/kamelias/www/zodiac/php_xls.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at /home.10.29/kamelias/www/zodiac/php_xls.php:1) in /home.10.29/kamelias/www/zodiac/php_xls.php on line 10

Pourtant je n'ai pas de flux qui part avant mes headers ils me semble non ?

Merci d'avance
Julien
Hello,

verifie à tout hasard que le <?php commence bien à la première ligne du document .php et qu'il n'y a pas d'espace ou de saut de ligne après ?>.
non, rien de tout ça apparemment.

Par contre je me rappelle que parfois sur certains documents sont apparus des caractères du genre ">>?.;" un truc complètement bizarre.
Caractères qui n'étaient pas dans mon fichier php. Pas visibles en tout cas...
Bonjour,

Vérifie que ton fichier n'est pas sauvegardé en UTF-8 avec BOM (Byte Order Mark).
La BOM consiste en deux ou trois octets stockés en début de fichier, non visibles dans l'éditeur, qui servent à identifier l'ordre de stockage des octets (little endian ou big endian, selon le processeur). Certains logiciels l'utilisent également pour identifier les fichiers en utf-8.

Si c'est bien le cas, les deux octets sont effectivement envoyés avant l'appel de la fonction header(), et amène parfois à l'affichage des deux caractères bizarres dont tu parles.
Modifié par Lanza (08 Nov 2007 - 10:03)
ahhhhh
La piste est intéressante Lanza.
Effectivement le fichier est en UTF-8, enregistré sous HomeSite.
Je vais voir cette histoire de BOM.

Il n'existe pas un soft ou une technique pour mettre à jour ces caractères cachés pour vérifier si ça vient de là or not ?

Merci
Julien
Donc je confirme.
L'erreur venait bien de là, du coup j'ai passé mon fichier en ANSI et ça résout le pb pour le moment. Va falloir que je trouve comment virer ce BOM de Home Site ou alors que je change d'éditeur...

(si vous avez des conseils là dessus Smiley cligne )

En tout cas merci !
Julien