Problème acquisition donnée

spidy73
Invité n'ayant pas de compte PHPfrance

11 mars 2019, 14:48

Bonjour à tous,
J'ai un petit problème pour afficher des données, le php ne marche pas ou me renvoie un 0 à la place.

Le code source php :
<?php

include("php/db.php");

	$gethum = $bdd->query("SELECT 'humidity' FROM '00000001' ORDER BY 'timeStamp' DESC");
        $gethum->fetch();

        $gettemp = $bdd->query("SELECT 'temperature' FROM '00000001' ORDER BY 'timeStamp' DESC");
	$gettemp->fetch();

	$hum=floatval($gethum);
	$temp=floatval($gettemp);

	
?>
Le code de la page en php :
<?php
session_start();
include("php/donnees.php");
include("php/profil.php");

 if (!isset($_SESSION['id'])) {
    header ('Location: connexion.php');
    exit();
    }
?>
<html>
    <head>
      <title>XXXXXXXXX</title>
	   <meta name="author" content="Quentin XXXXXXX">
      <meta charset="utf-8">
		<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
	  <link rel="stylesheet" type="text/css" href="css/style.css">
   </head>
<body>
<?php require "html/header.php"; ?>
	

<div id="actualisez_moi">
<div class="container">
  <div class="row" style="margin-left:0px; padding-top:20px;margin-right:0px; ">
	   <div class="col-sm-12" style="margin-left:0px; margin-right:0px; width:100%;" >
	  		<div class="col-sm-3 block" style="opacity:0;"><table class="donnes"border="0" cellspacing="0" cellpadding="0">
						<tr>
							<td >&nbsp;<h2>Humidité</h2>&nbsp;</td>
						</tr></table></div>
    			<div class="col-sm-3 block">
					<table class="donnes" border="0" cellspacing="0" cellpadding="0" >
						<tr >
							<td>&nbsp;<h2 >Température</h2>&nbsp;</td>
						</tr>
					
						<?php 
						  echo '<tr ><td style="text-align:center;font-size:2em;font-color:#4f4f4f;"><i class="fas fa-thermometer-half" style="margin-right:8px;color:#AC92EC"></i>'. $temp .'°</td></tr>';
							 
					  		?>
				   </table>
	  			</div>
		   <div class="col-sm-3 block" style="opacity:1">
			   <table  class="donnes" border="0" cellspacing="0" cellpadding="0">
						<tr>
							<td >&nbsp;<h2>Humidité </h2>&nbsp;</td>
						</tr>
					 <?php 
							  echo '<tr ><td style="font-size:2em;font-color:#4f4f4f;"><i class="fa fa-tint" style="margin-right:8px;color:#4FC1E9"></i>'. $hum .'%</td></tr>';
							 
					  ?>
				   </table>
		   </div>
		 <div class="col-sm-3 block" style="opacity:0"><table class="donnes" border="0" cellspacing="0" cellpadding="0">
						<tr>
							<td >&nbsp;<h2>Humidité</h2>&nbsp;</td>
						</tr></table></div>
	  </div>
	</div>
	</div>
	</div>
<?php require "html/footer.html"; ?>
	</body>
</html>
Merci d'avance de votre aide

Mammouth du PHP | 1967 Messages

11 mars 2019, 16:09

test tes requètes dans phpmyadmin .

une table avec un nom en chiffre ca me semble bizarre.
Vérifie aussi si tu n'a aucun retour d'erreur de ta base de donnée
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 2703 Messages

11 mars 2019, 16:15

$gethum = $bdd->query("SELECT 'humidity' FROM '00000001' ORDER BY 'timeStamp' DESC");
$gethum->fetch();
$hum=floatval($gethum);

la fonction fetch retourne quelque chose, si ce n'est jamais récupéré, alors le code devient :
$gethum = $bdd->query("SELECT 'humidity' FROM '00000001' ORDER BY 'timeStamp' DESC");
$hum=floatval($gethum);
query() renvoi un objet PDOStatement, ce n'est donc pas étonnant que la conversion d'un objet en un nombre n'aboutit pas au résultat attendu.
il faut donc revoir la façon d'accéder au résultat d'un select (et ne faire qu'une seule requête au lieu de 2).

Petit nouveau ! | 2 Messages

11 mars 2019, 16:29

Alors en effet dans phpmyadmin il me signale une erreur de syntaxe

-> Erreur de syntaxe près de '00000001 ORDER BY 'timeStamp' DESC ' à la ligne 1

Le nom de table 00000001 c'est afin d'avoir une table pour un capteur via un identifiant unique à 8 chiffres.

J'ai déjà un site qui fonctionne en php mais avec mysql_query pour l'acquisition des données, et pour ce site la je souhaite gérer l'accès au donné via un espace membre et l'acquisition se fait avec PDO

J'avais également travailler sur un moyen de faire une seule et unique requête sous cette forme :

$get=$bdd->prepare("SELECT * FROM '00000001' ORDER BY 'timeStamp' DESC ");
$get->execute(array('humidity'=>$hum, 'temperature'=>$temp));

Je ne suis pas sur de la syntaxe, mais aucune donnée ne s'affiche

Petit nouveau ! | 2 Messages

11 mars 2019, 16:33

Mon autre site est sous cette forme :
$link=Connection();

	$result=mysql_query("SELECT * FROM `00000001` ORDER BY `timeStamp` DESC ",$link);
	$humidity=mysql_result($result, 0, 'humidity');
	$temperature=mysql_result($result, 0, 'temperature');

	$hum_round=round($humidity, 2);
	$temp_round=round($temperature, 2);