begin process at 2013 05 22 06:46:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > PDOBLOG - EXEMPLE DE BLOG MAPPÉ AVEC PDOMAP

PDOBLOG - EXEMPLE DE BLOG MAPPÉ AVEC PDOMAP


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :Mapping, ORM, pdoMap, pdoBlog Niveau :Débutant Date de création :21/04/2008 Vu / téléchargé :4 617 / 203

Auteur : aKheNathOn

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
L'intérêt de ce projet n'est pas le blog en soi mais l'exemple d'utilisation de la librairie pdoMap.

Cette librairie sous forme de classes en PHP5 vous permet de mapper une base de données à travers un fichier DataSet XSD (cf DotNET et Visual Studio). Au delà du mapping de la structure des tables, vous pouvez y stocker des requêtes avec des paramètres et définir les jointures car cette librairie supporte le mode ORM.

Du coup l'exemple de blog vous permettra de constater l'ensemble des cas de figures jointures, requêtes et accès aux données en I/O.

Vous vous dites une librairie de mapping de plus ? Prenez SqlMap ou une foule d'autres. Chacune avec sa structure XML divergente - et au pire il faut écrire manuellement le fichier.

Avec pdoMap vous prenez le standard de définition de Visual Studio, vous restez dans un environnement de drag & drop et query builder - puis utilisez en toute transparence des objets.

Source

  • <?php
  • // **** EXEMPLE DU FICHIER INDEX DU BLOG *****
  • require_once('includes/autoload.php');
  • // INITIALIZE PAGE
  • $page = new page('HOME PAGE');
  • $blog = new myBlog();
  • // INITIALIZE DATA
  • $posts = $blog->posts->RecentPosts(5);
  • // SET PAGE CONTENT's
  • if (sizeof($posts) > 0) {
  • foreach($posts as $post) $page->writeLine('main', $post);
  • } else {
  • $page->writeLine('main', 'Admin should write the first article');
  • }
  • // FLUSH PAGE
  • echo $page;
  • ?>
  • <?php
  • // UNE PARTIE DE LA PAGE WRITE POUR ECRIRE UN ARTICLE
  • $page = new page('WRITE A NEW ARTICLE');
  • $blog = new myBlog();
  • $post = $blog->posts->CreateNew();
  • // CANCEL ACTION
  • if (isset($_POST['cancel'])) {
  • header('Location: '.$_GET['from']);
  • die();
  • }
  • if (isset($_POST['update']) || isset($_POST['preview'])) {
  • $post->title->set($_POST['title']);
  • $post->category->set($_POST['category']);
  • $post->resume->set($_POST['wyzzresume']);
  • $post->content->set($_POST['content']);
  • $post->author->set($_SESSION['user']->getId());
  • if (isset($_POST['preview'])) {
  • $page->writeLine('main', $post->ShowPage());
  • }
  • if (isset($_POST['update'])) {
  • $post->insert_date->setNOW();
  • $post->Insert();
  • header('Location: '.$_GET['from']);
  • die();
  • }
  • }
  • ?>
<?php

	// **** EXEMPLE DU FICHIER INDEX DU BLOG *****
	require_once('includes/autoload.php');	

	// INITIALIZE PAGE
	$page = new page('HOME PAGE');
	$blog = new myBlog();
	
	// INITIALIZE DATA
	$posts = $blog->posts->RecentPosts(5);

	// SET PAGE CONTENT's
	if (sizeof($posts) > 0) {
		foreach($posts as $post) $page->writeLine('main', $post);		
	} else {
		$page->writeLine('main', 'Admin should write the first article');
	}	

	// FLUSH PAGE
	echo $page;
?>



<?php

	// UNE PARTIE DE LA PAGE WRITE POUR ECRIRE UN ARTICLE
	$page = new page('WRITE A NEW ARTICLE');
	$blog = new myBlog();
	$post = $blog->posts->CreateNew();

	// CANCEL ACTION
	if (isset($_POST['cancel'])) {
		header('Location: '.$_GET['from']);
		die();
	}		
	if (isset($_POST['update']) || isset($_POST['preview'])) {
		$post->title->set($_POST['title']);
		$post->category->set($_POST['category']);
		$post->resume->set($_POST['wyzzresume']);
		$post->content->set($_POST['content']);
		$post->author->set($_SESSION['user']->getId());
		if (isset($_POST['preview'])) {
			$page->writeLine('main', $post->ShowPage());
		}		
		if (isset($_POST['update'])) {
			$post->insert_date->setNOW();
			$post->Insert();
			header('Location: '.$_GET['from']);
			die();
		}
	}


