programmation d'un SGBD sans utilisé le SQL

Petit nouveau ! | 9 Messages

19 nov. 2008, 10:54

Bonjour a tous,


Je suis novice en php, j'ai un projet a faire mais je suis bloqué.
Le but de ce dernier est de coder un SGBD sans utiliser les requête SQL.
Concrètement, je dois lire dans un fichier des instructions et simuler une BdD
je peux utiliser les classes (POO).
Cependant Les libraire qui gerent les bdD ne sont pas autorisé.

Pouvez vous m'aider, je ne sais pas comment faire.

Eléphant du PHP | 353 Messages

19 nov. 2008, 11:00

Hum.
En fait ce que tu cherches c'est un système de base de données en mode fichier.
Un truc genre sql lite ?

Petit nouveau ! | 9 Messages

19 nov. 2008, 12:24

en quelques sorte, mais le problème ce que je ne peux pas utiliser les fonctions natif du sql je dois tout coder manuellement avec les fonctions du PHP.

Eléphanteau du PHP | 17 Messages

19 nov. 2008, 22:20

XML et DOM avec des classe php sympa pour gérer le tout peut etre ?

Petit nouveau ! | 9 Messages

19 nov. 2008, 23:07

est ce que tu peux m'aider pheniix,

ViPHP
ViPHP | 2287 Messages

20 nov. 2008, 02:51

Bonjour,

serait-il possible d'avoir l'énoncé exact du problème ? (Cela peut nous aider à te conseiller des possibilités).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 4674 Messages

20 nov. 2008, 15:51

Hey :),

Je pense qu'il parle d'un ORM (Object Relational Mapping). On manipule un modèle objet (généré à partir d'un schéma en général), et ce modèle nous génère des requêtes SQL tout seul. Il les envoie, les traite et propose des résultats qui se manipulent bien.

Il existe Propel qui fait ça assez bien. Sinon Hoa (depuis la version 0.4b) a une couche expérimentale ORM pour le paquetage Hoa_Database. Zend Framework propose aussi quelque chose de similaire, mais c'est assez verbeux … Symfony se base sur Propel. Et pour les autres, je ne sais pas :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Petit nouveau ! | 9 Messages

21 nov. 2008, 00:13

Voici ce que je dois faire
Vous devez reaaliser les point point suivant
Faire une applicqtion qui decrit un GBDR.
Ce GBDR devra charger une BdD et permettra au user d'effectuer les taches de base entendait par la consultation, l'ajouts et la suppression.
Les users pourront saisir certaines commande qui seront interprété par le gestionnaire.
Le format de fichier de la bdD est libre. Vous devez trouver le format de fichier le plus simple.
Les fonctions SQL native ne sont pas pas autoriser
Vous devez impérativement utiliser des fonctions PHP

Voila

ViPHP
ViPHP | 4674 Messages

21 nov. 2008, 00:52

Oui bah c'est une interface type CRUD (Create Read Update Delete) très classique, soit un exercice d'IUT si je ne me trompe … Cet exercice représente les premiers exercices que l'on réalise avec PHP. Un tour sur PHPDebutant.org ou le SiteduZero.com et tu trouveras ton bonheur …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Petit nouveau ! | 9 Messages

21 nov. 2008, 12:15

je suis desolé mais j'ai rien trouver.
autre information je dois developper en php CLI.

ViPHP
ViPHP | 2287 Messages

21 nov. 2008, 12:27

Tel que je le comprends, le but de l'exercice est que tu réalises une solution de stockage de données qui ne soit pas un SGBDR (certainement pour te faire mieux comprendre l'utilité et les problématiques du travail réalisé par ce dernier).

L'énoncé ne précise pas à quel point ton moteur doit être relationnel et ne semble pas imposer de gérer plusieurs tables, ce qui te facilite d'autant les choses (Une seule table à gérer est bien plus simple).

Une solution pourrait être le stockage dans un fichier texte (1 par table). Une ligne du fichier texte correspondant à un enregistrement, (mais il faudra choisir un caractère de fin d'enregistrement particulier pour éviter tout conflit avec une fin de ligne stockée dans un champ), et les champs y sont aussi séparés par un (autre) caractère spécial. L'intérêt du fichier texte est qu'il te permettra de vérifier facilement que tout se passe bien. La pire des choses qui puisse arriver serait une corruption des données suite à un bug dans le moteur, c'est sur ce point qu'il te faudra être vigilant.

Indice : Le format CSV, facilement manipulable en PHP avec les fonctions qui vont bien, peut correspondre à cette problématique.

Pour concevoir l'api pour manipuler cette "table", tu peux imiter les concepts existants pour les SGBD :

- 1/ Connexion (ouverture du fichier)
- 2/ Opération[s] : select(), insert(), delete() (à toi d'imaginer les paramètres qui vont bien)
- 3/ Déconnexion, parcequ'on est des gens propres :-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 9 Messages

21 nov. 2008, 14:17

merci
Modifié en dernier par richardlyonnais le 22 nov. 2008, 21:19, modifié 2 fois.

ViPHP
ViPHP | 3607 Messages

21 nov. 2008, 15:46

Bonjour,
si ça peut t'aider, j'avais dévellopé ça un jour:
http://www.phpfrance.com/forums/viewtop ... highlight=
après y a certainement toutes les erreurs du débutants regroupées, mais c'était fonctionnel ;)
Tu peux t'en inspirer ;)
Bonne chance

ViPHP
ViPHP | 3607 Messages

21 nov. 2008, 15:48

euh... y beaucoup de ligne fléchées dans ton exemple, que tu ne comprends pas...
Le mieux serait vraiment d'aller faire un tour sur des sites tutoriels comme dit précédemment, genre phpdebutant, siteduzero et consorts...
J'ajouterai aussi que la documentation est une mine d'information, une fois que tu as commencé à saisir les bases de php...

ViPHP
AB
ViPHP | 5818 Messages

21 nov. 2008, 16:01

merci calimero,

Un prof nous a donnée un debut d'indice, afin de nous guider

Est ce que tu pourrai m'exliquer les lignes flechés svp car je comprend rien
car je comprend pas tout
les regexp
function		FuncCreate($temp)
{
	preg_match('!.+(.+).+!', $temp, $tmp2); <-la
    $tmp = preg_replace('! *\(.+\)!', '', $temp);<-la
	$regexp = '!(C|c)(R|r)(E|e)(A|a)(T|t)(E|e) (T|t)(A|a)(B|b)(L|l)(E|e) *!';<-la
    $tmp = preg_replace($regexp, '', $tmp);<-la 
	$tmp2 = preg_replace('![A-Za-z \\n]+\(!', '', $temp);<-la 
	$tmp2 = preg_replace('!\)+!', '', $tmp2);<-la
	$tmp2 = preg_replace('!\\t+!', ' ', $tmp2);<-la
	$tmp2 = preg_replace('!\n !', '', $tmp2);<-la
	$arr = explode(',', $tmp2);<-la
	$avDBFile = $_SERVER['argv'][$_SERVER['argc'] - 1];

}

ps a quoi sert une fonction explode
Pour explode() il te suffit de cliquer sur la fonction et tu auras la définition du manuel !
Idem pour le reste mais il te faudra plus de temps pour analyser les expressions régulières.

EDIT si cette fonction est nécessaire dans la résolution de votre problème, je trouve cette façon de faire un peu strong pour une initiation...