Probléme pour generer un cvs
			
		
	
	
		le 30/08/2007 à 15:50
		djo
	 
	
		Bonjour,
Je doit generer un cvs avec le script ci dessous.
<?php
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=Historique_" . date("Ymd").".cvs");
$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 = 'FEC'
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 = "$row[Month],$row[DeviceName],$row[InterfaceName],$row[devicesName2],$row[InterfaceDesc],$row[Ninor],$row[Major],$row[Critical]\n";
}
print $csv_output;
exit;
?>
Mais il me genere une erreur dans le cvs :
<b>Warning</b>:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <b>/var/www/monitoring/historique/cvs.php</b> on line <b>43</b><br />
Si quelqu'un pouvais me dire ou ce trouve l'erreur car perso je ne la trouve pas merci d'avance pour l'aide.	
 
	
			
		
	
	
	
		Inverse les lignes 42 et 43. Mais surtout, télécharges et utilises un éditeur de texte avec coloration syntaxique.	
			Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
				
				
		
			
		
	
	
		le 31/08/2007 à 08:57
		djo
	 
	
		Merci pour le conseil mais la il y a un truc qui fonctionne pas c'est que le fichier cvs est vide il ne m'ecrit pas les donnée dans le Fichier mon code serait'il faut ?	
	
			
		
	
	
	
		Déjà, il faut dire CSV :p Ensuite, oui, tu écrase ta variable de buffering à chaque boucle While.
Fait des echos, tu n'as pas besoin de tamponné la sortie ici.	
			Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
		
			
		
	
	
		le 02/09/2007 à 13:54
		djo
	 
	
		Hello,
Alors j'ai changer le script qui ressemble a ceci maintenent:
<?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 a la ligne 42 sur le while 
mysql_fetch_array(): supplied argument is not a valid MySQL result resource 
la je sèche completement comment résoudre cette erreur une idée ?	
 
	
			
		
	
	
	
		Pourquoi parenthèses-tu la chaine contentant le code SQL ?
Un gros conseil : relis la sections sur la syntaxe dans la documentation PHP.	
			Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
		
			
		
	
	
		le 02/09/2007 à 15:30
		djo
	 
	
		et c'est le faite de mettre des parenthèse sur la chaine sql qui fait l'erreur sur le while?	
	
			
		
	
	
	
		Non, mais d'avoir mis ces parenthèses montre que tu ne sais pas encore ce que tu fais.
Quoiqu'il en soit, tu utilises plein de fonctions qui peuvent générer une erreur. Il faut donc *systématiquement* traiter ces erreurs. Sino,, bah tu ne sauras jamais ce qu'il se passe.
Revois ton code, et pour chaque fonction, vérifie si elle peut générer une erreur, et comment tu peux récupérer une information sur l'erreur.
Je croyais que le fait de mettre des parenthèses transtypait ta chaine en objet, mais en fait non, c'est autre chose.
As-tu testé ton SQL avant de l'utiliser dans ton PHP ?	
			Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
		
			
		
	
	
		le 03/09/2007 à 08:59
		djo
	 
	
		La requette SQL fonctionne parfaitement sur ce script:
<? /*
Nom:
Creation: 
Date:26.07.2007
Desc: Stats des alarmes SNR
*/?>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>|Statistique| Alerts SNR</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!--
	.mon_th_title {
		background:#90929C;
		color:#ffffff;
		font-weight: bolder;
	}
	tr {
		min-height: 5px;
		font-family: Verdana, Arial, Helvetica, sans-serif;
		font-size: 8pt;
	}
	h1 {
		min-height: 6px;
		font-family: Verdana, Arial, Helvetica, sans-serif;
		font-size: 10pt;
	}
-->
</style>
</head>
<body>
    <table>
        <tr class="mon_th_title">
					<? //Construction URL
					$url = 'index.php?';
					if (!empty($_GET['limit_by']))
						$url.= 'limit_by='.$_GET['limit_by'].'&';
					if (!empty($_GET['limit']))
						$url.= 'limit='.$_GET['limit'].'&';
					if (!empty($_GET['desc'])) {
						if ($_GET['desc']=='yes')
							$url.= 'desc=no&';
						if ($_GET['desc']=='no')
							$url.= 'desc=yes&';
					}
					else {
						$url.= 'desc=no&';
					}
					$url.= 'order='
					?>
                    <th><a href="<?=$url.'Month'?>">Mois</a></th>
                    <th><a href="<?=$url.'Month'?>">Années</a></th>
			        <th><a href="<?=$url.'devices'?>">Devices</a></th>
			        <th><a href="<?=$url.'interface'?>">Interface</a></th>
                    <th><a href="<?=$url.'descinterface'?>">Desc Interface</a></th>
			        <th><a href="<?=$url.'minor'?>">Minor</a></th>
                    <th><a href="<?=$url.'major'?>">Major</a></th>
                    <th><a href="<?=$url.'critical'?>">Critical</a></th>
        </tr>
		<?
		$limit = "";
		$where = "";
		$order = "";
		$desc = "";
		if (!empty($_GET['limit_by'])) {
			switch ($_GET['limit_by']) {
				case 'rows' :
					$limit = 'LIMIT 0,'.$_GET['limit'];
				break;
				case 'month' :
					$where = 'AND MONTH >'.(limit()-$_GET['limit']);
				break;
                case 'devices' :
					$where = 'AND Devices.name >'.(limit()-$_GET['limit']);
				break;
				default :
				break;
			}
		}
		else {
			$limit = 'LIMIT 0,1000';
		}
		if (!empty($_GET['order'])) {
			switch ($_GET['order']) {
				case 'month' :
					$order = 'ORDER BY MONTH';
				break;
                		case 'year' :
					$order = 'ORDER BY YEAR';
				break;
               		case 'devices' :
					$order = 'ORDER BY Devices.name';
				break;
				case 'interface' :
					$order = 'ORDER BY Interfaces.name';
				break;
                case 'descinterface':
                    $order = 'ORDER BY InterfaceDesc';
                break;
				case 'service' :
					$order = 'ORDER BY ServiceTypes.name';
				break;
				case 'minor' :
					$order = 'ORDER BY Minor';
				break;
                case 'major' :
					$order = 'ORDER BY Major';
				break;
                case 'critical' :
					$order = 'ORDER BY Critical';
				break;
			}
		}
		else {
			$order = 'ORDER BY History.eventdate DESC';
		}
		if (!empty($_GET['desc'])) {
			if ($_GET['limit_by']=="devices") {
				switch ($_GET['desc']) {
					case 'no' :
						$desc = '';
					break;
					case 'yes' :
						$desc = 'DESC';
					break;
					default :
						$desc = '';
					break;
				}
			}
		}
		else {
			$desc = '';
		}
