Page 1 sur 2

Requête Php

Posté : 24 oct. 2014, 16:32
par JP54
Bonjour,
je suis en train d'automatisé certains de mes graphiques qui jusqu'à présent je replissais manuellement.
J'ai repris le graphique des jours de pluie pour l'année 2014 fait par Jean Michel et j'essaie de le modifier. Mon graphique s'affiche bien, mais pas les donnés. je pense que le problème vient de ma requête, le reste me parait correct.
Mon graphique: http://www.meteo-jarny.com/graphiques-d ... -copie.php

Je vous mets également le code complet du graphique, un petit coup de pouce serait le bienvenu

Code : Tout sélectionner

<?php
// appel du script de connexion
require("mysql_connect.php");                     
$conn=mysqli_connect($server,$user,$pass,$db);

$start=mktime(0,0,0,1,1,date("Y"));
$stop =mktime(0,0,0,1,1,date("Y")+1);

$sql="SELECT substr(recdatetz, 5, 2),count(*) FROM MiniMaxidata 
      WHERE tstamp > '$start' 
      AND tstamp <= '$stop'
      AND Rain_jour
      group by 1
      union
      SELECT substr(recdatetz, 5, 2),null FROM MiniMaxidata 
      WHERE tstamp > '$start' 
      AND tstamp <='$stop'
      AND substr(recdatetz, 5, 2) not in (SELECT substr(recdatetz, 5, 2) 
                                          FROM MiniMaxidata
                                          WHERE tstamp > '$start'
                                          AND tstamp <= '$stop'
                                          AND Rain_jour)
      group by 1
      order by 1";
$query=mysqli_query($conn,$sql);  
$i=0;
while($list=mysqli_fetch_array($query)) {
$Rain_jour[$i]=$list[1]*1;
if($Rain_jour[$i]==0) {$Rain_jour[$i]= null;}
$i++;
} 
$Normale=array(69.4, 56.1, 65.1, 53.9, 63.3, 63.2, 70.7, 64.2, 66.9, 71, 67.2, 74.8,null,null);
$Time=array("jan","fev","mar","avr","mai","juin","jui","août","sep","oct","nov","déc","","année");
$Rain_jour=array($Pluie[0],$Pluie[1],$Pluie[2],$Pluie[3],$Pluie[4],$Pluie[5],$Pluie[6],$Pluie[7],$Pluie[8],$Pluie[9],$Pluie[10],$Pluie[11],$Pluie[12],null,null);
$Normale_an= 785.8;
$Pluie_an = $Pluie[0]+$Pluie[1]+$Pluie[2]+$Pluie[3]+$Pluie[4]+$Pluie[5]+$Pluie[6]+$Pluie[7]+$Pluie[8]+$Pluie[9]+$Pluie[10]+$Pluie[11]+$Pluie[12];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<META NAME="SUBJECT" CONTENT="Graphique Vantage Pro Davis">
<META NAME="DESCRIPTION" CONTENT="graphique dynamique">
<META NAME="KEYWORDS" CONTENT=" mto, pluie, vent, temprature, temperature, station, Vantage, Davis, Pro, Davis Vantage Pro,pression, UV, soleil,">
<META NAME="REVISIT-AFTER" CONTENT="5 DAYS">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=9" >
<META NAME="LANGUAGE" CONTENT="FR">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Météo Jarny - graphique dynamique température des dernières 48 heures</title>

      
      <!-- 1. Add these JavaScript inclusions in the head of your page -->
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>         
		<script type="text/javascript" src="http://code.highcharts.com/highcharts.js"></script> 	
		<script type="text/javascript" src="http://code.highcharts.com/themes/grid.js"></script> 
		<script type="text/javascript" src="http://code.highcharts.com/modules/exporting.js"></script>
<!--		<script type="text/javascript" src="jquery/overlib.js"></script>
		<script type="text/javascript" src="jquery/overlib_fade.js"></script>  -->  


      <script type="text/javascript">  
        function comArr(unitsArray) { 
        var outarr = [];
        for (var i = 0; i < dTime.length; i++) {
         outarr[i] = [dTime[i], unitsArray[i]];
        }
      return outarr;
    } 	  
$(function () {
    var chart;        
         $(document).ready(function() {      
         var highchartsOptions = Highcharts.setOptions(Highcharts.theme);		 
         Highcharts.setOptions({
        lang: {
        months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
        weekdays: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
        shortMonths: ['Jan.', 'Fév.', 'Mars', 'Avr.', 'Mai', 'Juin', 'Juil.', 'Août', 'Sept.', 'Oct.', 'Nov.', 'Déc'],
        exportButtonTitle: "Exporter",
        printButtonTitle: "Imprimer",
        rangeSelectorFrom: "Du:",
        rangeSelectorTo: "A:",
        rangeSelectorZoom: "Période:",
        resetZoom: 'RAZ Zoom',
        resetZoomTitle: 'Initialiser zoom ? 1:1',
        downloadPNG: "Télécharger au format PNG image",
        downloadJPEG: "Téléécharger au format JPEG image",
        downloadPDF: "Télécharger au format PDF document",
        downloadSVG: "Télécharger au format SVG vector image",
        exportButtonTitle: "Exporter image ou document",
        printButtonTitle: "Imprimer le graphique",
        loading: "Chargement...",
        thousandsSep: ""
        }
      });
        chart = new Highcharts.Chart({
            chart: {
			renderTo: 'container', 
              zoomType: 'x', 
                type: 'column',
                margin: [ 50, 85, 75, 80],
				backgroundColor: {
				linearGradient: [0, 500, 500, 0],
				stops: [
				    [0, 'rgb(158, 171, 252)'],
                    [1, 'rgb(255, 255, 255)']

                ]
              },
            },
            title: {
                text: 'Comparaison des cumul mensules de l\'année 2014'
            },
			subtitle: {
                text: 'Source: Météo Jarny',
                x: -20
            },

			credits: {
            text: '© Météo Jarny',
            href: 'http://www.meteo-jarny.com'
			},

            xAxis: {
                categories: [
                    'Jan',
                    'Fév',
                    'Mar',
                    'Avr',
                    'Mai',
                    'Juin',
                    'Juil',
                    'Août',
                    'Sep',
                    'Oct',
                    'Nov',
                    'Déc',
                    '',
					'Année'
                ],
                labels: {
                    rotation: 0,
                    align: 'center',
                    style: {
                        fontSize: '13px',
                        fontFamily: 'Verdana, sans-serif'
                    }
                }
            },
            yAxis: [{
			max: 150,
			min: 0,
			      title: {
                  text: 'Cumuls mensuels',
                },
					labels: {
                    formatter: function() {
                        return this.value +' mm';
                    },
                    style: {
                        color: '#000000'
                    }
                },
				
            },
{
			max: 1500,
			min: 0,
			      title: {
                  text: 'Cumul annuel',
                },
					labels: {
                    formatter: function() {
                        return this.value +' mm';
                    },
                    style: {
                        color: '#000000'
                    }
                },
				opposite: true
            }],

            legend: {
                enabled: true,
				x: 0

            },
tooltip: {
            pointFormat: '{series.name}: <b>{point.y}</b><br/>',
            valueSuffix: ' mm',
            shared: true
        },
			plotOptions: {
                column: {
                	grouping: false,
                	shadow: false,
                    
                }
            },
			
			series: [{
                name: 'Cumuls mensuels',
				color: '#688dfe',
                data:  comArr(dRain_jour),
                pointPadding: -0.2    
            },{
                type: 'spline',
                color: '#ff8c00',
                name: 'Normale',
                data: comArr(dNormale),
				lineWidth: 0,
				marker :{
				enbled: true,
				symbol: 'circle',
				radius: 3},
                pointPadding: -0.3
				},{
                name: 'Cumul annuel',
                color: '#688dfe',
                data: [null,null,null,null,null,null,null,null,null,null,null,null,null, <?php echo $Pluie_an;?>],
				pointPadding: -0.2,
				yAxis: 1
            },{
                name: 'Normale',
                color: '#84e598',
                data: [null,null,null,null,null,null,null,null,null,null,null,null,null,<?php echo $Normale_an;?>],
				yAxis: 1
    
            }]
        });
    });
 });	
eval(<?php echo  "'var dTime =  ".json_encode($Time)."'" ?>);
eval(<?php echo  "'var dRain_jour =  ".json_encode($Rain_jour)."'" ?>);
eval(<?php echo  "'var dNormale =  ".json_encode($Normale)."'" ?>); 
eval(<?php echo  "'var dNormale_an =  ".json_encode($Normale_an)."'" ?>); 
eval(<?php echo  "'var dPluie_an =  ".json_encode($Pluie_an)."'" ?>);	
     </script>
    <style type="text/css">
.style1 {
	text-align: left;
}
</style>
    </head>
     <body>
<table width="500" border="0" align="center">

<tr>
<td>	 
       <div id="container" style="width: 600px; height: 300px; margin: 0 auto" class="style1"></div>
	   <div align="center"></div>
	   </td></tr></table>
     </body>
</html>

Re: Requête Php

Posté : 24 oct. 2014, 16:53
par Météo Villarzel
Salut Pascal,
difficile à dire comme ça, mais regarde bien du côté de ta requête PHP, tu ne récupère pas le rain_jour, si tu regardes le code source de ta page, les valeurs sont à null

eval('var dTime = ["jan","fev","mar","avr","mai","juin","jui","ao\u00fbt","sep","oct","nov","d\u00e9c","","ann\u00e9e"]');
eval('var dRain_jour = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]');
eval('var dNormale = [69.4,56.1,65.1,53.9,63.3,63.2,70.7,64.2,66.9,71,67.2,74.8,null,null]');
eval('var dNormale_an = 785.8');
eval('var dPluie_an = 0');

Re: Requête Php

Posté : 24 oct. 2014, 17:01
par JP54
Je sais Pierre André, le problème vient de ma requête, mais je n'arrive pas à trouvé la solution, j'ai essayé pas mal de chose, mais rien du tout, je continue à chercher.

Re: Requête Php

Posté : 24 oct. 2014, 17:52
par Météo Villarzel
je jetterais un coup d’œil, mais je ne suis pas à la maison ce soir, si jamais j'ai fait un graphique qui ressemble à ce que tu veux faire
http://www.boock.ch/meteo/pluie-comparatif-normes.php

A+

Re: Requête Php

Posté : 24 oct. 2014, 18:04
par JP54
Ce que je veux faire ressemble à ton graphique.
Voici le graphique que je rempli tout les mois manuellement
http://www.meteo-jarny.com/graphique-cl ... e-2014.php
et moi je voudrais l'automatisé

Re: Requête Php

Posté : 25 oct. 2014, 07:41
par JP54
J'ai avancé un peu mais pas beaucoup, j'affiche sur le graphique le nombre de jours de pluie mensuels et annuel.
http://www.meteo-jarny.com/graphiques-d ... -copie.php

Le problème vient bien de ma requête que je n'arrive pas à modifier

Code : Tout sélectionner

<?php
// appel du script de connexion
require("mysql_connect.php");                     

$conn=mysqli_connect($server,$user,$pass,$db);

$start=mktime(0,0,0,1,1,date("Y"));
$stop =mktime(0,0,0,1,1,date("Y")+1);

$sql="SELECT substr(recdatetz, 5, 2),count(*) FROM MiniMaxidata 
      WHERE tstamp > '$start' 
      AND tstamp <= '$stop'
      AND Rain_jour
      group by 1
      union
      SELECT substr(recdatetz, 5, 2),null FROM MiniMaxidata 
      WHERE tstamp > '$start' 
      AND tstamp <='$stop'
      AND substr(recdatetz, 5, 2) not in (SELECT substr(recdatetz, 5, 2) 
                                          FROM MiniMaxidata
                                          WHERE tstamp > '$start'
                                          AND tstamp <= '$stop'
                                          AND Rain_jour)
      group by 1
      order by 1";
