Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1265 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Débutant en POO, class mysql php5

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débutant en POO, class mysql php5

n°1299504
gnarky
Sac à puces
Posté le 05-02-2006 à 22:33:16  profilanswer
 

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. <?php
  2. class mysql {
  3. public $query_result='';
  4. public $num_rows='';
  5. public $fetch_row=array();
  6. public function __construct() {
  7.  $connect = mysql_connect("sql.free.fr", "xxx", "xxx" );
  8.    if (!$connect) { echo "<br /> Echec connection serveur MySQL <br />"; exit(); }
  9.  echo "<br /> Connection serveur MySQL réussie <br />" ;
  10.  $dbconnect = mysql_select_db(xxx,$connect);
  11.    if (!$dbconnect) { echo "<br /> Echec connection BDD <br />"; exit(); }
  12.  echo "<br /> Connection BDD réussie <br />" ;
  13. }
  14.         public function __destruct()
  15.         {
  16.            $this->close();
  17.         }
  18. public function mysql_do_query($sql) {
  19.  $query_result=mysql_query($sql);
  20.    if (!$query_result) { echo "<br /> Echec de la requête mysql_do_query <br />"; exit(); }
  21.  echo "<br /> mysql_do_query OK<br />" ;
  22.  $this->query_result=$query_result ;
  23. }
  24. public function mysql_do_num_rows($query) {
  25.  $num_rows=mysql_num_rows($query);
  26.    if (!$num_rows) { echo "<br /> Echec de la requête mysql_do_num_rows <br />"; exit(); }
  27.  echo "<br /> mysql_do_num_rows OK <br />";
  28.  $this->num_rows=$num_rows ;
  29. }
  30. public function mysql_do_fetch_row($query) {
  31.  $fetch_row=mysql_fetch_row($query);
  32.    if (!$fetch_row) { echo "<br /> Echec de la requête mysql_do_fetch_row <br />"; exit(); }
  33.  echo "<br /> mysql_do_fetch_row OK <br />";
  34.  $this->fetch_row=$fetch_row;
  35. }
  36. }


 
le code de ma récéption de formulaire:
 

Code :
  1. <?php
  2. include ("class.mysqlw.php5" );
  3. extract($_POST);
  4. $name = trim(htmlspecialchars(addslashes($_POST["name"])));
  5. $pass = trim(htmlspecialchars(addslashes($_POST["pass"])));
  6. $mysql_login = new mysql;
  7. $sql = sprintf("SELECT * FROM w_users WHERE name='%s' AND pass='%s'", mysql_real_escape_string($name), mysql_real_escape_string($pass));
  8. $mysql_login->mysql_do_query($sql);
  9. $query = $mysql_login->query_result;
  10. $mysql_login->mysql_do_num_rows($query);
  11. if ($mysql_login->num_rows == 1)
  12. {
  13. $mysql_login->mysql_do_fetch_row($query);
  14. $datalogin = $mysql_login->fetch_row;
  15. echo "<br />Salut<br />".$datalogin['id']." ".$datalogin['name']." ".$datalogin['pass']." ".$datalogin['level']."<br />";
  16. }
  17. else
  18. {
  19. echo "login échoué";
  20. }
  21. $mysql_login->close();
  22. ?>


 
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...

mood
Publicité
Posté le 05-02-2006 à 22:33:16  profilanswer
 

n°1299521
cesarr89
Posté le 05-02-2006 à 23:20:00  profilanswer
 

1)__destruct() , c'est le destructeur de ta classe, il contient le code qui doit être executé lors de la destruction de ton objet. Ici tu fais this->close(), donc tu devrais avoir une méthode close() dans la classe, or ici tu n'en as pas, donc forcément ca bloque.
De même dans le traitement de ton formulaire, tu fais un mysql_login->close() or ...[idem que precedement] donc ca bloque  
2)Ca doit te permettre de remplir un tableau en fonction des resultats de ta requête.


Message édité par cesarr89 le 05-02-2006 à 23:23:32

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Débutant en POO, class mysql php5

 

Sujets relatifs
[mySQL] PB regexp + convert utf8 > latinRequete php/mysql
[MySQL] Contrainte sur la clé étrangère ignorée.php/mysql afficher les resultat dans le désordre
Exportation tables Mysql > 2Mo[JBOSS et MySql] Pb de configuration
[MySQL] problème avec la clause IN[MySQL] Problème d'indexation FullText
[PHP/MYSQL] création d'un service de blog[JAVA - Débutant] - Probleme premier programme en JAVA
Plus de sujets relatifs à : Débutant en POO, class mysql php5


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR