Bonjour,
Bon le titre ne parle pas de lui meme mais c'est mon probleme :
J'ai une base de donnee SQL serveur, le "client" y a acces et peut changer les alias de ma vue, je doit travailler sur la vue mais je suis habituer a avoir une class qui gere la conexxion et une class manager, par exemple :
pour la connection :
et pour le manager :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php class Manager { private $_user="###"; private $_password="###"; public function dbConnect() { $db = new PDO('sqlsrv:Server=mon_serveur;Database=ma_base_de_donne', $this->_user, $this->_password , array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); $db->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8); return $db; } }
et c'est la que commence mon probleme avec mon objet ingredient :
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 <?php require_once("Class/Manager.php"); class IngredientsManager extends Manager { public function getList($order = 'Name') { $db = parent::dbConnect(); $ingredient = []; $q = $db->query("SELECT Code, Name FROM Products ORDER BY $order"); while ($data = $q->fetch(PDO::FETCH_ASSOC)) { $ingredient[] = new Ingredient($data); } return $ingredient; } public function update(Ingredient $ingredient) { $db = parent::dbConnect(); $q = $db->prepare('UPDATE Products SET Name = :name WHERE Code = :code'); $q->bindValue(':name', $ingredient->name()); $q->bindValue(':code', $ingredient->code(), PDO::PARAM_INT); $q->execute(); } public function add(Ingredient $ingredient) { $db = parent::dbConnect(); $q = $db->prepare('INSERT INTO Products(name) VALUES(:name)'); $q->bindValue(':nom', $ingredient->name()); $q->execute(); } public function deleted(Ingredient $ingredient) { $db = $this->dbConnect(); $q=$db->prepare('DELETE FROM Products WHERE Code = :code '); $q->bindValue(':code', $ingredient->code()); $q->execute(); } }
ma fonction hydrate prend les data depuis mon manager et set ses parametre en fonction du fait des alias dans SQL Serveur, hors vu que le client peut changer les alias (et au passage y mettre des espaces) ca ne marche plus, je suis un peu perdu je ne sais plus comment m'y prendre, ou alors sans faire d'objet ? y a t'il une solution en restant en POO ?
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 <?php class Ingredient { Private $_code; private $_name; public function code(){ return $this->_code;} public function name(){return $this->_name;} public function __construct(array $data) { $this->hydrate($data); } public function hydrate(array $data) { foreach ($data as $key => $value) { $method = 'set'.ucfirst($key); if (method_exists($this, $method)) { $this->$method($value); } } } public function setCode($code) { if (is_string($code)) { $this->_code = $code; } } public function setName($name) { if (is_string($name)) { $this->_name = $name; } } }
Partager