include("../include/connection.php");
//Lecture de la data base
                             $sql_history = mysql_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
    ".$where."
	".$order."
	".$limit.$desc."
;");
while($data_history = mysql_fetch_array($sql_history)) {
//Tableau d'affichage
  {
  echo "<tr>";
 //echo '<tr class="mon_tr_ok" style="background-color:'.$couleur.';">';
  echo '<td bgcolor="#CCCCCC">' . $data_history['Month']."<br>"."</td>";
  echo '<td bgcolor="#CCCCCC">' . $data_history['Year']. "</td>";
  echo '<td bgcolor="#CCCCCC">' . $data_history['DeviceName'] .  "</td>";
  echo '<td bgcolor="#CCCCCC">' . $data_history['InterfaceName'] .  "</td>";
  echo '<td bgcolor="#CCCCCC">' . $data_history['InterfaceDesc']. "</td>";
  echo '<td bgcolor="#FFFF33">' . $data_history['Minor'] . "</td>";
  echo '<td bgcolor="#FF9900">' . $data_history['Major'] . "</td>";
  echo '<td bgcolor="#CC0000">' . $data_history['Critical']. "</td>";
//  echo "<td>" . $data_history['interfacesSnr'] . "</td>";
//  echo"<td>" . $image = imagecreatefromgif ("image_test.GIF"); ."</td>";
  echo "</tr>";
  }
    }
?>
     </table>
</body>
</html>
 
donc elle devrais fonctionner aussi sur ce script. Non ?	
 
	
			
		
	
	
	
		... Fais des remplacements si non, des parcels de codes qui fonctionnent sur le nouveau script, vers l'ancien ... tu trouveras sûrement le problème après ^^	
			Necnom :)
				
				
		
	
	Ecrire un message
	
	Votre message vient d'être créé avec succès.
	
 
	BB-Code
	
		Pour insérer une URL clickable
		
		Pour insérer une adresse E-mail
		
		Pour annoter
		
		Pour écrire du code
		
		Pour faire un lien vers une fonction PHP
		
		Pour écrire du texte préformaté
		
		Pour écrire du texte en gras
		
		Pour écrire du texte en italique
		
		Pour écrire du texte souligné
		
		Pour écrire du texte barré
		
		Pour écrire un titre principal
		
		Pour écrire un titre secondaire
		
		Pour écrire une liste
		
	 
 
	Smiley
	
		
				
							
				:bond:
				
			 
						
				:boxe:
				
			 
						
				:bsmile:
				
			 
						
				:bump:
				
			 
						
				:clap:
				
			 
							 
				
							
				:coeur:
				
			 
						
				:cool:
				
			 
						
				:cry:
				
			 
						
				:eek:
				
			 
						
				:evil:
				
			 
							 
				
							
				:fleur:
				
			 
						
				:fou2:
				
			 
						
				:fou:
				
			 
						
				:grin:
				
			 
						
				:grrr:
				
			 
							 
				
							
				:hammer:
				
			 
						
				:hippy:
				
			 
						
				:hum:
				
			 
						
				:idee2:
				
			 
						
				:idee:
				
			 
							 
				
							
				:kdo:
				
			 
						
				:king:
				
			 
						
				:ko:
				
			 
						
				:lol:
				
			 
						
				:love2:
				
			 
							 
				
							
				:love:
				
			 
						
				:mad:
				
			 
						
				:maitre:
				
			 
						
				:noel:
				
			 
						
				:oops:
				
			 
							 
				
							
				:raa:
				
			 
						
				:razz:
				
			 
						
				:roll:
				
			 
						
				:sad:
				
			 
						
				:skull:
				
			 
							 
				
							
				:smile:
				
			 
						
				:timide:
				
			 
						
				:trink:
				
			 
						
				:vice:
				
			 
						
				:vomi:
				
			 
							 
				
							
				:wink:
				
			 
						
				:zzz: