export csv qui ne fonctionne pas

Djo
Invité n'ayant pas de compte PHPfrance

01 sept. 2007, 15:01

bonjour,

Voila je travail sur un petit script qui doit sortir un fichier csv tout fonctionne ou presque les données ne sont pas incluse dans le fichier csv je pense qu'il doit y avoir une erreur mais je n'arrive pas a trouver laquel.

Voici mon Code:

Code : Tout sélectionner

<?php header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=Historique_SNR_" . date("Ymd").".csv"); $csv_output = 'Month;DeviceName;InterfaceName;InterfaceDesc;Minor;Major;Critical'; //$csv_output .= "\n"; include("../include/connection.php"); //Lecture de la data base $query = (" select YEAR(FROM_UNIXTIME(History.eventdate)) as Year, MONTH(FROM_UNIXTIME(History.eventdate)) as Month, Devices.name as DeviceName, Interfaces.name as InterfaceName, Devices.name2 as devicesName2, Interfaces.description as InterfaceDesc, SUM(case StatusTypes.name when 'Normal' then 1 else 0 end) as Normal, SUM(case StatusTypes.name when 'Minor' then 1 else 0 end) as Minor, SUM(case StatusTypes.name when 'Major' then 1 else 0 end) as Major, SUM(case StatusTypes.name when 'Critical' then 1 else 0 end) as Critical from History inner join StatusTypes on History.statusid = StatusTypes.id inner join Cells on History.cellid = Cells.id inner join Interfaces on Cells.interfaceid = Interfaces.id inner join ServiceTypes on Cells.serviceid = ServiceTypes.id inner join Devices on Interfaces.deviceid = Devices.id where ServiceTypes.name = 'SNR' group by YEAR(FROM_UNIXTIME(History.eventdate)), MONTH(FROM_UNIXTIME(History.eventdate)), Devices.name, Interfaces.name, Interfaces.description ;"); $result = mysql_query($query); while($row = mysql_fetch_array($result)) { $cvs_output = "$result[Month],$result[DeviceName],$result[InterfaceName],$result[devicesName2],$result[InterfaceDesc],$result[Ninor],$result[Major],$result[Critical]\n"; } print $csv_output; exit; ?>
Merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

01 sept. 2007, 15:58

Nous avons besoin de plus précisions pour te répondre :
- As-tu un message d'erreur ? Si oui lequel ?
- Quels tests as-tu effectués pour pouvoir savoir jusqu'où ton script se déroule ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Djo
Invité n'ayant pas de compte PHPfrance

01 sept. 2007, 16:05

Alors le fichier CSV arrive en téléchargement mais il est vide aucun info n'est inscrite dedant a part ce qui correspond a ceci

Code : Tout sélectionner

$csv_output = 'Month;DeviceName;InterfaceName;InterfaceDesc;Minor;Major;Critical';
sinon aucun msg d'erreur juste un document vide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 sept. 2007, 16:31

Si tu n'as que cette ligne, c'est que le fichier a bien été généré, mais qu'il ne contient pas de données. Donc que tu n'es pas rentré dans la boucle while(), donc probablement que ta requête n'a pas retourné d'enregistements.

Ajoute un or die(mysql_error()) après le mysql_query() pour vérifier qu'il n'y a pas eu d'erreyr MySql. Tu peux également afficher la requête générer pour vérifier qu'elle est correcte et la jouer dans phpMyAdmin ou MySql pour vérifier qu'elle retourne bien des résultats.

Par ailleurs, dans ton while, à chaque itération tu vas écraser (=) la valeur de la variable $csv_output au lieu de concaténer (.=) à la suite les nouvelles données.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

01 sept. 2007, 16:45

alors maintenant j'ai cette erreur

Code : Tout sélectionner

<b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <b>/var/www/monitoring/historique/csv.php</b> on line <b>42</b><br />
en ajoutant " or die(mysql_error())"[/code]

Invité
Invité n'ayant pas de compte PHPfrance

01 sept. 2007, 17:08

alors j'a modifier le fichier en ajoutant ceci

Code : Tout sélectionner

$host=""; $user="toto"; $password="litoto"; $db="monitoring"; mysql_connect($host,$user,$password) or die ("Erreur lors de la connection à la BDD"); mysql_select_db($db) or die ("Erreur lors de la selection d'une table de la BDD");
plus aucune erreur mais toujours le fichier vide

Invité
Invité n'ayant pas de compte PHPfrance

02 sept. 2007, 13:20

Bonjour,

Alors j'ai modifier le script comme suit:

Code : Tout sélectionner

<?php header("Content-type: text/x-csv"); header("Content-disposition: attachment; filename=Historique_SNR_" . date("Ymd").".csv"); include("../include/connection.php"); //Lecture de la data base $sql = (" select YEAR(FROM_UNIXTIME(History.eventdate)) as Year, MONTH(FROM_UNIXTIME(History.eventdate)) as Month, Devices.name as DeviceName, Interfaces.name as InterfaceName, Devices.name2 as devicesName2, Interfaces.description as InterfaceDesc, SUM(case StatusTypes.name when 'Normal' then 1 else 0 end) as Normal, SUM(case StatusTypes.name when 'Minor' then 1 else 0 end) as Minor, SUM(case StatusTypes.name when 'Major' then 1 else 0 end) as Major, SUM(case StatusTypes.name when 'Critical' then 1 else 0 end) as Critical from History inner join StatusTypes on History.statusid = StatusTypes.id inner join Cells on History.cellid = Cells.id inner join Interfaces on Cells.interfaceid = Interfaces.id inner join ServiceTypes on Cells.serviceid = ServiceTypes.id inner join Devices on Interfaces.deviceid = Devices.id where ServiceTypes.name = 'SNR' group by YEAR(F0ROM_UNIXTIME(History.eventdate)), MONTH(FROM_UNIXTIME(History.eventdate)), Devices.name, Interfaces.name, Interfaces.description ;"); $resultat = mysql_query ($sql); $list = ""; while ($snr = mysql_fetch_array ($resultat)) { $month = $snr ['Month']; $device = $snr ['DeviceName']; $interface = $snr ['InterfaceName']; $device2 = $snr ['InterfaceDesc']; $minor = $snr ['Minor']; $major = $snr ['Major']; $critical = $snr ['Critical']; $list .= "\"$month\",\"$device\",\"$interface\",\"$device2\",\"$minor\",\"$major\",\"$critical\"\r\n"; } echo $list; ?>
Mais j'ai une erreur sur le while
mysql_fetch_array(): supplied argument is not a valid MySQL result resource

vous auriez une idée ? parce que je sèche la

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 sept. 2007, 19:59

Ajoute un or die(mysql_error()) après le mysql_query() pour vérifier qu'il n'y a pas eu d'erreur MySql. Tu peux également afficher la requête générer pour vérifier qu'elle est correcte et la jouer dans phpMyAdmin ou MySql pour vérifier qu'elle retourne bien des résultats.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...