Salut salut.
Je m'essaye à la POO avec mon piètre niveau en php.
Free ne disposant visiblement pas de l'API mysqli, je me décide à faire une petite class mysql adaptée à mes besoins.
Premier essai: rien ne marche.
Après qques heures de bidouille: rien ne marche.
Alors au final j'ai construit ma class en la calibrant par rapport à mon script d'exemple (une récéption de formulaire login).
Bref, c'est encore bien loin d'être classe utile...
Voici ma classe:
le code de ma récéption de formulaire:
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 <?php class mysql { public $query_result=''; public $num_rows=''; public $fetch_row=array(); public function __construct() { $connect = mysql_connect("sql.free.fr", "xxx", "xxx"); if (!$connect) { echo "<br /> Echec connection serveur MySQL <br />"; exit(); } echo "<br /> Connection serveur MySQL réussie <br />" ; $dbconnect = mysql_select_db(xxx,$connect); if (!$dbconnect) { echo "<br /> Echec connection BDD <br />"; exit(); } echo "<br /> Connection BDD réussie <br />" ; } public function __destruct() { $this->close(); } public function mysql_do_query($sql) { $query_result=mysql_query($sql); if (!$query_result) { echo "<br /> Echec de la requête mysql_do_query <br />"; exit(); } echo "<br /> mysql_do_query OK<br />" ; $this->query_result=$query_result ; } public function mysql_do_num_rows($query) { $num_rows=mysql_num_rows($query); if (!$num_rows) { echo "<br /> Echec de la requête mysql_do_num_rows <br />"; exit(); } echo "<br /> mysql_do_num_rows OK <br />"; $this->num_rows=$num_rows ; } public function mysql_do_fetch_row($query) { $fetch_row=mysql_fetch_row($query); if (!$fetch_row) { echo "<br /> Echec de la requête mysql_do_fetch_row <br />"; exit(); } echo "<br /> mysql_do_fetch_row OK <br />"; $this->fetch_row=$fetch_row; } }
et enfin voici ce que cela me retourne:
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 <?php include ("class.mysqlw.php5"); extract($_POST); $name = trim(htmlspecialchars(addslashes($_POST["name"]))); $pass = trim(htmlspecialchars(addslashes($_POST["pass"]))); $mysql_login = new mysql; $sql = sprintf("SELECT * FROM w_users WHERE name='%s' AND pass='%s'", mysql_real_escape_string($name), mysql_real_escape_string($pass)); $mysql_login->mysql_do_query($sql); $query = $mysql_login->query_result; $mysql_login->mysql_do_num_rows($query); if ($mysql_login->num_rows == 1) { $mysql_login->mysql_do_fetch_row($query); $datalogin = $mysql_login->fetch_row; echo "<br />Salut<br />".$datalogin['id']." ".$datalogin['name']." ".$datalogin['pass']." ".$datalogin['level']."<br />"; } else { echo "login échoué"; } $mysql_login->close(); ?>
Connection serveur MySQL réussie
Connection BDD réussie
mysql_do_query OK
mysql_do_num_rows OK
mysql_do_fetch_row OK
Salut
Fatal error: Call to undefined method mysql::close() in /var/www/free.fr/1/0/ouafouaf9/_WAFBLOG/exercices/004_structure_de_controle/3_Class/form.php5 on line 34
Fatal error: Call to undefined method mysql::close() in /var/www/free.fr/1/0/ouafouaf9/_WAFBLOG/exercices/004_structure_de_controle/3_Class/class.mysqlw.php5 on line 20
Donc deux problème:
1) j'ai pas trop compris le fonctionnement de __destruct()
2) l'extraction des résultats de mysql_fetch_row dans un tableau.
Merci pour votre aide éventuel
Je trouve pas trop d'infos ou de sites pour m'aider. La pluparts des documents sont soit trop compliqués pour moi, soit ne m'aident pas...
Partager