Bonjour,
pour un projet (application Android), j'ai besoin de communiquer avec une base de données. Le transfert des données se fait à travers une page php..sauf qu'en php j'y connais pas grand chose, à part récupérer une valeur de la bdd et la renvoyer en json. Dès que je souhaite réaliser des calculs avec les données de la bdd sur la page php, ça ne fait plus rien...je ne dois pas faire les choses correctement.. J'utilise la librairie slim avec.
Ci-dessous un peu de code, ça ne doit pas être très plaisant à voir, mais j'espère que vous pourrez tout de même m'expliquer ce qu'il ne va pas :
La page index.php qui "reçoit" les demandes et renvoi un json :
une page DbHandler.php qui réalise les requêtes php (j'ai l'impression que c'est là-dedans que ça ne va pas...quand on voit la tête que ça a.. >< )
Code : 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 //renvoie la réponse au format json function echoRespnse($status_code, $response) { $app = \Slim\Slim::getInstance(); // Http response code $app->status($status_code); // setting response content type to json $app->contentType('application/json'); echo json_encode($response); } $app->get('/data/dpe', function(){ $db = new DbHandler(); $resultShon = $db->getShon(); $resultelec = $db->calculdpelec($resultShon); $resultgaz = $db->calculdpegaz($resultShon); $resultbois = $db->calculdpegaz($resultShon); $resultfinal = $resultelec + $resultgaz + $resultbois; //théoriquement, c'est une valeur numérique $response["dpe"] = array(); $value = array(); $value["value"] = $resultfinal; array_push($response["dpe"], $value); echoRespnse(200, $response); });
Les reqêtes sql fonctionnent, elles ont toutes été testées individuellement sur la bdd.
Code : 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
71
72
73
74
75
76
77 public function getShon(){ $stmt = $this->conn->prepare("SELECT g.valeur FROM variable g WHERE g.nom = 'shon'"); $stmt->execute(); $tasks = $stmt->get_result(); $stmt->close(); $value = $tasks->fetch_assoc(); return $value["valeur"]; } public function calculdpelec($surface){ $stmt1 = $this->conn->prepare("SELECT COUNT(*) AS tab FROM (SELECT DISTINCT(DATE(ts)) FROM globale) AS alias"); $stmt1->execute(); $nbdate = $stmt1->get_result(); $stmt1->close(); $stmt = $this->conn->prepare("SELECT SUM(g.valeur) AS som FROM globale g"); $stmt->execute(); $tasks = $stmt->get_result(); $stmt->close(); $nb = $nbdate->fetch_assoc(); $value = $tasks->fetch_assoc(); return (($value["som"] * 2.58)/ $surface) / ($nb["tab"] / 365); } public function calculCoeffRegion(){ $stmt2 = $this->conn->prepare("SELECT v.valeur FROM variable v WHERE v.nom = 'coefficientRegion'"); $stmt2->execute(); $coeffregion = $stmt2->get_result(); $stmt2->close(); $coeffr = $coeffregion->fetch_assoc(); return $coeffr["valeur"]; } public function calculdpegaz($surface){ $stmt0 = $this->conn->prepare("SELECT v.valeur FROM variable v WHERE v.nom = 'coefficientgaz'"); $stmt0->execute(); $coeffgaz = $stmt0->get_result(); $stmt0->close(); $stmt1 = $this->conn->prepare("SELECT COUNT(*) AS tab FROM (SELECT DISTINCT(DATE(ts)) FROM gaz) AS alias"); $stmt1->execute(); $nbdate = $stmt1->get_result(); $stmt1->close(); $stmt = $this->conn->prepare("SELECT SUM(g.valeur) AS som FROM gaz g"); $stmt->execute(); $tasks = $stmt->get_result(); $stmt->close(); $value = $tasks->fetch_assoc(); $coeffg = $coeffgaz->fetch_assoc(); $nb = $nbdate->fetch_assoc(); $coeffr = calculCoeffRegion(); return (($value["som"] * $coeffr * $coeffg["valeur"]) / $surface) / ($nb["tab"] / 365); } public function calculdpebois($surface){ $stmt1 = $this->conn->prepare("SELECT COUNT(*) AS som FROM (SELECT DISTINCT date FROM gaz) AS alias"); $stmt1->execute(); $nbdate = $stmt1->get_result(); $stmt1->close(); $stmt = $this->conn->prepare("SELECT SUM(g.nombre) AS val FROM gaz g"); $stmt->execute(); $tasks = $stmt->get_result(); $stmt->close(); $value = $tasks->fetch_assoc(); $nb = $nbdate->fetch_assoc(); return (($value["val"] * 1000000) / $surface) / ($nb["som"] / 365); }
Je vous remercie, quelque soit l'aide que vous pourriez m'apporter.
Cordialement,
Nicolas
EDIT : je viens de m'apercevoir qu'il y a un sous-forum dédié à php - mysql, je suppose donc que mon post est mal placé, je m'en excuse.
Partager