jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

| Page Précédente 1 2 | |||
| Pseudo | Commentaire | ||
|---|---|---|---|
| Page Précédente 1 2 | |||
Nami Doc
|
# Posté le 21/12/2009 à 19:11:55 | ||
|
Lamaer taler dansk
|
Ah ! (Bon sinon j'ai fini le plan :p)
|
||
Mimos@
|
# Posté le 23/12/2009 à 01:13:48 | ||
![]()
|
Un petit PDF pas mal sur Doctrine. Il est pour la version 1.1 http://www.doctrine-project.org/Doctrine-Cheat-Sheet.pdf Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro; RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7; DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3; Carte Graphique: Sapphire HD4890 Vapor-X 1Go; Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520. |
||
Nami Doc
|
# Posté le 24/12/2009 à 16:37:00 | ||
|
Lamaer taler dansk
|
'Faut juste changer les Doctrine => Doctrine_Core (pour le plus gros du travail). Je parle régulièrement avec Jonathan Wage (le créateur, qui bosse actuellement sur Sympal, sur lequel je l'aide), et, bon ... 'Faudra attendre la v2 pour un nouveau CS =/ PS: Tu comptes en faire un big-tuto ou je continue mon big tuto ?
|
||
Mimos@
|
# Posté le 24/12/2009 à 18:11:01 | ||
![]()
|
Moi ? Si oui, non aucun tuto en vu, je peux aider si vraiment mais sans plus. Je n'ai pas vraiment de temps en se moment. Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro; RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7; DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3; Carte Graphique: Sapphire HD4890 Vapor-X 1Go; Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520. |
||
Nami Doc
|
# Posté le 24/12/2009 à 21:21:45 | ||
|
Lamaer taler dansk
|
Non non, je parle à Christophetd vu que ce tuto est vraiment un mini-tuto :p. Si je continue, je maitrîse à peut près toutes les fonctionnalitées de Doctrine mais si tu veux apporter ta pierre à l'édifice sur un chapitre qui te tiens à coeur, pas de problèmes
|
||
Mimos@
|
# Posté le 25/12/2009 à 16:49:19 | ||
![]()
|
Non je ne maitrise pas suffisamment pour expliquer l'utilisation. Disons que je ne connais que les fonctionnalités qui me servent. Mais je serais très intéressé par ton big-tuto, puisqu'il n'y a pas de doc en français et l'anglais me rebut un peu. Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro; RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7; DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3; Carte Graphique: Sapphire HD4890 Vapor-X 1Go; Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520. |
||
MrKooky
|
# Posté le 25/12/2009 à 19:54:37 | ||
10h![]()
Ville : Paris |
Première lecture: viite, le cachet d'aspirine! 2nde lecture: Ca passe beaucoup mieux. En tous cas, merci pour ce tuto! Mon Espace Personnel - Mes Projets - Mon Blog (v2) Visitez le site de MétamorphWorld, un jeu pour le concours Innov'Game 2012 Manuel des Zéros - SdZ v1 - Hébergeur gratuit - Régie publicitaire |
||
QxOrm
|
# Posté le 15/05/2010 à 12:35:47 | ||
![]()
|
Si vous recherchez un équivalent C++ : http://www.siteduzero.com/forum-83-513 [...] ce-qxorm.html |
||
xXToToSeXx
|
# Posté le 15/05/2010 à 12:36:46 | ||
|
Ou pas !
Ville : Marseille |
Cool jamais entendu des ORM merci l'ami
|
||
MisterDo
|
# Posté le 15/05/2010 à 14:21:45 | ||
\_/O<![]()
|
Génial ! Il me reste plus qu'à traduire certaines choses en .yml pour Symfony (surtout les jointures) et c'est bon . (Un grand merci pour ce tuto)
|
||
kryptos
|
# Posté le 16/05/2010 à 11:04:16 | ||
![]()
Ville : Sainte-foy-les-lyon |
@Skydreamer et Nami Doc Je suis d'accord avec Skydreamer, Doctrine n'est pas intégré à Zend. Il est possible de le faire soi-même cependant. Mais il ne faut pas confondre intégration supportée par un framework et contribution de la communauté. Doctrine est lié à Symphony. Quant à Zend, l'abstraction des Zend_Db et Zend_Db_Table est largement suffisante (et fonctionne en interaction avec le reste du framework). Donc je ne vois pas l'intérêt de l'utiliser dans Zend. Ceci dit, bon tuto (qui mériterait un petite réorganisation pour être un peu mieux structuré). Venez tester la version finale de notre jeu de course spatiale Space Racer (conçu avec Unity 3D) Voir le sujet sur le forum. |
||
Tristou
|
# Posté le 20/05/2010 à 13:52:50 | ||
"En mode"![]()
|
J'aurais une question : j'ai lu le tuto mais malgré ça, je me pose la question de savoir pourquoi un ORM est mieux par exemple que utiliser PDO ?
Lovely old and expected me - Une pomme par jour éloigne le médecin. Oui, mais faut bien viser ! |
||
chione
|
# Posté le 24/05/2010 à 17:23:46 | ||
![]()
Études : ISTOM |
Un orm te permet de stocker des requêtes d'un coté et donc de séparer clairement tes requêtes de ton code. Un avantage va être de pouvoir réutiliser tes requêtes plusieurs fois dans des endroits fifférents de ton site sans avoir à tout réécrire... Tu pourrais imaginer une page news (avec les 5 premiers commentaires à chaque fois pour voir toutes les news paginées dans ton site et sur la première page de ton site juste les 5 premières news de ton site (avec égalment pour chaqu'une les 5 dernier commentaires). Pour cet exemple tu fais juste une méthode dans ton ORM qui va te récuperer les news avec les 5 dernier commentaires. tu ne réécris donc pas le code pour faire 2 fois la même chose. Et du coup si ta table news est modifié à l'avenir (le nom d'un champ change ou tu veux renvoyer finalement les 5 derniers commentaires validés au lieu des 5 derniers commentaires) tu ne change qu'une fois ta méthode. Ca permet aussi de faire un code plus propre et plus rangé. si y'a un problème avec une requête, pas la peine d'aller fouiller les 36000 pages php de ton site, si l'erreur est au niveau de la table news tu ouvres model/news.class.php et tu résout ton soucis là. C'est d'autant plus avantageux quand tu travailles dans un projet à plusieurs. Un autre avantage c'est que vu que c'esty orienté objet, rien ne t'empêche de faire une autre classe entre tes classes de table et la classe Doctrine pour faires des opérations qui se répètent... Par exemple tu veux que toutes tes tables quand tu fais delete en fait n'effacent jamais les enregistrements mais à la place mettent un champ deleted_at = 'date_du_jour'. Ainsi tu pourras récupérer les enregitrements effacés par erreur. Dans ce cas tu peux gérer très facilement ça en changeant la méthode ->delete() via l'héritage des classes. et pareil pour la méthode execute qui rajoutera pour chaque requête "where deleted_at = null" sans que tu ais à t'en occuper pour chaque requête. |
||
robin850
|
# Posté le 25/06/2010 à 20:24:23 | ||
![]()
Ville : Avesnes-sur-helpe |
Punaise ! C'est vraiment génial Doctrine ! Je vais prendre ça pour monde site parce que c'est vraiment flexible, simple à utiliser et la syntaxe est super propre par rapport à un <?php $bdd->query('SELECT....'); ?> AMHA. Ton tutoriel est super bien expliqué, je viens de découvrir un truc génial, merci . Cordialement, Robin. |
||
Nami Doc
|
# Posté le 26/06/2010 à 13:10:08 | ||
|
Lamaer taler dansk
|
Non et le tutoriel donne d'assez mauvaises pratiques en réalité. Mais ça reste une bonne base pour commencer.
|
||
ond
|
# Posté le 15/10/2010 à 12:00:18 | ||
|
|
il n'y a pas d'exemple de code avec un "where" dommage
|
||
GiBoM
|
# Posté le 20/12/2010 à 17:05:00 | ||
|
|
$q = Doctrine_Query::create() ->select('id') ->from('utilisateur') ->where('email= ?',$email) ->fetchOne(); Voila un exemple de clause where tu recupere la valeur par un tableau associatif $q['id']
|
||
LegendPJ
|
# Posté le 11/04/2012 à 16:37:22 | ||
![]()
Ville : Lyon |
Salut, tout d'abord, super tutoriel ! Très adaptable ! ![]() ça m'a beaucoup aidé !! Voilà, j'aurais une question, je code sous Zend Framework, et je viens d'intégrer Doctrine à mon projet, et je suis face à un petit problème, j'aimerais savoir quand est ce qu'une variable est vide, mais pas n'importe laquelle : (je me permet de reprendre un bon de code du tuto) Code : PHP
là où j'ai mis c'est ici je voudrais savoir si le tableau (il me semble que c'est un tableau) $news->commentaires est vide ou pas, et ce avant le foreach ! est ce que cela est possible ? sinon, y aurait-il une autre solution ? Merci d'avance
|
||
christophetd
|
# Posté le 11/04/2012 à 17:04:37 | ||
Regardez-moi !![]() Avis : Très bon
Ville : Gap |
Salut. ![]() Tout d'abord $news->commentaires n'est pas à proprement parler un array, il s'agit d'une instance d'une classe implémentant l'interface ArrayAccess. Je ne te garantis rien, mais tu peux essayer de le tester avec un empty : Code : PHP
Mes tutoriels : |
||
LegendPJ
|
# Posté le 11/04/2012 à 17:14:52 | ||
![]()
Ville : Lyon |
Merci de ta réponse ! Surtout aussi vite ![]() Malheureusement j'avais déjà essayé avec empty...mais il semblerait (après un petit var_dump) que celui-ci soit loin d'être vide...donc ça ne fonctionne pas comme ceci... Aurais-tu une autre idée ? :S |
||
christophetd
|
# Posté le 11/04/2012 à 19:25:01 | ||
Regardez-moi !![]() Avis : Très bon
Ville : Gap |
Peux-tu me donner ce que renvoie le var_dump ?
Mes tutoriels : |
||
LegendPJ
|
# Posté le 11/04/2012 à 20:56:39 | ||
![]()
Ville : Lyon |
Je te préviens...c'est long var_dump($e->sousencad); object(Doctrine_Collection)[107] protected 'data' => array 0 => object(Sousencadre)[108] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 8 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... 1 => object(Sousencadre)[116] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 10 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... 2 => object(Sousencadre)[117] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 11 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... 3 => object(Sousencadre)[118] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 12 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... protected '_table' => object(Doctrine_Table)[87] protected '_data' => array empty protected '_identifier' => string 'id' (length=2) protected '_identifierType' => int 1 protected '_conn' => object(Doctrine_Connection_Mysql)[10] protected 'driverName' => string 'Mysql' (length=5) protected 'dbh' => object(PDO)[74] ... protected 'tables' => array ... protected '_name' => string 'doctrine' (length=8) protected 'isConnected' => boolean true protected 'supported' => array ... protected 'pendingAttributes' => array ... private 'modules' (Doctrine_Connection) => array ... protected 'properties' => array ... protected 'serverInfo' => array ... protected 'options' => array ... protected '_count' => int 3 protected '_usedNames' => array ... protected 'attributes' => array ... protected 'parent' => object(Doctrine_Manager)[12] ... protected '_impl' => array ... protected '_params' => array ... protected '_locator' => null protected '_resources' => array ... protected '_identityMap' => array 1 => object(Sousencadre)[108] ... 2 => object(Sousencadre)[116] ... 3 => object(Sousencadre)[117] ... 4 => object(Sousencadre)[118] ... protected '_repository' => object(Doctrine_Table_Repository)[92] private 'table' => &object(Doctrine_Table)[87] private 'registry' => array ... protected '_columns' => array 'id' => array ... 'titre' => array ... 'contenu' => array ... 'encadre_id' => array ... 'ordre' => array ... protected '_uniques' => array empty protected '_fieldNames' => array 'id' => string 'id' (length=2) 'titre' => string 'titre' (length=5) 'contenu' => string 'contenu' (length=7) 'encadre_id' => string 'encadre_id' (length=10) 'ordre' => string 'ordre' (length=5) protected '_columnNames' => array 'id' => string 'id' (length=2) 'titre' => string 'titre' (length=5) 'contenu' => string 'contenu' (length=7) 'encadre_id' => string 'encadre_id' (length=10) 'ordre' => string 'ordre' (length=5) protected 'columnCount' => int 5 protected 'hasDefaultValues' => null protected '_options' => array 'name' => string 'Sousencadre' (length=11) 'tableName' => string 'sousencadre' (length=11) 'sequenceName' => null 'inheritanceMap' => array ... 'enumMap' => array ... 'type' => string 'INNODB' (length=6) 'charset' => string 'utf8' (length=4) 'collate' => string 'utf8_general_ci' (length=15) 'treeImpl' => null 'treeOptions' => array ... 'indexes' => array ... 'parents' => array ... 'joinedParents' => array ... 'queryParts' => array ... 'versioning' => null 'subclasses' => array ... 'orderBy' => null 'declaringClass' => object(ReflectionClass)[91] ... protected '_tree' => null protected '_parser' => object(Doctrine_Relation_Parser)[88] protected '_table' => &object(Doctrine_Table)[87] protected '_relations' => array ... protected '_pending' => array ... protected '_templates' => array empty protected '_filters' => array 0 => object(Doctrine_Record_Filter_Standard)[90] ... protected '_generators' => array empty protected '_generator' => null protected '_invokedMethods' => array empty protected 'record' => object(Sousencadre)[89] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 3 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 4 protected '_table' => &object(Doctrine_Table)[87] protected '_locator' => null protected '_resources' => array ... protected 'attributes' => array empty protected 'parent' => object(Doctrine_Connection_Mysql)[10] protected 'driverName' => string 'Mysql' (length=5) protected 'dbh' => object(PDO)[74] ... protected 'tables' => array ... protected '_name' => string 'doctrine' (length=8) protected 'isConnected' => boolean true protected 'supported' => array ... protected 'pendingAttributes' => array ... private 'modules' (Doctrine_Connection) => array ... protected 'properties' => array ... protected 'serverInfo' => array ... protected 'options' => array ... protected '_count' => int 3 protected '_usedNames' => array ... protected 'attributes' => array ... protected 'parent' => object(Doctrine_Manager)[12] ... protected '_impl' => array ... protected '_params' => array ... protected '_locator' => null protected '_resources' => array ... protected '_impl' => array empty protected '_params' => array empty protected '_locator' => null protected '_resources' => array empty protected '_snapshot' => array 0 => object(Sousencadre)[108] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 8 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... 1 => object(Sousencadre)[116] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 10 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... 2 => object(Sousencadre)[117] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 11 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... 3 => object(Sousencadre)[118] protected '_node' => null protected '_id' => array ... protected '_data' => array ... protected '_values' => array ... protected '_state' => int 1 protected '_lastModified' => array ... protected '_modified' => array ... protected '_oldValues' => array ... protected '_errorStack' => null protected '_references' => array ... protected '_pendingDeletes' => array ... protected '_pendingUnlinks' => array ... protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 12 protected '_table' => object(Doctrine_Table)[87] ... protected '_locator' => null protected '_resources' => array ... protected 'reference' => object(Encadre)[106] protected '_node' => null protected '_id' => array 'id' => string '3' (length=1) protected '_data' => array 'id' => string '3' (length=1) 'titre' => string 'Qui sommes-nous ?' (length=17) 'contenu' => string '<p>azertyuiop</p>' (length=17) 'entite_id' => string '1' (length=1) 'ordre' => string '3' (length=1) protected '_values' => array empty protected '_state' => int 3 protected '_lastModified' => array empty protected '_modified' => array empty protected '_oldValues' => array empty protected '_errorStack' => null protected '_references' => array 'sousencad' => &object(Doctrine_Collection)[107] protected '_pendingDeletes' => array empty protected '_pendingUnlinks' => array empty protected '_serializeReferences' => boolean false protected '_invokedSaveHooks' => boolean false private '_oid' (Doctrine_Record) => int 7 protected '_table' => object(Doctrine_Table)[81] protected '_data' => array ... protected '_identifier' => string 'id' (length=2) protected '_identifierType' => int 1 protected '_conn' => object(Doctrine_Connection_Mysql)[10] ... protected '_identityMap' => array ... protected '_repository' => object(Doctrine_Table_Repository)[86] ... protected '_columns' => array ... protected '_uniques' => array ... protected '_fieldNames' => array ... protected '_columnNames' => array ... protected 'columnCount' => int 5 protected 'hasDefaultValues' => null protected '_options' => array ... protected '_tree' => null protected '_parser' => object(Doctrine_Relation_Parser)[82] ... protected '_templates' => array ... protected '_filters' => array ... protected '_generators' => array ... protected '_generator' => null protected '_invokedMethods' => array ... protected 'record' => object(Encadre)[83] ... protected 'attributes' => array ... protected 'parent' => object(Doctrine_Connection_Mysql)[10] ... protected '_impl' => array ... protected '_params' => array ... protected '_locator' => null protected '_resources' => array ... protected '_locator' => null protected '_resources' => array empty protected 'referenceField' => string 'encadre_id' (length=10) protected 'relation' => object(Doctrine_Relation_ForeignKey)[93] protected 'definition' => array 'alias' => string 'sousencad' (length=9) 'foreign' => string 'encadre_id' (length=10) 'local' => string 'id' (length=2) 'class' => string 'Sousencadre' (length=11) 'type' => int 1 'table' => object(Doctrine_Table)[87] ... 'localTable' => object(Doctrine_Table)[81] ... 'name' => null 'refTable' => null 'onDelete' => null 'onUpdate' => null 'deferred' => null 'deferrable' => null 'constraint' => null 'equal' => boolean false 'cascade' => array ... 'owningSide' => boolean false 'refClassRelationAlias' => null 'foreignKeyName' => null 'orderBy' => null protected '_isRefClass' => null protected 'keyColumn' => null protected '_locator' => null protected '_resources' => array empty |
||
LegendPJ
|
# Posté le 11/04/2012 à 21:50:14 | ||
![]()
Ville : Lyon |
Bon, désolé d'avoir fait tout ce foin pour rien...un pote à moi a trouvé la solution : faire un count sur la variable et tester si ce count est egal à 0 ou pas, et ça fonctionne ![]() Merci christophed pour ce tuto et pour l'aide qu'il m'a apporté !
|
||
christophetd
|
# Posté le 11/04/2012 à 21:52:17 | ||
Regardez-moi !![]() Avis : Très bon
Ville : Gap |
Avec plaisir.
Mes tutoriels : |
||
ArRaXaS
|
# Posté le 25/04/2012 à 09:55:51 | ||
![]() Avis : Bon
|
Hello, Le tutoriel est très intéressant et bien fait ! J'aurais juste une question qui me bloque un peu. Mes tables sont déjà créées et remplies. Et je ne suis pas sûr de pouvoir exécuter les instructions de ce tutoriel sans altérer mes données. Ma question est comment fait-on pour partir d'une table qui existe déjà ? Soit ma table "user". Suffit-il de créer la classe user.class.php ou dois-je aussi implémenter la méthode setTableDefinition() ? Merci pour ces éclaircissements ! Bon travail, |
||
christophetd
|
# Posté le 25/04/2012 à 10:16:31 | ||
Regardez-moi !![]() Avis : Très bon
Ville : Gap |
Salut, Ça commence à faire vraiment très longtemps que je n'ai plus touché à Doctrine, donc je te conseille de demander sur le forum...
Mes tutoriels : |
||
ArRaXaS
|
# Posté le 25/04/2012 à 11:24:33 | ||
![]() Avis : Bon
|
Oui c'est déjà fait ![]() Merci pour ta réponse rapide ! |
||
