pb dans une requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb dans une requête

Re: pb dans une requête

par stephking56 » 21 nov. 2011, 19:22

Bon déçu de ne pas voir eu un peu d'aide, mais j'ai réussi à résoudre mes pb :wink:

pb dans une requête

par stephking56 » 12 nov. 2011, 00:54

Bonsoir à tous et à toutes et merci à tous ceux qui participent à ce forum. J'ai grâce à vous bien avancé, alors que je n'y connaissais rien il y encore quelques semaines.
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