[POO] Débutant en POO, class mysql php5
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:
Code:
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;
}
} |
le code de ma récéption de formulaire:
Code:
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();
?> |
et enfin voici ce que cela me retourne:
Citation:
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...