Nouveau sujet Répondre Imprimer Syndication RSS 2.0

Utilisation des classes PHP

Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
Message édité 1 fois, dernière édition par Met@lnono, 05 Avril 2008, 10:03     Lien vers ce message 05 Avril 2008, 10:02
Salut,
j'ai un problème au niveau de l'utilisation de classe PHP.

J'ai développé une petit classe de gestion d'espace membre et je voudrais la coupler avec une classe de connexion mysql. pour le moment je fais les 'mysql_connect' etc en dur dans la classe 'user'.

Voici un extrait de ma classe user :
class user
{
	var $db;

	// Constructeur
	function user()	{
		// Connexion au serveur MySQL
		$this->db = new mysql('localhost', 'root', 'root', 'table');
	}

	function verifLogin($nick, $pass) {

		// Requete SQL
		$sql = "SELECT password FROM membres WHERE email='$nick'";
		// COMMENT EXECUTER LA REQUETE
[...]

	}

En faite je voudrais utiliser les fonctions de la classe mysql afin de lancer ma requête pour vérifier si le membre existe... mais je vois pas comment faire.
Si quelqu'un pouvait m'eclairer car j'ai encore un peu de mal avec la POO en PHP :fsb2_goutte:

Dans ma classe mysql, on se connecte avec connection() et on execute la requete avec requete().


 
Equipe des MODS
Avatar de Fabogranqi
  • Age : 19 ans
  • Messages : 3013
  • Inscrit : 29 Décembre 2004
  Lien vers ce message 05 Avril 2008, 11:13
Longtemps que j'ai pas fait de PHP (faudrait que je m'y remette pour faire quelques mods et faire un projet pour mon école :/ ), mais il me semble que c'est ça:

$this->db->requete()

Toute façon la POO c'est a peu près la même chose dans tout les langages (sauf PHP5 ou c'est encore trop incomplet -_-), il y a juste la syntaxe qui change.

Citation
Dans ma classe mysql, on se connecte avec connection()

Je pense pas que tu ai besoin de l'appeler car je pense que la constructeur de ta class mysql doit se connecter vu que tu lui fournis les infos de connexion
 
Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
  Lien vers ce message 05 Avril 2008, 12:10
OK je vais essayer ça.
Sinon dans le constructeur, il récupère simplement les données pour la connexion et ensuite je fais la connexion avec connection().
Sauf que je pourrais surement tout faire en même temps... je vais voir ça. Merci :)


 
Etoile
Avatar de BlackJowy
  • Age : 22 ans
  • Messages : 3229
  • Inscrit : 01 Mars 2007
Message édité 1 fois, dernière édition par BlackJowy, 05 Avril 2008, 12:11     Lien vers ce message 05 Avril 2008, 12:10
$this->db->requete();

Yep

Mais la DBAL de FSB est assez complète, pourquoi ne pas l'utiliser ?


"It's backup day today so I'm pissed off. Being the BOFH, however, does have it's advantages. I reassign null to be the tape device — it's so much more economical on my time as I don't have to keep getting up to change tapes every 5 minutes. And it speeds up backups too, so it can't be all bad can it? Of course not." S.Travaglia

 
Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
Message édité 1 fois, dernière édition par Met@lnono, 05 Avril 2008, 12:16     Lien vers ce message 05 Avril 2008, 12:15
OK je vais essayer cela tout à l'heure.

Parce que c'est pour mon projet et que j'ai trop peu de temps pour comprendre comment elle fonctionne... à moins que tu puisses me décrire sont fonctionnement :p


 
Etoile
Avatar de BlackJowy
  • Age : 22 ans
  • Messages : 3229
  • Inscrit : 01 Mars 2007
  Lien vers ce message 05 Avril 2008, 13:35
Bah elle appelle des methodes en fonction du SGBD choisi, j'vais t'éviter la masturbation sémantique liée à l'OO

Si tu veux juste MySQL, contente toi de prendre la classe principale, et remplacer les méthodes par celles qui t'interessent dans Dbal_mysql ^^

Tu connais déjà un peu la syntaxe de FSB, et le code en soi n'est pas des plus complexes ^^


"It's backup day today so I'm pissed off. Being the BOFH, however, does have it's advantages. I reassign null to be the tape device — it's so much more economical on my time as I don't have to keep getting up to change tapes every 5 minutes. And it speeds up backups too, so it can't be all bad can it? Of course not." S.Travaglia

 
Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
  Lien vers ce message 08 Avril 2008, 9:05
Nouvelle petite question, est ce qu'il est propre de faire un include d'une classe dans une fonction d'une autre classe ?
Sinon comment faire ?


 
Equipe des MODS
Avatar de Fabogranqi
  • Age : 19 ans
  • Messages : 3013
  • Inscrit : 29 Décembre 2004
  Lien vers ce message 08 Avril 2008, 9:14
Une fonction d'une autre classe = méthode :)

Sinon je vois pas trop ce que tu veux faire, car en principe on ne fais pas un include d'une class, mais plutot un include d'un fichier, qui lui contient une class.
 
Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
  Lien vers ce message 08 Avril 2008, 9:38
Oui tu as raison je me suis mal exprimé.
En fait j'ai une classe de gestion d'utilisateur qui hérite des méthodes d'une classe 'session'.
Dans une méthode de cette classe 'user', j'ai besoin d'utiliser un méthode d'un classe 'mysql' pour me connecter à ma base de données.

Est ce que ça se fait de faire un include du fichier de la classe 'mysql' dans la méthode de la classe 'user' ?

Merci en tout cas Fabo :)


 
Etoile
Avatar de BlackJowy
  • Age : 22 ans
  • Messages : 3229
  • Inscrit : 01 Mars 2007
Message édité 1 fois, dernière édition par BlackJowy, 08 Avril 2008, 11:07     Lien vers ce message 08 Avril 2008, 11:06
bah tu fais une instance de la classe mysql, et tu fais appel à la méthode que tu souhaites ....

genre dans ta classe USER tu crée un attribut $mysql que tu peux initialiser dans le constructeur par exemple et comme ça quand t'en as besoin dans ta classe USER, tu fais un $this->mysql->ma_methode();


"It's backup day today so I'm pissed off. Being the BOFH, however, does have it's advantages. I reassign null to be the tape device — it's so much more economical on my time as I don't have to keep getting up to change tapes every 5 minutes. And it speeds up backups too, so it can't be all bad can it? Of course not." S.Travaglia

 
Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
  Lien vers ce message 08 Avril 2008, 11:55
Donc il vaut mieux l'initialiser dans le constructeur, par contre par rapport à l'include du fichier de la classe 'mysql', il faut le faire directement dans le constructeur ?


 
Equipe de support
Avatar de B.Moncef
  • Age : 17 ans
  • Messages : 1856
  • Inscrit : 10 Septembre 2005
  Lien vers ce message 08 Avril 2008, 12:30
Oui tu inclus le fichier juste avant l'instanciation (si tu n'utilises pas __autoload).
 
Brasier
Avatar de Sékiltoyai
  • Age : 20 ans
  • Messages : 961
  • Inscrit : 19 Septembre 2006
  Lien vers ce message 08 Avril 2008, 12:55
Un include_once()
Mais le problème si tu fais cela, c'est que tu risqueras de créer plusieurs instances de ta classe mysql, et du coup, selon comment est implémentée ta classe, plusieurs connexions mysql, ce qui est très mauvais.
Il serait préférable de passer une instance de ta classe en argument du constructeur.


http://www.phpfrance.com : Support francophone PHP et Web.
 
Equipe de support
Avatar de B.Moncef
  • Age : 17 ans
  • Messages : 1856
  • Inscrit : 10 Septembre 2005
  Lien vers ce message 08 Avril 2008, 13:00
Ou d'utiliser un singleton ? (dites moi si je dis une connerie, chui pas très à l'aise avec les designs patterns)
 
Equipe des MODS
Avatar de Met@lnono
  • Age : 26 ans
  • Messages : 1170
  • Inscrit : 17 Octobre 2005
  Lien vers ce message 08 Avril 2008, 13:23
Ou d'utiliser un singleton ? (dites moi si je dis une connerie, chui pas très à l'aise avec les designs patterns)
Moi non plus donc je vais rester simple au début...

Merci pour les infos :D


 
Répondre


.