docteurflasbios
Messages postés3Date d'inscriptionjeudi 22 octobre 2009StatutMembreDernière intervention 6 janvier 2011 6 janv. 2011 à 01:06
Excusez d'avance mon "àl'ouesteté" ....
mais voilà, j'arrive 4 ans après la guerre,
et découvre que des montagnes de talents se sont bien emmerdés à fabriquer des classes fabuleuses
(tous mes compliments) et moi, qui n'ai encore rien inventé utilise un objet tout prêt servi chaud...
c'est peut être con, comme questions, mais :
Que pensez-vous de PDO ? Suis-je complètement Hors-sujet ?
Aviez-vous déjà posté toutes ces sources avant que PDO existe ?
Qu'utiliseriez vous pour des fonctionnalités supplémentaires cette année ?
kendrak
Messages postés4Date d'inscriptionsamedi 11 septembre 2004StatutMembreDernière intervention14 août 2009 5 mars 2007 à 13:28
Salut !
Merci pour cette classe bien pratique ^^
par contre j'ai un soucis la... en local c'est chouette ca marche mais une fois chez free non.
Si je tente une connexion classique avec mysql_connect() ca marche mais pas avec cette classe.... je comprends pas et ca me pète le crane depuis hier....
quelqu'un a une idée ?
Merci de votre aide
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 janv. 2007 à 15:02
Certes lol, mais bon quand on bosse en générique sur plusieurs versions de php... :-(
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 16 janv. 2007 à 13:51
Bah vi, c'est logique :p
C'est parce qu'on a même pas lu le changelog, sinon on s'en serait appercu :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 janv. 2007 à 09:36
Bah si on veut...faut bien tester sur quelquechose, moi je teste une ressource mssql, ça m'a paru logique. Nan? ;-) Pas d'ma faute si ils changent les retours au fil de versions de php lol
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 15 janv. 2007 à 21:18
Ca, c'est dla mauvaise gestion d'erreur :p
Na ! :D
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 15 janv. 2007 à 19:25
Ca t'fait rire ;-) ? Moi po, j'ai passé 2 heures à essayer de comprendre pourquoi ça ne marchait pas sur mon serveur, j'me souviens... :-(
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 15 janv. 2007 à 18:41
Ohh mon pauvre :p
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 15 janv. 2007 à 15:42
Il faut modifier ces vérifications en fonction de ce que renvoie mysqli (en l'occurrence, un objet...)
C'est pénible, mais malheureusement les retours des fonctions/méthodes db sous PHP ne sont pas franchement normalisés.
Je réécrirai sous peu une classe d'abstraction DB avec quelques corrections à ce niveau-là notamment (et pas mal d'ajouts).
Par exemple, sur mon pc en local (PHP 5.2), mssql retourne des ressources de type mssql (mssql link, mssql result etc...).
Sur mon serveur en prod (PHP 5.014), les fonctions mssql retournent des identifiants de ressource (des entiers)...
Pénible je vous dis ;-)
dubaddxx
Messages postés6Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention14 décembre 2006 15 janv. 2007 à 15:19
Mouais, j'ai essayé ça, mais il semblerait que le retour de "is_resource ($qry)", dans la classe database, soit
toujours à FALSE.
Du coup je me vois tout le temps afficher le message d'erreur comme quoi il n'y a pas de resources valides.
Alors qu'avec mysql à la place de mysqli, y'a pas ce pb ...
une idée ?
Merci !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 15 janv. 2007 à 12:28
Il te suffit de créer la classe mysqli, en la calquant sur les autres, et éventuellement ajouter les méthodes supplémentaires dont tu aurais besoin.
dubaddxx
Messages postés6Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention14 décembre 2006 15 janv. 2007 à 12:11
salut.
Cette classe est vraiment pratique et bien pensée, merci en tout cas les gars.
Par contre, j'ai lu que si on veut exécuter des procédures stockées, il faut utiliser un objet de type MYSQLI.
J'imagine dans ce cas qu'il n'est plus possible de l'utiliser tel quelle et qu'il faudrait la revoir ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 mars 2006 à 12:04
Hello,
assez d'accord, à vrai dire.
Mais j'ai une raison...justement : Le but était en effet d'avoir des classes "typées" les plus simples possible.
Et justement, de ne pas avoir à s'emmerder avec la gestion des erreurs etc...
Sauf qu'évidemment, pour que ce soit le cas, il faudrait que je code toutes les bases possibles, sinon, le mec voulant en ajouter une sera effectivement obligé de modifier aussi la classe primitive.
De toutes façons, il y a pas mal de problèmes liés à cette classe, je dois la modifier, et c'est un bon moment pour le faire je crois :-) vais profiter de ma pause déjeuner pour m'y remettre!
Merci, ceci dit :-)
cs_NoTsu
Messages postés9Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention12 mai 2006 31 mars 2006 à 11:58
Salut,
D'abord bavo pour la classe, elle est vraiment très intéressante pour régler les problèmes d'abstractions de bases de données.
Par contre un truc qui m'a suprit c'est que la gestion des erreurs est gérée dans ta classe primitive ( database ) , et c'est içi que tu fais des distinctions sur le type de base qui est utilisée. Ce qui me semble aller contre l'intéret de la classe, qui est de d'avoir un code commun pour la primitive, et d'avoir un code distinct ensuite sur chacune des classes dérivées.Ainsi à chaque nouveau type de base qu'on souhaites rajouter on a juste à créer un fichier supplémentaire, et pas à aller trippoter le code de database.cls.php.
J'ai pas comprit pourquoi tu avais fait de cette manière.
Sinon le reste c'est vraiment du tout bon, encore bravo.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 janv. 2006 à 17:40
T'as raison, j'ai modifié.
J'ai d'autres trucs à ajouter, et de petites erreurs à corriger.
Curieusement...j'utilisais cette classe pour un petit projet, et j'avais pour habitude d'ouvrir ma connexion avant le query () et de la fermer juste après (et donc, avec tout fetch_...). Cela fonctionnait...et cela ne fonctionne plus.
Lol.
Je ne sais pas pourquoi, c'est ce à quoi je m'attèle là, en l'occurence.
Sur mes projets, les perfs sont un poil meilleures, oui.
J'ai récupéré la structure basique de ta classe, avec les private_ parce que je trouvais ça explicite :-)
Après bon, c'est une classe de bdd...lol. On peut pas réinventer la poudre.
J'ai fait ma propre version du bench, du log des erreurs, et surtout, surtout, ce qui m'a paru intéressant était de proposer une version mssql, ce qui est plutôt rare par ici.
Je n'ai pas implémenté les unbuffered queries, parce que mssql ne les gère pas. Du coup je ne les utilise pas ;-)
Mais je vais implémenter ça dès que j'ai un peu de temps libre, et tout le reste au passage, lol. (toutes les fonctions mysql, mssql, de php).
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 20 janv. 2006 à 17:08
Ah c'est bien ce que je pensais, elle me disait plus ou moins quelque chose :)
Content de savoir qu'on peut se servir de ce que j'ai fait pour un tas de choses ! :D
Par contre, petite remarque :
"# if (!empty ($options)) {
# foreach ($options as $clef => $opt) {
# if (array_key_exists ($clef, $this -> options)) {
# $this -> options[$clef] = $opt;
# }
# }
# }"
$opt est forcément TRUE ou false. Hors, quelqu'un qui ne le sait pas forcément (ou un oublis ou autre) peut se tromper.
Il faudrait rajouter (ou plutot modifier) :
if ( array_key_exists($clef, $this->options) && is_bool($opt) ) {
Au moins tu es sur du type :)
C'est une version allégée de la mienne donc j'imagine que les perfs sont un poil meilleur :p
6 janv. 2011 à 01:06
mais voilà, j'arrive 4 ans après la guerre,
et découvre que des montagnes de talents se sont bien emmerdés à fabriquer des classes fabuleuses
(tous mes compliments) et moi, qui n'ai encore rien inventé utilise un objet tout prêt servi chaud...
c'est peut être con, comme questions, mais :
Que pensez-vous de PDO ? Suis-je complètement Hors-sujet ?
Aviez-vous déjà posté toutes ces sources avant que PDO existe ?
Qu'utiliseriez vous pour des fonctionnalités supplémentaires cette année ?
5 mars 2007 à 13:28
Merci pour cette classe bien pratique ^^
par contre j'ai un soucis la... en local c'est chouette ca marche mais une fois chez free non.
Si je tente une connexion classique avec mysql_connect() ca marche mais pas avec cette classe.... je comprends pas et ca me pète le crane depuis hier....
quelqu'un a une idée ?
Merci de votre aide
16 janv. 2007 à 15:02
16 janv. 2007 à 13:51
C'est parce qu'on a même pas lu le changelog, sinon on s'en serait appercu :)
16 janv. 2007 à 09:36
15 janv. 2007 à 21:18
Na ! :D
15 janv. 2007 à 19:25
15 janv. 2007 à 18:41
15 janv. 2007 à 15:42
C'est pénible, mais malheureusement les retours des fonctions/méthodes db sous PHP ne sont pas franchement normalisés.
Je réécrirai sous peu une classe d'abstraction DB avec quelques corrections à ce niveau-là notamment (et pas mal d'ajouts).
Par exemple, sur mon pc en local (PHP 5.2), mssql retourne des ressources de type mssql (mssql link, mssql result etc...).
Sur mon serveur en prod (PHP 5.014), les fonctions mssql retournent des identifiants de ressource (des entiers)...
Pénible je vous dis ;-)
15 janv. 2007 à 15:19
toujours à FALSE.
Du coup je me vois tout le temps afficher le message d'erreur comme quoi il n'y a pas de resources valides.
Alors qu'avec mysql à la place de mysqli, y'a pas ce pb ...
une idée ?
Merci !
15 janv. 2007 à 12:28
15 janv. 2007 à 12:11
Cette classe est vraiment pratique et bien pensée, merci en tout cas les gars.
Par contre, j'ai lu que si on veut exécuter des procédures stockées, il faut utiliser un objet de type MYSQLI.
J'imagine dans ce cas qu'il n'est plus possible de l'utiliser tel quelle et qu'il faudrait la revoir ?
31 mars 2006 à 12:04
assez d'accord, à vrai dire.
Mais j'ai une raison...justement : Le but était en effet d'avoir des classes "typées" les plus simples possible.
Et justement, de ne pas avoir à s'emmerder avec la gestion des erreurs etc...
Sauf qu'évidemment, pour que ce soit le cas, il faudrait que je code toutes les bases possibles, sinon, le mec voulant en ajouter une sera effectivement obligé de modifier aussi la classe primitive.
De toutes façons, il y a pas mal de problèmes liés à cette classe, je dois la modifier, et c'est un bon moment pour le faire je crois :-) vais profiter de ma pause déjeuner pour m'y remettre!
Merci, ceci dit :-)
31 mars 2006 à 11:58
D'abord bavo pour la classe, elle est vraiment très intéressante pour régler les problèmes d'abstractions de bases de données.
Par contre un truc qui m'a suprit c'est que la gestion des erreurs est gérée dans ta classe primitive ( database ) , et c'est içi que tu fais des distinctions sur le type de base qui est utilisée. Ce qui me semble aller contre l'intéret de la classe, qui est de d'avoir un code commun pour la primitive, et d'avoir un code distinct ensuite sur chacune des classes dérivées.Ainsi à chaque nouveau type de base qu'on souhaites rajouter on a juste à créer un fichier supplémentaire, et pas à aller trippoter le code de database.cls.php.
J'ai pas comprit pourquoi tu avais fait de cette manière.
Sinon le reste c'est vraiment du tout bon, encore bravo.
20 janv. 2006 à 17:40
J'ai d'autres trucs à ajouter, et de petites erreurs à corriger.
Curieusement...j'utilisais cette classe pour un petit projet, et j'avais pour habitude d'ouvrir ma connexion avant le query () et de la fermer juste après (et donc, avec tout fetch_...). Cela fonctionnait...et cela ne fonctionne plus.
Lol.
Je ne sais pas pourquoi, c'est ce à quoi je m'attèle là, en l'occurence.
Sur mes projets, les perfs sont un poil meilleures, oui.
J'ai récupéré la structure basique de ta classe, avec les private_ parce que je trouvais ça explicite :-)
Après bon, c'est une classe de bdd...lol. On peut pas réinventer la poudre.
J'ai fait ma propre version du bench, du log des erreurs, et surtout, surtout, ce qui m'a paru intéressant était de proposer une version mssql, ce qui est plutôt rare par ici.
Je n'ai pas implémenté les unbuffered queries, parce que mssql ne les gère pas. Du coup je ne les utilise pas ;-)
Mais je vais implémenter ça dès que j'ai un peu de temps libre, et tout le reste au passage, lol. (toutes les fonctions mysql, mssql, de php).
20 janv. 2006 à 17:08
Content de savoir qu'on peut se servir de ce que j'ai fait pour un tas de choses ! :D
Par contre, petite remarque :
"# if (!empty ($options)) {
# foreach ($options as $clef => $opt) {
# if (array_key_exists ($clef, $this -> options)) {
# $this -> options[$clef] = $opt;
# }
# }
# }"
$opt est forcément TRUE ou false. Hors, quelqu'un qui ne le sait pas forcément (ou un oublis ou autre) peut se tromper.
Il faudrait rajouter (ou plutot modifier) :
if ( array_key_exists($clef, $this->options) && is_bool($opt) ) {
Au moins tu es sur du type :)
C'est une version allégée de la mienne donc j'imagine que les perfs sont un poil meilleur :p