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 :
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 ?( ! ) 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
Partager