Page 1 sur 1

export csv qui ne fonctionne pas

Posté : 01 sept. 2007, 15:01
par Djo
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

Posté : 01 sept. 2007, 15:58
par mere-teresa
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 ?

Posté : 01 sept. 2007, 16:05
par Djo
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

Posté : 01 sept. 2007, 16:31
par Ryle
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.

Posté : 01 sept. 2007, 16:45
par Invité
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]

Posté : 01 sept. 2007, 17:08
par Invité
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

Posté : 02 sept. 2007, 13:20
par Invité
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

Posté : 02 sept. 2007, 19:59
par Ryle
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.