?>

 Conclusion

Vous pouvez télécharger la dernière version de la librairie seule à cette adresse :

http://pdomap.webframe.fr/

Pour voir des screen cast rendez-vous à cette adresse :
http://pdomap.webframe.fr/demo.php

En cas d'erreur ou de bug, merci de la signaler à cette adresse :
https://sourceforge.net/tracker/?atid=1060154&gr oup_id=224043&func=browse

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

CLASSE WIKILOC
Source avec Zip OBSERVER PATTERN ORIENTÉ DÉVELOPPEMENT ÉVÉNEMENTIEL DÉCLARAT...
Source avec Zip SERVICE DESIGN PATTERN / CHARGEMENT DYNAMIQUE DE SERVICES D'...
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI...

 Sources de la même categorie

Source avec Zip GESTIONNAIRE DE SAUVEGARDE D'UNE BASE DE DONNÉES MYSQL par aladec2007
Source avec Zip Source avec une capture RÉINDEXATION DE TABLE par aventurier19
Source avec Zip LIVRE D'OR FONCTIONNEL par floflode69
Source avec Zip FORUM TRES SIMPLE A INSTALLER par floflode69
Source avec Zip Source avec une capture CRÉATION D'UNE LISTE DEROULANTE CONTINENT PAYS GOUVERNORAT V... par proraf

 Sources en rapport avec celle ci

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI... par aKheNathOn
Source avec Zip [PHP5] ORMAPPER 4 CRUD par Teclis01

Commentaires et avis

Commentaire de pj27 le 21/04/2008 16:53:59 9/10

C'est juste énormément bien codé, le principe est vraiment bon, le code est clair et c'est personnellement le type de script que je recherchais.

Bon boulot ;)
9/10

Commentaire de malalam le 21/04/2008 18:06:55 administrateur CS

Hello aKheNathOn,

c'est de toute évidence un gros boulot. Je n'ai pas regardé assez le code pour m'aventurer à faire des critiques. En fait...j'ai regardé. Mais avant de faire des critiques sur le code en lui-même (qui est de toute manière très bien codé globalement, même si à 1ère vue, je ne suis pas d'accord avec tous tes choix), j'aimerais que tu nous parle un peu de DataSet XSD, ses avantages selon toi, son fonctionnement etc. Pas que j'ai la flemme d'aller voir (je suis en train là, je ne connaissais pas), mais parce que je pense qu'une discussion à ce sujet serait intéressante.
En tous cas, lier certains avantages de .net à PHP est une idée intéressante et quasiment révolutionnaire (dans le sens : revolution amigos!!), quand on sait que généralement, les pro php sont plutôt anti Microsoft (je ne veux pas débuter un troll : j'utilise mssql comme serveur de DB...).
En plus, c'est du xml, et xml, c'est bien! Et puissant, et pratique, et portable...bref, une des grandes inventions du développement informatique depuis que ce dernier est né. Ca n'engage que moi, hein.



Commentaire de aKheNathOn le 21/04/2008 18:37:03 administrateur CS

Le choix du XSD s'imposait à moi comme une révélation (lol). Au delà du fait que kro$oft l'utilise comme standard - le XSD au contraire d'un XML structuré selon l'environement à l'avantage d'être fait pour déclarer des structures - tout le monde connait la déclaration d'un XSD pour une structure XML afin d'en garantir la conformité. Un peu moins connu est le XSD utilisé pour définir un WebService - toujours déclaration de structure des données (c'est pas du XSD directement mais ça y descend).

Notez que le XSD est une norme W3C et non pas Microsoft - du coup je trouve cela un peu gros de faire un format de fichier différent à chaque Framework.

L'avantage c'est qu'une fois votre appli faite en php, vous avez déjà la base nécessaire (au niveau requettage surtout) pour la porter en .NET - et imaginons que par la suite étant un standard Java pourrais par exemple le prendre en charge.

Sinon, pourquoi partir sur Visual Studio - ben je travaille en DOTNET et en PHP à la fois alors pour moi c'est plus simple. Le notepad c'est un peu démodé et dreamweaver pas vraiment productif :

Pour vous en convaincre : http://pdomap.webframe.fr/demo.php?p=vsmap

Parcontre je suis POUR l'OpenSource et l'utilisation GRATUITE - du coup je planche sur une solution permettant d'éviter de passer par Visual Studio pour générer le XSD (Plugin d'export XSD pour DBDesigner)

-----------------

Sans trop changer de sujet, si vous avez un peu le temps d'utiliser ma classe, générer une ou plusieurs requettes - je manque cruellement de beta testeurs.

Si vous avez des commentaires, demandes d'améliorations ou bugs n'hésitez pas à m'en faire part (même concernant la structure des classes).

Utilisez cette adresse pour déclarez vos bugs ou commentaires :
http://sourceforge.net/projects/pdomap/
(ça m'aidera dans l'organisation du projet)

Commentaire de stailer le 21/04/2008 22:47:05

Et ben ça fait bien plaisir... enfin un mec avec qui je suis 100% d'accord: le mix des technologies !
moi je suis pro PHP, pro Dotnet, pro Flex, pro AIR et pro JAVA (même si j'en fais plus trop) et bien entendu faire collaborer ensemble ces technos dans un même développement d'application est pour moi carrément logique !

j'ai fait également quelques trucs (entre autre un début de "visual studio" pour créer du php gtk) , malheureusement je n'ai jamais été jusqu'au bout, et je suis très heureux de voir que je ne suis pas le seul à faire l'apprenti sorcier : )))

