Bonjour à tous,

J'ai un problème de variable et je ne trouve pas le problème, si quelqu'un aurait une solution ?

Le but est depuis une requêtes SQL, avec un paramètre en fin d'URL. De récupéré depuis une période (mois, jours,...) et que l’afficher.

- J'ai activer les erreurs PDO,
- J'essaie d'analyser les erreurs en l'URL pour retourner un message.

Mais j'ai un problème de variable si vous avez la réponse merci de me l'indiquer.

Merci d'avance

Voici mon code :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
 
 //Affichage des erreurs PHP
 error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
 
//class de connexion à la bdd
require_once 'Database.php';
 
$oDb  = new Database();
//$con = $oDb->getConnection(); 
 
$periode = 'HOUR';
if( !empty( $_GET['periode'] ) ) {
    switch( $_GET['periode'] ) {
        case 1:
            $periode = 'HOUR';
            break;
        case 2:
            $periode = 'DAY';
            break;
        case 3:
            $periode = 'WEEK';
            break;
        case 4:
            $periode = 'MONTH';
            break;
        case 5:
            $periode = 'YEAR';
            break;
    }
}
 
$sql = "SELECT timestamp,sensor,value from sensorparser Where timestamp > CURDATE() - INTERVAL 1 ".$periode;
 
$res = $oDb->db_All($sql);
 
$result = $res->query($sql);
$result->setFetchMode(PDO::FETCH_OBJ);
$i=0;
$liste=array();
while($l=$result->fetch())
{
	$courant = array(
		'timestamp'=>("/Date(".strtotime($l->timestamp)."000)/"),
	'sensor'=>$l->sensor,
	'value'=>$l->value);
$liste[$i]=$courant;
$i++;
}
 
 
if(!empty($res)){
  $json = json_encode($res);
  echo strtr($json, ['filename' => 'fileName', 'folderdirectory' => 'folderDirectory', 'lastchange' => 'lastChange']);
}else{
  echo "Paramètre inconnu ";
}

Databse

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
 
class Database {
 
    private $host = "xxxxxxx";
    private $username = "xxxxx";
    private $password = "xxxxx";
    private $database = "xxxxxxxxxx";
 
   public $connexion;
 
	function __construct(){
		$this->getconnexion();
	}
 
    public function getconnexion() {
        $this->connexion = null;
 
        try {
            $this->connexion = new PDO("mysql:host=".$this->host.";dbname=".$this->database .';charset=utf8', $this->username, $this->password);
            // Activation des erreurs PDO
			 $this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
			 $this->connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        } catch (PDOException $exception) {
            echo "Error: ".$exception->getMessage();
            die();
        }
        return $this->connexion;
    }
 
    public function closeconnexion() {
        $this->connexion = null;
    }
 
 
	/**
	Execution d'une requete preparee
	*/
	public function db_Exec($sql,$datas=NULL){
 
		//Execution de la requete
		try{
		  $requete = $this->connexion->prepare($sql) ;
		  $requete->execute($datas) ;
		}catch(Exception $e){
		  // en cas d'erreur :
		   echo " Erreur ! ".$e->getMessage();
		   echo " Les datas : " ;
		  print_r($datas);
		  exit;
		}
		return $requete;
	}
 
	/**
	 Requête SELECT
	 @sql string
	 @datas array
	 @return Array
	*/
	public function db_All($sql,$datas=NULL){
		$req = $this->db_Exec($sql,$datas);
		return $req->fetchAll();
	}
 
}
 
 
?>

Voici le résultat :

( ! ) Fatal error: Uncaught Error: Call to a member function query() on array in C:\wamp64\www\ControleAmbiance\getTranslation.php on line 39
( ! ) Error: Call to a member function query() on array in C:\wamp64\www\ControleAmbiance\getTranslation.php on line 39
Call Stack
# Time Memory Function Location
1 0.0013 407688 {main}( ) ...\getTranslation.php:0
Et serait-il possible de retourner en JSON un message d’erreur avec une clé (par exemple ERREUR_PARAM) et une valeur significative de l’erreur détectée (par exemple paramètre inconnu) ? Et comment faire ?