J'ai récupéré des pages .php afin de récupérer des données d'une sonde thermo/hydro dans une bdd mysql. Pas de pb avec cette dernière mais j’essaie de l'adapter avec un pluviomètre.
Le pb vient de la nature des données, il faut que je puisse soustraire le dernier point pris en compte à l'avant dernier pour avoir la variation, soit dernier (10h30) enregistrement 22 mm, avant dernier (10h00) 20 mm donc 2 mm actuellement, mais comment l'adapter à cette page
Pour remplir ma bdd, j'envoie une requête vers une page php, qui traite la dernière réception et arrondie le timestamp à 30 mins, la voilà :
<?php
include_once('./include/include.php');
include('./include/connect_db.php');
$periode = 30;
$intensite = 0;
if(isset($_GET['intensite']) && !empty($_GET['intensite'])){
$intensite = $_GET['intensite'];
}
if(isset($_GET['total']) && !empty($_GET['total']) && isset($_GET['zone']) && !empty($_GET['zone']) ){
$total = $_GET['total'];
$zone = $_GET['zone'];
}else{
$query = "INSERT INTO precipitation (date, zone, total) VALUES ('".date('Y-m-d H:i')."','Erreur','-1')";
exec_query($query);
die('KO');
}
//////////////////////////////////////////
//test avec ajout des lignes 20 à 24 pour selectionner le max du champ
$sql="SELECT MAX(total) FROM precipitation";
$res=mysql_db_query($soft_config['dbName'], $sql);
$valeurmax=mysql_result($res,0,"max(total)");
//////////////////////////////////////////
$query = "select date from precipitation where zone = '".$zone."'order by date DESC limit 0,1";
$res_query = exec_query($query);
$nbMinutes = $periode;
if(mysql_numrows($res_query) > 0){
$nbMinutes = date_diff2(mysql_result($res_query,0,"date"),date('Y-m-d H:i:s'), 60);
$P2 = explode(" ",date("d m Y H i s",strtotime(mysql_result($res_query,0,"date"))));
$newDate = $dateCalcul = date('Y-m-d H:i:s', mktime($P2[3],$P2[4]+30,$P2[5],$P2[1],$P2[0],$P2[2]));
}else{
if(date('i') > '30'){
$newDate = date('Y-m-d H:').'30:00';
}else{
$newDate = date('Y-m-d H:').'00:00';
}
}
if($nbMinutes >= $periode){
//modification de la requete avec l'ajout de "difference" et du calcul pour la remplir
$query = "INSERT INTO precipitation (date, zone, total, intensite, difference) VALUES ('".$newDate."','".$zone."','".($total-16)."','".($intensite*2)."','".(($total-16)-$valeurmax)."')";
exec_query($query);
}
?>
Dans la page include.php, il y a les infos pour me connecter, dans la page connect_db.php, il y a ça:<?php
if (!isset($db)){
$db = @mysql_connect($soft_config['dbServer'],$soft_config['dbLogin'],$soft_config['dbPwd']) or die ("<br>Problème de connexion");
}
?>
Partant du principe que le max sera forcement le résultat que je cherche. Je compte faire valeur actuel, ici $total, moins $max. Je suis partis de cette requête et arrive à afficher la valeur souhaitée:
<?php
//////////////////////////////////////////////////////
///////////Connection à la base de données///////////
////////////////////////////////////////////////////
// Rentrer ici les paramètres d'accès à la base de données
$MySQL_Host="xxxx";// adresse du serveur mysql
$MySQL_User="xxxx";// nom d'utilisateur mysql
$MySQL_Passw="xxxx";// mot de passe mysql
$db="xxxx";// nom de la base de données
// Connection au server, ensuite teste la reponse.
if (! @$cc=mysql_connect
("$MySQL_Host","$MySQL_User","$MySQL_Passw"))
{
echo "Impossible d'établir de connexion à ",$MySQL_Host,"<br>";
exit;
}
mysql_query("SET NAMES UTF8");
/////////////////////////////////////////////////////////////
///Trouver la valeur la plus grosse d'un champ de table/////
///////////////////////////////////////////////////////////
$sql="SELECT MAX(champ) FROM Table";
$res=mysql_db_query($db, $sql);
$valeurmax=mysql_result($res,0,"max(champ)");
echo $valeurmax;?>
?>
J'ai fais de multiples tentatives, renseigné les paramètres d'accès à la base de données et intégré la requête complète à la page. Puis essayé d'adapter en utilisant le config.php (remplacer $MySQL_Host="xxxx" par $MySQL_Host="$soft_config['dbServer']" ....Pensant qu'il y a conflit avec les infos nécessaire pour me connecter à la bdd, deux fois affichés. J'ai rajouté les lignes 20 à 29. Et j'ai bien evidament le message suivant :
Parse error: syntax error, unexpected T_VARIABLE in/ public_html/Zibase/precipitationProcess.php on line 28
Merci d'avance