Commentaire de maxxou56 le 24/04/2008 00:16:39

Ton code a vraiment a l'air super
Je suis très interessé par ce genre de code enfin même si cela est bien trop compliqué pour moi
J'aime bien voir les méthodes utilisées
Lorsque je teste le code sur easyphp2.0
je reçois ce message d'erreur, pouvez vous m'aidez:

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\Program Files\EasyPHP 2.0b1\www\pdoBlog\pdomap\connection.class.php:33 Stack trace: #0 C:\Program Files\EasyPHP 2.0b1\www\pdoBlog\pdomap\connection.class.php(33): PDO->__construct('mysql:host=loca...', 'root', '') #1 C:\Program Files\EasyPHP 2.0b1\www\pdoBlog\pdomap\connection.class.php(47): pdoMap_Connection->__construct('mysql:host=loca...', 'root', '') #2 C:\Program Files\EasyPHP 2.0b1\www\pdoBlog\includes\autoload.php(13): pdoMap_Connection::add('pdoblog', 'mysql:host=loca...', 'root', '') #3 C:\Program Files\EasyPHP 2.0b1\www\pdoBlog\index.php(3): require_once('C:\Program File...') #4 {main} thrown in C:\Program Files\EasyPHP 2.0b1\www\pdoBlog\pdomap\connection.class.php on line 33

Merci d'avance

Commentaire de aKheNathOn le 24/04/2008 09:02:50 administrateur CS

Sous easyphp il y a quelques problèmes avec pdo. Dans ce tuto vous verrez comment configurer easy php :

http://pdomap.webframe.fr/demo.php?p=vs2005

----
Ton message d'erreur dit tu as bien PDO d'actif mais pas PDO_MYSQL du coup le driver mysql ne peut être chargé. Pour voir comment le configurer et d'autres astuces regardes les tutos.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Quelle bibliothèque utilisée pour le mapping objet relationnel ? [ par marik7335 ] Je cherche une bibliothèque permettant l'utilisation du mapping objet relationnel. Si vous en connaissez ou si vous avez une piste pouvant m'éclairez Qui peut poster un tutorial sur le mapping avec oajax ....etc [ par obcstaff ] Voila, je cherche a faire un jeux online, un utilisateur peut se balader sur une carte (l'utilisateur est repr&#233;sent&#233; par un point, mais il n Recherche info sur mapping xml vers postgresql [ par 3xodius55 ] Salut,Actuellement en stage je dois mapper un fichier xml vers une base postgresql ; malheureusement je ne trouve pas de doc sur le sujet à part en j Mapping MySQL [ par aKheNathOn ] Bonjour,Je recherche une solution comme SQLMap de Java mais pour du PHP afin de mapper la base de données. Je recherche également une couche ADO à uti Doctrine 2.1.0 : Reverse engineering [ par Sniperman113 ] Bonjour, Je viens solliciter votre aide car après avoir parcouru de nombreux forums/tutos, je n'arrive toujours pas à générer les models depuis ma ba Concept mapping [ par chapy21 ] Dans une base de données, je possède des noms de bâtiments ainsi que des noms de liaison fibre optique. Les liaisons fibre optique ont pour extrémités


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales