Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[MYFRAMEWORK] - CLASS SQL


Information sur la source



Description

CakePHP, Symphony, tans de framework déjà éxsitant sur le web donne envie de les utiliser directement pour créer des sites internet.
Mais comment sont créé ces frameworks? Tel est la question que je me suis pausé il y a quelque temps.

Je pense qu'une des solutions de cette étude est de créer un pseudo-framework personnel qui pourrai alors mieux me faire comprendre leur fonctionnement.

La première étape de cette création est de créer un module pour la base de donnée. Le but : simplifier l'accès à la base sql tout en récupérant le plus facilement aux données.    

Voila donc le module que j'ai créé, il se compose de trois classes :
* Object : Une classe qui permette d'étendre les fonctions des autres classes
* SqlObject : la classe pour créer une connection a la base de donnée
* QueryObject : la classe pour gérer les requêtes SQL

Un exemple d'utilisation est donnée dans la source.

Nota : les fonctions forum_encode() et forum_decode() n'ont pas été implémenté, mais il exsiste assez d'exemple sur ce site pour les créer.
 

Source

  • $sqlquery = New SqlObject("localhost","root","");
  • $sqlquery->setdb("rezid-inscription");
  • $query = $sqlquery->query(SQL_WHERE,"rezid_user",array("id"=>123),array("nom"=>"MOI") ,array(SQL_AND => 1) ) ;
  • echo $query->name()."<br/>" ;
  • print_r($query->result) ;
  • echo "<br/>".$query->query;
  • echo "<br/>".$query->sql_error;
$sqlquery = New SqlObject("localhost","root","");
$sqlquery->setdb("rezid-inscription");
$query = $sqlquery->query(SQL_WHERE,"rezid_user",array("id"=>123),array("nom"=>"MOI") ,array(SQL_AND => 1) )  ;
echo $query->name()."<br/>" ;
print_r($query->result) ;
echo "<br/>".$query->query;
echo "<br/>".$query->sql_error;

Conclusion

Il reste encore quelque point a peaufiné, surtout l'accès au variable interne des classes.

Nota : Le code sources est assez bien documenté, il devrai suffire a comprendre le fonctionnement du module.

Nota 2 : une connaissance poussé du fonctionnement des classes est souhaitable pour comprendre ce code.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de stailer le 21/10/2007 18:34:05

En l'état, tu as développé une classe qui facilite l'accès à mysql. C'est tout. Ca n'a rien à voir le principe de fonctionnement d'un framework. Et ce n'est pas non plus une classe d'abstraction, puisque ta classe n'est pas indépendante de la base de données. On ne peut pas se connecter à une base SQLite ou SQL Server par exemple.

Enfin, tu dis que la 1ère étape de cette création est de créer un module pour la base de données... n'oubli pas que l'on peut avant tout utiliser un framework sans aucune base de données. Juste utiliser sa "méthode de travail", qui est le MVC généralement, ou l'approche "composant" (voir Prado par exemple).

signaler à un administrateur
Commentaire de malalam le 21/10/2007 19:19:36 administrateur CS

Hello,

oui, j'appuie ce que vient de dire Stailer (et je ne le répête donc pas).
Il y a des trucs que je ne pige pas, dans ton code :
- déjà, ta fonction file_put_contents_plus(). Si le but est d'écrire dans un fichier en utilisant la méthode d'ouverture en ajout, sache que file_put_contents() le fait aussi.
- je ne vois pas l'intérêt de ta classe Object. Si c'est juste pour avoir une classe capable de logger, exterieure à n'importe quelle autre classe, ok...mais elle est très incomplète. Elle devrait permettre des input et des outpout différents. Et donc, se servir d'abstractions au-dessus d'elle encore. ET ne pas s'appeler "Object" ;-)
- je n'ai jamais été fan des méthodes émulant une clause where, ou autre. Je préfère monter mes requêtes comme bon me semble. C'est souvent plus compliqué à utiliser...et puis, une requête complexe que l'on construit, on peut ainsi la tester dans un outil dédié à notre base de données, puis la copier coller dans le code, au moins. Là, c'est plus compliqué...
- tu aurais mieux fait de passer par des préparations de requêtes, et de travailler sur la façon dont les résultats sont retournés, ce qui me semble plus intéressant. Il n'y a qu'à voir ce que propose PDO : pas d'émulation de like, ou de where...mais plusieurs façons de récupérer un résultat, et plusieurs façons de préparer des requêtes.

signaler à un administrateur
Commentaire de nico1610 le 21/10/2007 23:29:23

Bon alors,
les classes données ici ne sont pas la totalité du framework, mais il me paraissait important de commencer par là.
Ensuite, pour le moment je n'ai pas appris a utiliser que MySql d'ou le faite que cette classe n'utilise que ca.

Pour la classe Object elle est encore incomplète, comme je te l'ai dit, c'est une ébauche.

Pour finir le framework que je bosse utilisera le principe MVC que je commence a bien comprendre.
Il faudra donc attendre les autres sources pour commencer a voir le framework. Ces classes n'étaient qu'un prélude.

signaler à un administrateur
Commentaire de stailer le 22/10/2007 01:25:53

bon pourquoi pas, mais je voudrais insister sur le fait qu'il est important que ton framework propose une abstraction à une base quelconque et non le figer à Mysql.

Ce que tu pourrais faire pour améliorer un peu tout ça, c'est de modifier ta classe en utilisant le driver générique PDO de Php5 . Ceci permettra au développeur de choisir un pilote (mysql, sql server etc...). Ca va te demander de revoir pas mal de choses et un peu de boulot, mais ça vaut le coup.

signaler à un administrateur
Commentaire de nico1610 le 22/10/2007 07:10:19

Ok, merci pour le conseil, je vais faire quelque recherche la dessus.

signaler à un administrateur
Commentaire de Yoteco le 22/10/2007 09:51:47

Autre conseil, prend un framework existant comme Zend Framework par exemple. Ce sera de toute façon plus complet qu'un framework maison... Et tu est entrain de réinventer la roue.

signaler à un administrateur
Commentaire de nico1610 le 22/10/2007 10:49:45

Comme dit plus haut, je veut "réinventer la roue" à titre purement éducatif & instructif, puis je dépose mes sources ici histoire d'en faire profiter les autres et surtout d'avoir leur conseil sur la façon dont j'ai fait la chose.

Mon but n'ai pas de réaliser un framework concurrentiel à Zend, CakePhp ou symphony, loin de moi cette idée !

signaler à un administrateur
Commentaire de Tortuegeniale le 22/10/2007 10:50:48

Pourquoi prendre un framework existant ? Ou est le plaisir ? Dans une boite encore, t'as pas le temps de tout refaire, mais si c'est perso ... En plus il a dit qu'il commence à bien comprendre MVC, donc faire soit même c'est le meilleur moyen d'apprendre et de consolider les aquis. Si personne ne réinventait la roue, tout le monde tournerai avec le même code, ce que je trouverai extrement chiant lol

signaler à un administrateur
Commentaire de marc1306 le 23/12/2007 17:48:40

Bonjour , je trouve cette idée êtres interessante pourquoi :
ayant également testé ZF, ou symfonie au bout d'un moment faut etre réaliste je n'utilise meme pas 1/1000 ieme du framework

je ne voulais pas non plus utiliser le system mvc qui est sensé simplifier le travail mais perso ( ce n'est que mon avis ) je trouve ça encore plus lourd !

là l'idée de faire des classes bien complète en s'inspirtant de ce qui est deja fait me plait

les cms , ou framworks sont trufé d'include qui include d'autres avec des variables de partout ...

suffirai de voir toutes les pages et calculs necessaire pour faire simplement une QUERY ,les frameworks sont qq même des usines .

là si qqn pouvais faire une belle classe pour mysql avec pdo , gestions des erreurs etc
je trouve ça au contraire excellent et prenneur

un site simple , propre efficace et rapide
que demander de plus ?

signaler à un administrateur
Commentaire de nico1610 le 15/09/2008 08:22:43

Salut marc1306,
En effet je me suis aperçu moi aussi de la compléxité et de l'usine a gaz que représentait ces frameworks.

Je ne te cache pas que depuis mon dernier post il y a un ans j'ai développé et paufiner un framework que je compte dévoiler à la communauté assez rapidement.

Ce framework à l'énorme avantage d'être bien plus simple et bien plus rapide que les autres. C'est un "lite" mais il me permet déjà de faire pas mal de chose. Puis son support est en francais :p :p

Je n'ai pas prévu de date de sortie mais je vais faire ca rapidement, il faut dire qu'une petite dixaine de développeur php l'utilise déjà pour éprouver ces défauts ! (dernière phase de test avant un sortie)

signaler à un administrateur
Commentaire de mckael le 17/10/2008 17:11:59

Hello,

Je compte tester ton "lite" framework nico, c'est vraiment très utile l'existence de ce genre d'outils pour projets adéquats.

Bon dev (y)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Convertir un nombre en expression literrale en PL/SQL [ par ThReM ] bonjour je cherche une source pour convertir un nombre en ce meme nombre mais ecris en toutes lettre (99 ==&gt; quatre vingt dix neuf) en langage PL/S Astuce du jour #1: Comment configurer une erreur de la base de donné MySql [ par SmallToad ] Quand vous avez de des erreurs de la base de donnée, êtes-vous déjà demander comment configurer le message d'erreur de la base de donnée MySql C'est Formulaire et SQL [ par Christophe46 ] Salut,J'espère trouver de l'aide sur ce forum,J'ai fait une base de données MySql, avec une table et des champs comme nom, prenom, telephone, adresse, Formulaire et SQL [ par Christophe46 ] Salut,J'espère trouver de l'aide sur ce forum,J'ai fait une base de données MySql, avec une table et des champs comme nom, prenom, telephone, adresse, LA taille d'une base de donnée sql [ par FleX ] ba en fait je suis sur Free et j'ai une base de donnée que je manipule en php.J'aimerai savoir comment c'est ty qu'on peut bien faire pour obtenir la Debuter une base SQL pour faire du PHP [ par bowen ] Bonjour je suis nouveau sur ce site et aussi a la prog !Bon je vous expliques mon probleme je veux creer un site sur le cinema asiatique et je vais do SQL [ par ProGMaN007 ] Salut,$dbserver = "localhost"; ok ça c ok$dbuser = je met quoi ?????? j utilise EasyPHP. Je met root ?$dbpass = mot de pas PROBLEME SIMPLE [ par g0belin ] sa me repond sa---------------------------ERREUR--------------------Réponse serveur SQL : You have an error in your SQL syntax near '@msn.com, 1234567 PROBLEME UPDATE [ par g0belin ] JE FAIS SA:$requete2= "UPDATE membre SET cle = $id WHERE LIKE '%$login%'";ET SA ME DIS SA:Réponse serveur SQL : You have an error in your SQL syntax n SQL Injection [ par thebigbang ] bonjour à tous,Je cherche des infos sur la méthode du SQL Injection.. Si vous vous y connaissez un peu, merci de m'aider, me renseigner ... me donner


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.