kangun
Messages postés22Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention11 avril 2010
-
30 avril 2006 à 12:18
kangun
Messages postés22Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention11 avril 2010
-
2 mai 2006 à 23:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
kangun
Messages postés22Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention11 avril 2010 2 mai 2006 à 23:10
oki, je me renseigne pour allez plus loin, merci beaucoup de votre aide... n'hésitez pas à en ajouter
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 2 mai 2006 à 20:28
Si c'est pour changer de base MySQL en MSSQL, il peut laisser le code SQL à l'air.
Si sa classe n'a pour utilité que l'utilisation d'une base de donnée, il peut laisser le code SQL à l'air.
Maintenant, faire passer en paramètre sa base de donnée au constructeur d'une autre classe relève d'une mauvaise manipulation objet :)
Utilise singleton et multiton qui sont beaucoup plus appropriés surtout pour une classe de DB.
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 1 mai 2006 à 15:46
Normalement, tu devrais faire une classe d'abstraction au niveau des données qui te permet de récuperer les informations depuis n'importe quelle source (MySQL, SQLlite, XML, txt, etc. ) et d'enregistrer les commentaires indépendament de la source de données que tu utilises.
En gros, sans trop passé de temps a t'expliquer :
en simplifiant le système, je vais utiliser le système avec MySQL
$db = new db('mysql', 'db_host', 'db_user', 'db_pass' ); // je créer un objet de type mysql
$comment = new comment('table', 'id_table', 'foreign_id', $db) ; // tu passes tes parametres + ta base de données
$listComment = $comment->getAllComment() // retourne un tableau d'objet comment
foreach ( $listComment as $comment ){
// traitement de l'affichage de tes commentaires
echo ' [mailto:'.$comment->email.' ''.$comment->name.']
<quote>'.$comment->comment.'</quote>
';
}
comme ca si ta classe db est correctement formée, si tu changes de système de BDD, tu n'as qu'a changer l'appel de la premiere ligne.
$db = new db('mssql', 'db_autre_host', 'db_autre_user', 'db_autre_pass' ); // je créer un objet de type mssql
et ainsi de suite.
Je trouve cela beaucoup plus portable et donc plus dans l'esprit que je me fais des classes ( mais peut etre ai-je tord)
Tu dis :
"donc il va falloir que fasse ressortir les données comme des variables"
C'est normalement déjà fait car ta classe à des propriétés qui sont propres à chaque instance de ta classe.
Je t'ai mis dans le foreach un exemple de code qui te permet d'acceder aux différentes propriétés de ta classe.
kangun
Messages postés22Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention11 avril 2010 1 mai 2006 à 14:33
oki doki
donc il va falloir que fasse ressortir les données comme des variables
donc après on les place ou on veut (si j'ai bien compris ton raisonnement)
de même pour les accès à la base de donnée, il faudrait donc que la personne renseigne les infos de connexion directement dans sa page à l'appel de la classe, c'est ca???
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 1 mai 2006 à 13:54
Bonjour,
normalement tu devrais séparer ta couche d'acces aux données de ta classe comment.
i.e. que ta classe comment de doit pas savoir comment sont récuperer les informations. Dans ton système, si on utilise pas MySQL, on doit réécrire ta classe et c'est je pense pas le but.
Sinon, tu gères aussi la présentation des données ce qui n'est pas forcement correct.
Je te conseille donc de lire un peu de doc sur la POO car ta classe est conceptuellement incorrecte.
Sur ce, je n'ai pas regardé plus que ca le code donc je ne peux pas t'en dire plus.
Bon courage
kangun
Messages postés22Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention11 avril 2010 30 avril 2006 à 12:18
j'attends vos commentaires, n'hésiter pas à me dire tous ce que vous pensez de ce code..;-) merci d'avance
2 mai 2006 à 23:10
2 mai 2006 à 20:28
Si sa classe n'a pour utilité que l'utilisation d'une base de donnée, il peut laisser le code SQL à l'air.
Maintenant, faire passer en paramètre sa base de donnée au constructeur d'une autre classe relève d'une mauvaise manipulation objet :)
Utilise singleton et multiton qui sont beaucoup plus appropriés surtout pour une classe de DB.
1 mai 2006 à 15:46
En gros, sans trop passé de temps a t'expliquer :
en simplifiant le système, je vais utiliser le système avec MySQL
$db = new db('mysql', 'db_host', 'db_user', 'db_pass' ); // je créer un objet de type mysql
$comment = new comment('table', 'id_table', 'foreign_id', $db) ; // tu passes tes parametres + ta base de données
$listComment = $comment->getAllComment() // retourne un tableau d'objet comment
foreach ( $listComment as $comment ){
// traitement de l'affichage de tes commentaires
echo ' [mailto:'.$comment->email.' ''.$comment->name.']
<quote>'.$comment->comment.'</quote>
';
}
comme ca si ta classe db est correctement formée, si tu changes de système de BDD, tu n'as qu'a changer l'appel de la premiere ligne.
$db = new db('mssql', 'db_autre_host', 'db_autre_user', 'db_autre_pass' ); // je créer un objet de type mssql
et ainsi de suite.
Je trouve cela beaucoup plus portable et donc plus dans l'esprit que je me fais des classes ( mais peut etre ai-je tord)
Tu dis :
"donc il va falloir que fasse ressortir les données comme des variables"
C'est normalement déjà fait car ta classe à des propriétés qui sont propres à chaque instance de ta classe.
Je t'ai mis dans le foreach un exemple de code qui te permet d'acceder aux différentes propriétés de ta classe.
1 mai 2006 à 14:33
donc il va falloir que fasse ressortir les données comme des variables
donc après on les place ou on veut (si j'ai bien compris ton raisonnement)
de même pour les accès à la base de donnée, il faudrait donc que la personne renseigne les infos de connexion directement dans sa page à l'appel de la classe, c'est ca???
1 mai 2006 à 13:54
normalement tu devrais séparer ta couche d'acces aux données de ta classe comment.
i.e. que ta classe comment de doit pas savoir comment sont récuperer les informations. Dans ton système, si on utilise pas MySQL, on doit réécrire ta classe et c'est je pense pas le but.
Sinon, tu gères aussi la présentation des données ce qui n'est pas forcement correct.
Je te conseille donc de lire un peu de doc sur la POO car ta classe est conceptuellement incorrecte.
Sur ce, je n'ai pas regardé plus que ca le code donc je ne peux pas t'en dire plus.
Bon courage
30 avril 2006 à 12:18