$query=mysqli_query($conn,$sql);  
$i=0;
while($list=mysqli_fetch_array($query)) {
$Pluie[$i]=$list[1]*1;
if($Pluie[$i]==0) {$Pluie[$i]= null;}
$i++;
} 
$Normale=array(69.4, 56.1, 65.1, 53.9, 63.3, 63.2, 70.7, 64.2, 66.9, 71, 67.2, 74.8,null,null);
$Time=array("jan","fev","mar","avr","mai","juin","jui","août","sep","oct","nov","déc","","année");
$Pluie=array($Pluie[0],$Pluie[1],$Pluie[2],$Pluie[3],$Pluie[4],$Pluie[5],$Pluie[6],$Pluie[7],$Pluie[8],$Pluie[9],$Pluie[10],$Pluie[11],$Pluie[12],null,null);
$Normale_an= 785.8;
$Pluie_an = $Pluie[0]+$Pluie[1]+$Pluie[2]+$Pluie[3]+$Pluie[4]+$Pluie[5]+$Pluie[6]+$Pluie[7]+$Pluie[8]+$Pluie[9]+$Pluie[10]+$Pluie[11]+$Pluie[12];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<META NAME="SUBJECT" CONTENT="Graphique Vantage Pro Davis">
<META NAME="DESCRIPTION" CONTENT="graphique dynamique">
<META NAME="KEYWORDS" CONTENT=" mto, pluie, vent, temprature, temperature, station, Vantage, Davis, Pro, Davis Vantage Pro,pression, UV, soleil,">
<META NAME="REVISIT-AFTER" CONTENT="5 DAYS">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=9" >
<META NAME="LANGUAGE" CONTENT="FR">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Météo Jarny - graphique dynamique température des dernières 48 heures</title>

      
      <!-- 1. Add these JavaScript inclusions in the head of your page -->
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>         
		<script type="text/javascript" src="http://code.highcharts.com/highcharts.js"></script> 	
		<script type="text/javascript" src="http://code.highcharts.com/themes/grid.js"></script> 
		<script type="text/javascript" src="http://code.highcharts.com/modules/exporting.js"></script>
<!--		<script type="text/javascript" src="jquery/overlib.js"></script>
		<script type="text/javascript" src="jquery/overlib_fade.js"></script>  -->  


      <script type="text/javascript">  
        function comArr(unitsArray) { 
        var outarr = [];
        for (var i = 0; i < dTime.length; i++) {
         outarr[i] = [dTime[i], unitsArray[i]];
        }
      return outarr;
    } 	  
$(function () {
    var chart;        
         $(document).ready(function() {      
         var highchartsOptions = Highcharts.setOptions(Highcharts.theme);		 
         Highcharts.setOptions({
        lang: {
        months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
        weekdays: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
        shortMonths: ['Jan.', 'Fév.', 'Mars', 'Avr.', 'Mai', 'Juin', 'Juil.', 'Août', 'Sept.', 'Oct.', 'Nov.', 'Déc'],
        exportButtonTitle: "Exporter",
        printButtonTitle: "Imprimer",
        rangeSelectorFrom: "Du:",
        rangeSelectorTo: "A:",
        rangeSelectorZoom: "Période:",
        resetZoom: 'RAZ Zoom',
        resetZoomTitle: 'Initialiser zoom ? 1:1',
        downloadPNG: "Télécharger au format PNG image",
        downloadJPEG: "Téléécharger au format JPEG image",
        downloadPDF: "Télécharger au format PDF document",
        downloadSVG: "Télécharger au format SVG vector image",
        exportButtonTitle: "Exporter image ou document",
        printButtonTitle: "Imprimer le graphique",
        loading: "Chargement...",
        thousandsSep: ""
        }
      });
        chart = new Highcharts.Chart({
            chart: {
			renderTo: 'container', 
              zoomType: 'x', 
                type: 'column',
                margin: [ 50, 85, 75, 80],
				backgroundColor: {
				linearGradient: [0, 500, 500, 0],
				stops: [
				    [0, 'rgb(158, 171, 252)'],
                    [1, 'rgb(255, 255, 255)']

                ]
              },
            },
            title: {
                text: 'Comparaison des cumuls mensuels de l\'année 2014'
            },
			subtitle: {
                text: 'Source: Météo Jarny',
                x: -20
            },

			credits: {
            text: '© Météo Jarny',
            href: 'http://www.meteo-jarny.com'
			},

            xAxis: {
                categories: [
                    'Jan',
                    'Fév',
                    'Mar',
                    'Avr',
                    'Mai',
                    'Juin',
                    'Juil',
                    'Août',
                    'Sep',
                    'Oct',
                    'Nov',
                    'Déc',
                    '',
					'Année'
                ],
                labels: {
                    rotation: 0,
                    align: 'center',
                    style: {
                        fontSize: '13px',
                        fontFamily: 'Verdana, sans-serif'
                    }
                }
            },
            yAxis: [{
			min: 0,
			      title: {
                  text: 'Cumuls mensuels',
                },
					labels: {
                    formatter: function() {
                        return this.value +' mm';
                    },
                    style: {
                        color: '#000000'
                    }
                },
				
            },
{
			min: 0,
			      title: {
                  text: 'Cumul annuel',
                },
					labels: {
                    formatter: function() {
                        return this.value +' J.';
                    },
                    style: {
                        color: '#000000'
                    }
                },
				opposite: true
            }],

            legend: {
                enabled: true,
				x: 0

            },
tooltip: {
            pointFormat: '{series.name}: <b>{point.y}</b><br/>',
            valueSuffix: ' mm',
            shared: true
        },
			plotOptions: {
                column: {
                	grouping: false,
                	shadow: false,
                    
                }
            },
			
			series: [{
                name: 'Cumuls mensuels',
				color: '#688dfe',
                data:  comArr(dPluie),
                pointPadding: -0.2    
            },{
                type: 'spline',
                color: '#ff8c00',
                name: 'Normale',
                data: comArr(dNormale),
				lineWidth: 0,
				marker :{
				enbled: true,
				symbol: 'circle',
				radius: 3},
                pointPadding: -0.3
				},{
                name: 'Cumul annuel',
                color: '#688dfe',
                data: [null,null,null,null,null,null,null,null,null,null,null,null,null, <?php echo $Pluie_an;?>],
				pointPadding: -0.2,
				yAxis: 1
            },{
                name: 'Normale',
                color: '#84e598',
                data: [null,null,null,null,null,null,null,null,null,null,null,null,null,<?php echo $Normale_an;?>],
				yAxis: 1
    
            }]
        });
    });
 });	
eval(<?php echo  "'var dTime =  ".json_encode($Time)."'" ?>);
eval(<?php echo  "'var dPluie =  ".json_encode($Pluie)."'" ?>);
eval(<?php echo  "'var dNormale =  ".json_encode($Normale)."'" ?>); 
eval(<?php echo  "'var dNormale_an =  ".json_encode($Normale_an)."'" ?>); 
eval(<?php echo  "'var dPluie_an =  ".json_encode($Pluie_an)."'" ?>);	
     </script>
    <style type="text/css">
.style1 {
	text-align: left;
}
</style>
    </head>
     <body>
<table width="500" border="0" align="center">

<tr>
<td>	 
       <div id="container" style="width: 600px; height: 300px; margin: 0 auto" class="style1"></div>
	   <div align="center"></div>
	   </td></tr></table>
     </body>
</html>

Re: Requête Php

Posté : 25 oct. 2014, 12:33
par Météo Villarzel
A mon avis tu ne récupère pas tes données correctement


"select sum(Rain_jour) from MiniMaxidata where .....

le rain jour est avant le from, car avec AND tu ne récupère que les jours ou il y a plu.

C'est comme pour toutes les autre requêtes, tu sélectionnes ce que tu veux récupérer dans la BDD puis from (à partir de) le nom de la table.

A+

Re: Requête Php

Posté : 25 oct. 2014, 15:29
par JP54
Je patauge un peu dans la semoule, mais je vois une valeur qui s'affiche dans le graphique même si c'est pas de que je veux, je suis content :D au moins j'arrive à afficher quelques chose :mrgreen:
Je suis dessus depuis ce matin, j'ai parcouru pas mal de site avec explications sur les requêtes, j'espère bien y arrivé avant la fin du mois. :mrgreen:

Re: Requête Php

Posté : 25 oct. 2014, 15:56
par Météo Villarzel
Et pourtant j'avais raison :lol:
en 2 minutes

http://www.boock.ch/meteo/graphiques_php_test/jarny.php

Code : Tout sélectionner

$sql="SELECT substr(recdatetz, 5, 2),sum(Rain_jour) FROM MiniMaxidata 

Re: Requête Php

Posté : 25 oct. 2014, 16:25
par JP54
Je vais t'avouer un chose Pierre André, ça fait une dizaine de jours que je suis sur ce graphique et toi en deux minutes tu as a la solution, tu me démoralise :x .Je n'y suis 24h sur 24, mais j'y passé un bon moment.
En fait si je regarde bien la requête, j'avais presque tout les éléments, mais dans le désordre. C'est un peu comme quand je joue au tiercé le week-end, il me manque toujours un cheval pour l'avoir dans l'ordre :mrgreen:

Afin de ne pas mourir bête, peux tu me dire a quoi sert count dans la requête de mon premier test, j'ai trouvé quelques trucs sur internet, mais je n'ai pas comptis

$sql="SELECT substr(recdatetz, 5, 2),count(*) FROM MiniMaxidata