begin process at 2010 02 10 06:33:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > [CMS - POO - PDO]MY GESTION BIENTÔT DISPONIBLE.

[CMS - POO - PDO]MY GESTION BIENTÔT DISPONIBLE.


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :CMS blog-administration, modules sgc-poophp5, e-commerce ajax, langues xml-template, administration librairie-cache Niveau :Débutant Date de création :23/10/2008 Date de mise à jour :06/06/2009 20:50:53 Vu :5 163

Auteur : destinyfr

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

 Description

Bonjour à tous et à toutes.

Suite à pas mal de discussions sur cette source et grâce à des nombreuses aides des membres, je vais bientôt sortir une version 1.0 du CMS.

Quelles seront les nouveautés ?

La grosse nouveauté du script vient surtout du faite qu'il soit codé à l'aide de classes (Programmation Orientée Objet - Nécessite PHP > 5.0).
Cela permet donc de le rendre plus facile à adapter en cas de besoin.
Le script utilise la librairie PDO qui me permet de communiquer avec la base de donnée du script (Attention ! PDO doit être au préalable installé et activé sur le serveur !).
D'autres nouveautés sont présentes comme l'utilisation d'ajax dans le moteur de recherche par exemple ou encore dans la gestion des membres...
L'utilisation d'XML permet d'apporter beaucoup de possibilités (pas encore trop exploité dans la première version), je pense surtout pour les langues ! Grace à XML il est possible de gérer une multitude de langues sans ce compliquer la vie :)
Je propose donc un système de gestion des langues par fichier XML sur le CMS :) ce qui me permet de le proposer en plusieurs langues :)
Autre nouveauté présente sur le CMS, c'est la gestion des modules ! En effet, tout le CMS ce gère à partir de modules. Vous pouvez en ajouter, supprimer, activer et désactiver via un panel. Chaque module est ensuite stocké dans une base de donnée (si installé) permettant de l'activer ou non. Si activé il est possible d'y accéder et il sera affiché dans le menu :)
Des modules ne pourront cependant pas être désinstallés (je pense notamment à l'administration, l'installation, la gestion des articles etc... bref les principaux).
Les modules viendront en fonction du temps libre que je dispose, mais si certaines personnes souhaites en proposer, il suffira de ce rendre sur le forum du site officiel du CMS.
Un gestionnaire de template est aussi disponible pour pouvoir personnaliser facilement le design du site.

Voici les plus grosses nouveautés du CMS, pour l'ajout de fonctionnalités, celle-ci viendront avec le temps lorsque des modules seront disponibles.

Concernant le e-commerce, celui la sera possible d'utilisation mais en module. Déjà je vais finir la base de script ^^. Pour le blog je sais pas encore si je le laisse libre ou non, à l'origine ce n'est pas prévu mais si la demande est importante, c'est possible que je le laisse en libre distribution. Il viendra aussi une fois la base terminée.

Source

  • Non disponible pour le moment.
Non disponible pour le moment.

 Conclusion

Bah rien, faut juste avoir le temps de finir de coder tout ça lol.


 Historique

23 octobre 2008 18:24:27 :
Mise à jour de la description.
23 octobre 2008 18:40:36 :
Mise à jour du script pour un petit bug sur la page pour afficher les articles sauvegardés et mise à jour du lien.
23 octobre 2008 18:45:47 :
Mise à jour de la description (correction d'une ou deux fautes).
23 octobre 2008 20:18:39 :
Ajout d'un petit bout de texte pour vous expliquer comment l'installer.
27 octobre 2008 20:21:17 :
Modification du code pour l'ajout de PDO. Version BETA 0.2 Ajout de la table myg_connectes qui manquaient bien que le script n'y soit pas. Nouvelle archive disponible. Attention ! Chez moi PDO marchait mais il semblerait qu'il soit désactivé à nouveau :( je cherche donc des personnes chez qui il est activé pour tester le script. Voici l'erreur que je reçois : Fatal error: Call to a member function fetch() on a non-object Alors que sur ce fichier, aucune modification n'a eu lieu (il marchait ce matin). Merci !
28 octobre 2008 11:46:09 :
Correction des erreurs PDO. Correction de l'installation, désinstallation et accès au modules. Ajout des liens manquants dans l'index de l'administration et correction du bug d'affichage. Autres modifications diverses.
06 juin 2009 20:51:03 :
Refonte de la description du CMS pour annoncer ce qui devrait bientôt arriver (en fonction de mon temps libre les journées), ce qui à changé etc... je vous laisse lire. Désolé pour l'orthographe, je suis un nul en français je sais. Suppression de l'ancienne source.

 Sources du même auteur

Source avec Zip [POO]SYSTÈME DE CACHE
Source avec Zip [POO][PHP5]UN SITE MULTILANGUE VIA XML

 Sources de la même categorie

Source avec Zip Source avec une capture GRACENATUR V02 - CDMS: CONTAIN AND DESIGN MANAGMENT SYSTEM par sajaris
Source avec Zip SIMULBAL: SERVEUR POUR BALANCES ÉLECTRONIQUES DE LABORATOIRE... par laservert
Source avec Zip GESTION D'ESPACE MEMBRES par jmpicot
TEST DU CHI2 OU KHI2 D'INDÉPENDANCE par phpAnonyme
CLASSE PAGINATION par darkis

Commentaires et avis

Commentaire de aKheNathOn le 23/10/2008 21:41:38

Salut, le sujet est super intéressant et passionnant. Pas mal de remarques sur le code et la structure mais ça serais rabâcher toujours la même chose.

Une seule question, en terme de fonctionnel pourquoi avoir refait un CMS plutôt que d'utiliser un joomla ou autre, et implémenter un module si besoin de le personnifier.

As-tu apporté un souffle nouveau et si oui en quoi ?

Commentaire de codefalse le 24/10/2008 10:32:46 administrateur CS

La réalisation d'un CMS ou d'un Framework n'est pas quelque chsoe de très aisé à faire !

Je salue le geste ! :)

Mais as-tu effectué des tests de base ? Comme l'as dit Akhenathon, il y a toujours des choses à redire, et rabâcher toujours la même chose, c'est chiant, mais je vais m'y coller, ca fait jamais de mal !

Essaye ton code avec error_reporting(E_ALL). Ca ne doit afficher AUCUNE erreur, NI notices ! RIEN ! NIET ! NADA :p

Ensuite, mysql_query, c'est quoi ca ? ca existe plus ! :p Bon c'est pas vrai, mais faut arreter d'utiliser ca maintenant que PDO est fournit en standard dans PHP. Bon ok, pas PHP4, mais faut se mettre à jour ! Php4, ca existe plus !
Je te conseil de jeter un oeil à ce liens : http://blog.reflectiv.net/2008/10/21/nutilisez-plus-les-fonctions-mysql_/

Ensuite, pour un projet de cet envergure, il te faut respecter une norme d'écriture, un respect de la structure.
Il faut limiter la redondance de code, le "spaghetti code" (http://en.wikipedia.org/wiki/Spaghetti_code) et surtout, SURTOUT, ne pas mélanger le code html du code php.
Chaque élément doit être séparé !
Le mieux, c'est d'avoir un environnement pour chaque partie essentielle d'une page web :
HTML pour la structure, CSS pour la mise en page, JavaScript pour les évènements et les effets, et le PHP pour la gestion des données.

Par exemple, évite d'avoir quelque chose de ce genre :
<div style="text-align: center; padding: 5px" onclick="alert ('t\'as cliqué!');"><?php echo $sMessage; ?></div>

Mais préferer :
Fichier event.js :
document.getElementById ('myDiv').onClick = function () {alert ('t\'as cliqué!');}

Fichier styles.css :
#myDiv {text-align: center; padding: 5px}

Fichier Html :
<div id="myDiv"></div>

Fichier Php:
<?php
$oTpl = new Template ('fichier.html');
$oTpl->affect ('myDiv', $sMessage);
?>

Et là, tu offre à ton code un pérénité, une réutilisabilité, une structuration, ... avancée ! :)

Commentaire de warpcom le 24/10/2008 13:32:17

salut,j'ai essayé d'utiliser ton application CMS mé il ya avait des notices c'est pas un probleme je les ai corriger mé le probléme c'est qu'il manque un table dans le fichier _tables.sql qui manque a la base "myg_connectes" ca serai sympa si tu le passe pour que je puisse tester toutes l'aaplication.

et merci d avance

Commentaire de destinyfr le 24/10/2008 16:48:48

Salut

Déjà merci pour vos commentaires, et surtout merci à Codefalse pour les remarques qu'il m'a donné !
Je regarde actuellement les liens que tu ma donnés, et ceci sont très intéressants ^^

Pour ce qui est séparer le code, j'y est pensé moi aussi (parce que c'est vrai que je n'aime pas moi aussi avoir du html dans le php bien que je le fasse), j'avais pour idée de créer un système de template, mais la réalisation est accès longue donc celle-ci était prévu pour une autre version.

Je voulais modifier le code pour le refaire avec la puissance de la POO, mais je n'ai pas de très grandes compétences dans celle-ci encore (vu qu'elle n'était pas très avancée dans php4, je n'y avais jamais prêter vraiment attention -> grosse erreur de ma part), cependant ton tutoriel semble très intéressant et facile d'utilisation. Je vais donc y prêter attention et sortir une autre version avec je l'espère l'ajout de celui-ci :-) (c'est en faisant des erreurs que l'on apprend à ne plus en faire)

Pour répondre à Akhenathon, pour avoir créer ce cms ? Mon but principal était de faire profiter celui-ci à tout le monde, en le rendant le plus simple possible d'utilisation que ce soit au niveau code (modification de celui-ci par tout le monde) ou au niveau de la gestion (installation, rédaction d'articles etc...).
Je ne peux pas vraiment te dire qu'est-ce qu'il aura vraiment de meilleur par rapport à un autre, sachant qu'il commence juste à voir le monde :-)
Mais dans un sens, quand joomla, wordpress ou autre ont été crée, quelqu'un à bien du poser la même question que toi :-) et pourtant ils sont très connus et utilisés même si il ce ressemblent beaucoup !

Pour répondre à Warpcom, en effet je n'ai pas fournis la table pour les catégories. La voici :

DROP TABLE IF EXISTS `myg_categories`;
CREATE TABLE `myg_categories` (
    `id` int(11) NOT NULL auto_increment,
    `nom` varchar(255) NOT NULL,
    `icone_url` varchar(255) NOT NULL,
    PRIMARY KEY (id)
);

Je suis vraiment désolé pour cette oublie.

Encore une fois je vous remercie pour vos commentaires et je vais me pencher plus en détails sur les liens que ma fournis Codefalse.

Merci beaucoup !

Commentaire de codefalse le 24/10/2008 23:06:10 administrateur CS

J'attends tes mises à jours alors ;)

Commentaire de destinyfr le 25/10/2008 06:21:52

Oui cependant, ce ne sera pas pour ce weekend car je ne suis pas la, et j'ai un petit problème concernant PDO, il n'est pas activé chez mon hébergeur. J'ai donc fait la demande d'activation, je pense l'avoir quand je rentrerais.

Commentaire de western3021 le 27/10/2008 09:43:02

bien le bonjour,

effectivement, merci pour les piqures de rappel et le lien, Codefalse, c'est exactement le genre d'explications claires que je cherche, parce que des tutos en tous genres, c'est pas le problème, mais qui soient bien didactiques, ça l'est plus ;-)
A ce sujet, je suis à la recherche désespérée d'un tuto clair sur la POO pour php.

Merci à tous :-)

Benjamin

Commentaire de abdelus100 le 27/10/2008 12:06:47

Merci bcppp c'est trés intéressant.

Commentaire de vxr888 le 27/10/2008 15:34:44

@ CODEFALSE : moi je veux bien utiliser PDO mais celà requiert PHP 5 et bien que tu dises que PHP 4 c'est dépassé, c'est loin d'être le cas chez beaucoup d'hébergeurs !!!

Commentaire de destinyfr le 27/10/2008 20:58:24

Voilà la source a été mise à jour pour une utilisation avec PDO, cependant je pense que celui-ci a été désactivé de nouveau sur mon hébergeur car je reçois cette erreur :

Fatal error: Call to a member function fetch() on a non-object

D'après le message, il semblerait que la fonction fetch() ne soit plus disponible (hors celle-ci ne l'ai que si PDO est activée).

Voici la ligne correspondant :

$donneesNews = $retourNews->fetch(PDO::FETCH_ASSOC)

Si quelqu'un peux tester et me dire si c'est pareil pour vous svp.

Merci :-)

Commentaire de western3021 le 27/10/2008 21:32:41

un petit coup de phpinfo() pour vérifier, tu gagneras du temps ;-)

Commentaire de codefalse le 27/10/2008 22:07:44 administrateur CS

@vxr888 : quel hébergeur ? Car free, il y a un .htaccess qui permet de spécifier quel version de php utiliser, ca doit être le cas pour tous les autres hébergeurs. Et si c'est pas le cas, change, car celui chez qui tu es n'en as rien à cirer de la sécurité, donc ca promet pour tes données ... (et honte à lui !)

@Destinyfr : L'erreur retournée serait aussi bien appréciée :p

Commentaire de destinyfr le 27/10/2008 23:10:18

Pour l'erreur retournée, je l'avais donnée dans le message précédent ^^ enfin la revoilà :

Fatal error: Call to a member function fetch() on a non-object (dans news.php à la ligne 64 => au niveau de la boucle qui liste les news).

Je vais voir avec phpinfo() mais hier PDO avait été activé (hors ayant eu le transfère du site sur un autre serveur, je ne sais pas sur le quel elle a été activé).

Je vais essayer d'avoir plus d'informations sur ce problème, en attends, je ne vois vraiment pas pourquoi j'ai cette erreur. J'ai pourtant bien vérifié le code.

Merci de votre aide.

Commentaire de codefalse le 28/10/2008 01:59:08 administrateur CS

Arf en effet :p trop vite :p

Le problème vient du fait que ta fonction prepare n'a pas retourné un objet, cela veux dire que ta requête à eu un probleme. Tu as eu un false à la place de ton objet PDOStatement.
Un ptit var_dump dessus te le prouvera ;)
var_dump ($retourNews);

Regarde du côté de la requête (:

Commentaire de peanut38 le 28/10/2008 10:41:17

Bonjour,

Je viens de me mettre au PDO donc pour l'instant je cherche simplement à comprendre comment ça fonctionne... Je te remercie déjà par avance d'avoir posté cette source, c'est vrai que ça a l'air passionnant !

Commentaire de destinyfr le 28/10/2008 12:12:43

Voilà les problèmes par rapport à PDO sont corrigés.
J'ai aussi corrigé d'autres bugs.

Maintenant que tout sa est ok (je n'ai plus de bug normalement, mais il est possible que j'en est oublié), je vais essayer de m'attaquer à la séparation du code (moteur de template).

Commentaire de aKheNathOn le 29/10/2008 09:38:39 8/10

Destiny ton projet n'est peut-être pas encore le must du CMS en MVC en tout cas dans l'esprit partage communautaire, réactivité et investissement personnel t'es sur la bonne voie.

Continues, tu vas forcément y arriver. Je t'ai mis 8/10 par rapport au type de projet et ton attitude à rebondir sur les évolutions :) et tiens nous au courant.

Commentaire de vxr888 le 29/10/2008 15:10:15

@ CODEFALSE : mon hébergeur est produweb.fr et son php est la version 4.4.8
Auparavant, j'étais chez one.com et eux aussi avaient une version 4 !

Quels hébergeurs pas trop chers connais-tu en version 5 ?

Merci d'avance.

Commentaire de codefalse le 29/10/2008 16:41:31 administrateur CS

Free, Ovh, ... :)

Commentaire de destinyfr le 29/10/2008 16:53:11

Moi je te conseil host-10000.fr, ils proposent différentes offres, tu peux payer par allopass ou paypal et le service est très bien (jusqu'à présent, tout ce dont j'ai demandé : exemple : activation PDO ils me l'ont fait dessuite). Le support sur le forum est très rapide. Je te le conseil (domaine en .com/.fr/.org/etc... (en revanche, il demande un petit plus pour la création de celui-ci mais qu'une fois par an lorsque tu veux renouveler ton compte).

Pour le moteur de template, je ne peux pas dire que ce soit simple ^^ j'ai un peu de mal à comprendre comment sa marche pour le moment mais sa viendra (je suis aussi entrain de bien apprendre la poo version php5, j'ai trouvé un bon tuto sur ce site : http://www.apprendre-php.com/tutoriels/ ).

Je continu à vous tenir au courant de l'avancement :-)

Commentaire de vxr888 le 29/10/2008 20:18:09

host-10000 semble "dépendre" d'OVH... (Datacenter : OVH ROUBAIX)

Commentaire de destinyfr le 30/10/2008 06:57:07

Oui ils prennent des serveurs sur OVH c'est exacte ^^ mais bon aucun problème de ce côté :p

Commentaire de vxr888 le 31/10/2008 14:50:25

Ben si, disons que si un jour pour une raison ou pour une autre host-10000 sont obligés de fermer (et je sais de quoi je parle car j'ai connu ça chez un autre hébergeur...), les utilisateurs deviendront des utilisateurs OVH... aux tarifs OVH :s

Commentaire de destinyfr le 31/10/2008 16:44:03

Je ne sais pas, je n'ai jamais eu ce problème ^^

Bon pour ce qui est du CMS, je suis actuellement entrain d'essayer de faire marcher ma class PDO, mais j'ai quelques petits problèmes encore ^^ sa viendra par la suite :) faut que j'arrive à les corriger.

Commentaire de vxr888 le 31/10/2008 17:27:38

Finalement ça n'a pas l'air si simple que ça en avait l'air lors de la prsentation par CODEFALSE :s

Commentaire de destinyfr le 31/10/2008 18:37:45

De quoi ? La POO ? Faut juste que je trouve l'erreur ^^

Commentaire de vxr888 le 01/11/2008 19:58:57

Ahhh c'est ton code qui est false, c'est pas une erreur de l'objet PDO... c'est bien ça ?

Commentaire de destinyfr le 02/11/2008 09:17:45

Non l'erreur viens de la classe php5 que j'ai fais, cela vient pas de PDO, PDO je sais utiliser ce que j'ai mis dedans. L'erreur retournée c'est que je peux pas déclarer deux fois le même objet oO hors il n'y est déclaré qu'une fois.
Je boss dessus actuellement, je trouverais bien à une moment ou un autre :p sa doit être une petite erreur à la con :(

Commentaire de vxr888 le 02/11/2008 13:10:49

Courage !

Commentaire de codefalse le 02/11/2008 15:16:38 administrateur CS

@DestinyFr : Quel est le nom de ta classe ?
Généralement je nomme mes classes de ce genre :
NomdeprojetFonctionDeLaClasse
de facon à éviter toute confrontation avec une autre classe existante.

Commentaire de destinyfr le 02/11/2008 17:39:56

Bin le nom de la classe était PDO donc quand je la lancé, j'avais : new PDO (utilisé par PDO lui même). L'erreur venait de la. Cependant, il y a d'autres erreurs (c'était trop beau pour pas en avoir :p) donc je m'occupe de ça et en même temps je vais essayer d'améliorer le script en ajoutant par exemple la gestion des erreurs :) et une fois que cette classe sera opérationnelle à 100%, je la modifierais pour faire marcher sous plusieurs version de sql (Postgresql, Sqlite, mssql etc...) et lors de l'installation du script, en fonction du type choisie, j'inclurais telle ou telle classe.
Beaucoup de prédictions vous me direz :) mais bon c'est bien d'avoir des idées. Maintenant faut les appliquer :).
Je suis aussi entrain de réaliser un autre design comme sa il servira de base pour le moteur de template (il en existe beaucoup tout prêt, je vais utiliser ceci et par la même occasion apprendre comment sa marche :D).

Commentaire de vxr888 le 02/11/2008 21:09:46

Le plus important pour un projet d'une telle envergure : ne pas te décourager !!! ;)

Commentaire de destinyfr le 02/11/2008 21:43:10

Oui c'est normale ^^ (bon c'est dur tout seul et en plus les cours, mais je lâcherais pas). Pour la classe il me reste juste des erreurs au niveau des requette PDO : PDO::FETCH_OBJ etc... une fois sa corrigé, tout devrait marcher :)

Commentaire de destinyfr le 07/11/2008 23:54:46

Bon voilà la classe PDO est finis, tout marche, il me reste plus cas finir la classe de gestion des erreurs par fichier. Cependant, je voudrais faire un fichier html qui sera visible via l'administration, mais j'ai une question et si quelqu'un peu m'aider sur ce point, ce serais vraiment sympa :

Est-ce que avec l'écriture dans le fichier html les erreurs générées vont être ajouter les une à la suite des autres ou alors si une deuxième erreur est produite, elle va remplacer la première ?

(Il ne me reste que les tests à effectuer sur les requettes pour voir si tout marche et dans le cas contraire afficher l'erreur).

Maintenant, je vais m'attaquer au moteur de template...

Merci de répondre.

Commentaire de codefalse le 08/11/2008 00:52:27 administrateur CS

Ca va dépendre de comment tu les affiches, si tu utilise un moteur de template ou non, etc.
Si tu n'utilise rien, elle devraient s'afficher à la suite.
Si tu utilise un moteur de template, ca va dépendre de comment tu le configure :p

Commentaire de vxr888 le 08/11/2008 14:14:22

J'ai pas tout compris là moi ! Tu veux écrire des trucs dans un page html avec du code php ? Pourquoi ne pas utiliser une base de données ?

Commentaire de codefalse le 08/11/2008 15:10:58 administrateur CS

lol :p
Ca dépend de comment tu t'y prends. Si tu t'inquiète pour l'affichage des erreurs, elles seront générés dans la sortie (normallement le navigateur) là ou elles ont eu lieue.

Commentaire de destinyfr le 08/11/2008 18:04:32

Non parce que enfaite, voilà comment j'ai fais dans la classe :

SJ'ai testé via try et catch si les requettes sont bien effectuées. Si c'est le cas, la page s'affiche normalement, sinon j'affiche une erreur 500 Internal en indiquant l'erreur rencontrée.
J'ajoute aussi l'erreur dans un fichier html visible dans l'administration qui va lister toutes les erreurs et donc permettre de voir qu'est-ce qu'il y avait eu etc... (éventuellement pour améliorer les requettes).

Vous trouvez que c'est inutile (autant afficher directement les erreurs) ou non ?

Merci :)

Commentaire de codefalse le 08/11/2008 20:28:49 administrateur CS

Bah si t'affiche directement les erreurs, tu ne les aura jamais toi (un visiteur verra le message, pas toi !).
Par ailleur, afficher les erreurs peut-être risqué pour ton site (error in /var/www/html/confidential.php, hum :p), donc le mieux est de limiter les infos à afficher et de les enregistrer dans un fichier je pense.

Commentaire de destinyfr le 08/11/2008 21:08:09

En effet c'est vrai que ce type d'erreur il ne faut pas l'afficher ^^

Bon du coup je laisse tel quel le script :)

Prochaines modifications : Moteur de template (faut que je termine le design, mais la manque d'idée :( sniff) puis les dernières optimisations et je devrais en avoir finis avec la béta ^^ (quand ce sera fait, on vera ^^).

Voilà ! Merci pour les réponses :p
PS : je pense que je posterais directement le zip avec le moteur de recherche et le nouveau design.

Commentaire de vxr888 le 09/11/2008 13:36:35

Pour ta gestion des erreurs, le mieux selon moi c'est de te les faire envoyer par mail ou de les déposer dans une base de données si tu as un page d'admin ;)

Commentaire de codefalse le 09/11/2008 22:13:34 administrateur CS

Les envoyer par email, c'est un peu risqué, parce que s'il y a une erreur basique, mais qui est affichée sur une boucle de 100 entrée, pour 10 visiteurs, ca va faire du bon mauvais spam :p

Mieux vaut les enregistrer, en sgbd ou fichier, peu importe

Commentaire de vxr888 le 10/11/2008 20:53:07

Je suis d'accord avec toi CODEFALSE même si j'ai envie de dire que si tu es "sûr" de ton code, les seules erreurs sont des erreurs importantes donc vaut mieux recevoir 100 alertes que pas du tout.
Après c'est clair que si c'est pour saturer la boîte mail, ce n'est pas une bonne idée ; par contre si on répertorie les erreurs dans une base de données, il faut penser à la consulter donc, peut-être prévoir un table vierge et dès qu'une entrée vient s'y insérer, un mail est envoyé (avec un test faisant que lors de l'ajout d'une nouvelle entrée, on vérifie s'il n'y en a pas déjà une et si c'est le cas on ne renvoie pas de mail ==> comme ça on a que un mail mais au moins on est averti et donc pas obligé de consulter un page répertoriant de possibles erreurs tous les jours).
Qu'en pensez-vous ?

Commentaire de destinyfr le 10/11/2008 21:55:03

Ou alors encore plus simple ^^ la première chose que tu affiche quand tu te connecte sur une session administrateur, c'est marquer les différentes choses s'étant produites :

516945886555821 commentaires
999999999999999999999 erreurs répertoriées XD
etc...

Comme sa tu te rend sur ton panel administrateur et tu regarde les erreurs et les corrigent :)

Le mail tu regarde pas tout le temps non plus, ton site aussi c'est vrai mais dans les deux cas c'est rare que tu passe pas voir au moins 1 fois par jour :)

C'est un autre proposition marchant aussi avec sgbd.

Commentaire de codefalse le 10/11/2008 23:30:58 administrateur CS

@Vxr888 : Crois moi, lorsque tu fera la migration entre ton serveur de test (ton pc par ex) et ton serveur de prod (hebergement online), le changement de configuration php génèrera des erreurs. Tu en corrigera pas mal, mais tu risque d'en louper et si un robot passe par là, il risque de te pourrir la boite mail.

Perso il m'est arrivé de loguer les erreurs dans un fichier, et sur la page d'accueil, je testait la taille de ce fichier. Arrivé à une certaine taille, je me l'envoyais par email. C'est plus propre.

Commentaire de destinyfr le 13/11/2008 20:49:58

Salut tout le monde :)

Après avoir eu un problème de connexion concernant ma livebox, je suis de retour avec quelques nouvelles à vous annoncer concernant le CMS :)

- Un nouveau design, finis et magnifique :) (sera dévoilé dans la prochaine version)
- Un système à la MVC que je vais essayer de faire le plus rapidement possible (débutant en ce qui concerne ce système ^^)
- Le moteur de template que je vais pouvoir enfin essayer d'intégrer :)
- La modification de la classe PDO Mysql actuellement présente pour la faire marcher via Postgresql, MSSQL, etc... et aussi l'ajout d'une classe Mysql sans l'utilisation de PDO pour les personnes qui ne disposerait pas de celui-ci :)

Voilà déjà une petite liste de mises à jours que je compte bien faire (je ne sais pas combien de temps cela prendra mais je vais tiendrais au courant).

Merci et bonne soirée :p

Commentaire de destinyfr le 23/11/2008 16:14:06

Bonjour,

Je suis désolé si les maj n'arrivent pas vite en ce moment, ceci est du au faite que je n'ai pas beaucoup de temps libre. Je dois m'occuper de mes devoirs (et oui les cours ^^), j'ai aussi pas mal de compétitions, stage (badminton, ju-jitsu, judo etc...), ce qui fait que je n'ai pas beaucoup de temps pour bosser sur le script.
Ceci dit, je ne fait pas pour autant rien dessus :)

Actuellement : La classe PDO que j'ai fait marche, cependant elle n'est pas très adaptée pour ensuite utiliser par exemple Postgresql. Je vais donc refaire une classe database abstract et ensuite des classes mysql, mssql, postgresql etc... qui en hériterons. Comme sa la classe par sur les mêmes bases, c'est juste la façon de procéder à la requette qui change.

Voilà bonne journée ^^

Commentaire de destinyfr le 25/11/2008 07:12:10

Bonjour,

Un petit message pour dire que la classe database est finis, pour le moment la classe que j'ai réalisé (gestion de plusieurs bases de données) est mysql avec PDO. Je vais maintenant la convertir pour faire marcher sous oracle, postgresql, mssql, sqlite, mysqli bien entendu avec PDO ^^ (faut que je regarde les différences entre PDO et sans PDO).
Je vais aussi m'assurer que tout marche. J'ai créer aussi une page option classe pour ajouter des options par exemple : mode debug si true -> activé sinon désactivé. Il faut cependant que je travaille sur ce fichier :)

Voilà bonne journée ^^

Commentaire de codefalse le 25/11/2008 09:45:54 administrateur CS

Juste, pour rebondir sur ton précédent post (celui avant).
Au niveau poo, je te déconseillerai de faire une classe qui étende une autre, mais de faire une classe à laquelle tu lui donne l'instance pdo (par ex), et cette classe executera les requetes en conséquent.
Voici comment je procède :
J'ai une classe PdoManager, qui contient deux fonctions statiques (getInstance et Init). Il faut absolument appeler PdoManager::init en premier, afin de lui donner les paramètre de connexions (dsn, username & passwd). Tu peux aussi juste directement lui donner pdo, à toi de voir. Ma facon de faire m'impose de ne pas disposer de l'instance de pdo ailleur dans mes classes. Ensuite j'ai une autre fonction dans PdoManager (à toi de voir si tu la veux en statique ou non), load, qui va charger une classe spécifique pour les requetes (par exemple, PdoManager::load ('users'); qui me retourne une instance de PdoModel.
PdoModel est une classe abstraite qui contient juste un constructeur (__construct) et ce constructeur recoit l'instance de PDO que la classe PdoManager lui donne lors de l'appel à PdoManager::load. Il le stocke dans une variable "protected" afin que la classe qui hérite de PdoModel aie accès à pdo.
Ensuite, je fait une classe fille Users extends PdoModel, et je met toutes les fonctions dont j'ai besoin qui feront les requêtes sql à ma place.

Pour gérer le multi serveur sql, je fait une petite astuce : le répertoire ou se trouve mes modeles, je fait un sous-repertoire aillant comme nom le driver pdo. (Mysql, Oracle, etc)
Ensuite, dans ma classe load, je fait un :
require_once (PATH_VERS_MODELS.$oPdo->getAttribute (PDO::ATTR_DRIVER_NAME).$sModel.'.php');

J'espère que j'ai été assez clair ? Sinon je peux faire une source :)

Commentaire de destinyfr le 25/11/2008 18:35:43

Salut

Je crois avoir compris le principe, cependant je veux bien que tu fasse un petit exemple pour que je confirme ma bonne compréhension.
Pour plus d'informations que la façon à laquelle j'avais procédé, les voilà :

- Je dispose d'une classe database (database.class.php) dans laquelle le constructeur récupère les informations de connexion à la base de donnée.
Une fois récupéré, il exécute la fonction startConnexion(); qui demande la connexion à la classe mysql (mysql.class.php) par l'intermédiaire d'une autre fonction (ici : bddTypeConnect() qui elle s'occupe de réaliser la connexion.
Les requettes comme par exemple query fetch obj ce font de la même façon -> dans la classe database, j'ai une fonction qui demande à une autre fonction ce trouvant dans mysql.class.php d'exécuter tel requette. Une fois exécuté je retourne le résultat et je le récupère dans une autre variable puis l'affiche.

Je dispose ensuite de 3 autres fichiers : identClasse.inc.php qui contient les identifiants de connexion à la base de donnée, optionsClasse.php qui contient toutes les options que l'on veut voir (pas encore réaliser, mais voici un exemple : le mode debug) et parametres.inc.php qui contient dans une variable le type de BDD que l'on veut utiliser (il faut donc placer en fonction du nom).

C'est ici que cette page parametres.inc.php va marcher :
Dans mon fichier index, je fais un nouveau objet comme ça : new $bddType (host, pseudo, password, nom, port);

Mais juste avant, je dipose d'une fonction __autoload($selectClassType;) qui inclue la base en fonction de ce que contient $bddType.

Voilà j'espère avoir quand même mieux expliquer ma façon de procéder.

Sinon pour revenir à question, je veux bien voir un petit exemple quand même (pour être sur de partir sur de bonne bases).

Merci pour ton aide :)

Commentaire de codefalse le 26/11/2008 00:08:37 administrateur CS

Voila un petit code mis pour l'exemple : http://www.phpcs.com/codes/GESTIONNAIRE-MODELES-SQL_48539.aspx :) J'attends de tes retours pour avoir ton point de vue :)

Commentaire de vxr888 le 27/11/2008 10:43:47

A vous lire, je suis complètement dépassé par le Web !!!

J'en étais resté au php "basique" et quand je vois ce qu'il faut mettre en place de nos jours, ça relève plus de la prog logiciel que de la prog web !

Le web 2.0 me fait peur !

Commentaire de destinyfr le 27/11/2008 17:40:47

^^ faut y passer pourtant :p et puis la programmation c'est bien aussi :)

Commentaire de vxr888 le 27/11/2008 20:53:23

Mais en quoi PDO est-il mieux ?

Parce qu'implémenter le code pour différents SGBD c'est pas mal pour un CMS mais pour un simple site qui n'utilise qu'un seul SGBD, quelle utilité ?

Et puis, moi il m'a fallu lire en entier les commentaires ci-dessus pour découvrir PDO ; on en parle pas assez et je pense que mysql_connect & friends ont encore de beaux jours devant eux !

Commentaire de destinyfr le 27/11/2008 20:57:42

Pour plus d'informations sur PDO :

http://blog.reflectiv.net/2008/10/21/nutilisez-plus-les-fonctions-mysql_/

Merci codefalse :p

Commentaire de azqsazqs le 29/11/2008 00:56:15

Salut a tous,

je suis moi aussi en train de réaliser un genre de CMS, car je voudrais un truc hyper léger mais 'complétable' facilement aussi je prend note de toutes les remarques notées ici et félicite destinyfr pour son initiative.

Mon projet est loin d'étre terminé (pas si loin, mais j'ai pas le temps en ce moment) et je dois encore résoudre quelques soucis sur des fonction récalcitrante.

Peut etre un jour mon CMS sera complet et je vous le présenterais, sur ce bonne continuataion à tous.

Commentaire de vxr888 le 29/11/2008 01:05:59

@DESTINYFR : Merci pour le lien de CODEFALSE, c'est vrai que je l'avais vu mais je n'avais pas lu l'article en entier (honte à moi...).

Commentaire de destinyfr le 29/11/2008 09:12:03

Salut

@VXR888 : Pas de problème :) mais c'est pas moi qui faut remercier, mais CODEFALSE :)

@AZQSAZQS : Moi non plus il n'est pas fini ^^ ici je n'ai que la version béta (pourquoi je n'ai pas attaqué par alpha ? Bonne question ^^'). Sur mon PC j'ai une version un peu plus avancée (que je ne poste pas maintenant car je souhaiterais avant tout finir mes mises à jours ^^). Cependant, il est vrai que réaliser un CMS demande pas mal de temps ^^ je te souhaite donc bon courage :)

Commentaire de azqsazqs le 29/11/2008 15:05:23

J'ai une petite question quand même. J'ai vu (et apprécié) le lien sur la PDO donné par codefalse, mais concernant la programmation qui sépare html et php, quelqu'un à un lien ?

j'ai souvent recours a des truc comme:

<input name="***" value="<?php echo $valeur_input; ?>"/>

Est-ce du spaghetti, ou un code acceptable ou même un code normal ? Si ça pose problème, comment éviter ce genre de code ?

Commentaire de azqsazqs le 29/11/2008 17:15:43

Pardonnez le double post, mais on peut pas éditer les message (ou apprenez moi comment faire)

Pour un tuto sur la PDO:

http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html

Simple et facile a comprendre.

Commentaire de codefalse le 29/11/2008 23:32:49 administrateur CS

Dire que c'est du code spaghetti, faut voir le reste, mais c'est vrai que c'est pas tip top.
En fait, ce qu'il faudrait faire, c'est mettre tes éléments php dans un moteur de template (comme smarty, tinybutstrong, le tien, du xml couplé à du xsl, etc), et ensuite, dans ton code html (ou xsl), un truc du genre :
<input name="***" value="[my_value]"/>
(les crochets sont pris au hasards et dépendent du moteur de template, ca peux etre des {, [, etc)

Le but est d'empêcher de mélanger du code php, du code html, du code css, du code javascript, des requetes sql. Ca fait beaucoup, mais comme ca chacun son métier. Le designer le html/css, le codeur ajax/php, l'admin db, les requêtes sql.

Mais, je t'avoue, c'est pas forcément très facile ! :)

Commentaire de vxr888 le 01/12/2008 19:56:06

Quelqu'un aurait un document clair complet et concis sur les "moteurs de template" ?

Commentaire de destinyfr le 06/12/2008 08:47:30

moi je n'ai pas dsl :(

Bon j'ai un petit prob sur la classe pour la gestion des membres (récup info, add membre etc...) : Je ne sais pas si je fais les requettes directement dans la classe, dans ce cas la, il y aura beaucoup de fonctions, et dans la page index (exemple), on aurait une requette du type :

$bd->allAccounts('*', 0, 50); -> Champs, début limite, fin limite (par afficher que 50 membres) -> ici sera affiché toutes les informations concernant les 50 premiers membres.

Ou alors je fais comme ça :

$bd->query('SELECT * FROM users LIMITE 0, 50');

$bd->query('SELECT * FROM users WHERE rang=5'); (Pour les bannis par exemple ^^).

Qu'est-ce que vous en pensez ?

PS : Il n'y a pas de BBcode (pour les commentaires) de disponible svp ?

Commentaire de codefalse le 06/12/2008 13:20:25 administrateur CS

Normalement, si on respect le pattern MVC, tu doit avoir un ensembles de classes qui s'occupent des requêtes sql (c'est la partie Model).
De ce fait, tu as ta classe :
class Users extends Model {
   public function getUser ($iId) {
      // Ici tu fait la requete pour récuperer les infos de l'utilisateur ayant l'id $iId
   }
   // d'autres fonctions ici
}

et dans ton controlleur, tu fait :
class ... extends Controller {
   // ...
   public function ... () {
       $oModel = $this->getModel ('Users');
       $oUserInfo = $oModel->getUser (1);
       $this->view->render ('User_Info', 'Bonjour '.$oUserInfo->Prenom.' '.$oUserInfo->Nom);
   }
   // ...
}

view->render pointe sur ton template, ca va remplacer la variable "User_Info" par ce que tu lui as donné.

Bon c'est un exemple vite fait, mais c'est pour donner les grandes lignes.

Pour le bbcode ou quelque chose de similaire, je me bat pour l'avoir, c'est une question de temps :p j'espère ! :p

Commentaire de destinyfr le 10/12/2008 21:58:33

Salut

Merci pour ton exemple sur le pattern MVC ^^ Cependant, j'ai un problème sur cette fonction :

public function listeAccounts($fields, $fetchType, $whereFields, $limStart, $limEnd, array $type, $ordre) {

// On commence à vérifier quel champs non obligatoires sont vides
if(isset($fields, $fetchType)) {
// On prépare la requête
$requetePreparee = 'SELECT '.$fields.' FROM '.$this->tableUsers.'';

if(isset($whereFields)) {
// On prépare la requête
$requetePreparee .= ' WHERE '.$whereFields.'';
}

if(isset($limStart) && ($limEnd != null)) {
// On prépare la requête
$requetePreparee .= ' LIMIT '.$limStart.','.$limEnd.'';
}

if(isset($type, $order)) {
// On prépare la requête
$requetePreparee .= ' ORDER BY '.$type.','.$order.'';
}

// On exécute la requête
$toQuery = $this->_gardePDOInstance->query($requetePreparee);

// On retourne le résultat
return $toQuery->fetch($fetchType);
}
}

Comme tu peux le voir, elle est faite pour récupérer toutes les informations (ou uniquement ce que tu souhaite) sur un membre actuellement. Je n'arrive pas à la faire marcher pour tous les membres (listage complet des membres pour voir par exemple les informations les concernant). Aurais-tu une idée sur la façon de le faire ? (Les boucles while ne sont pas envisageable (ou alors pas encore trouvé XD) étant donnée que je renvoie le résultat de la requête dans return).

J'espère que tu vois ce que je veux faire et j'espère que tu pourra m'aider (toi ou quelqu'un d'autre).

Merci :p

Commentaire de codefalse le 11/12/2008 10:04:17 administrateur CS

Hum, je vois ce que tu veux dire, mais je ne pense pas que tu utilise la meilleure méthode.

Dans ta fonction, tu gère la liste des colonnes à récuperer, la clause where, la clause limit, la clause order, et le type de retour.

Le problème qui survient ici, c'est que tu ne respecte pas le principe KISS (Keep It Simple, Stupid). En effet, la méthode pour gérer les where, limit, order, tu devra les répéter pour chaque fonctions, ca va pas comme ca ! :p

Tu as deux possibilités. Le mouvement du moment, la "mode", te conseillerai d'utiliser un ORM histoire de faire mumuse avec ta base de donnée comme si elle était en objet. Ca vient de Ruby (comme les frameworks, ndlr). Maintenant, c'est très lourd et pas forcément rentable. Tout dépend de la ressource client dont tu aura besoin. Et vu que c'est un CMS, ... a voir ...

L'autre méthode consiste à faire des fonctions spécifiques et leur passer uniquement ce qui est susceptible de changer, genre getUserById ($iId), getUserByRange ($iStart, $iLimit), etc.
Du coup, tu découpe tes fonctions en classe en fonction du type ou de l'usage (class User, class News, etc).

Regarde aussi du coté du système de gestion de News par Fhx par exemple sur ce site, ca devrait t'aider.

Commentaire de destinyfr le 11/12/2008 21:28:49

Salut

Séparer toutes les fonctions, j'y est pensé, cependant j'avais pensé que cela ferait un peut beaucoup quand même (d'où mon idée de faire comme la fonction présente sur mon poste précédent). Par la même occasion, je m'étais dis ceci : Une fois pour chaque, ok c'est cool, mais ci je veux faire un where avec limit ? Il aurait fallut faire encore d'autres fonctions etc...

Éventuellement, je peux faire des fonctions classiques, c'est à dire : getUserById(), getUserLimit(), etc... et laisser l'actuelle pour des requêtes personnalisées :) (comme par exemple mon where+limit :p).

Je vais me pencher un peu plus sur le principe de KISS. Pour un ORM, je ne pense pas que cela soit le plus performant, je vais donc pas en utiliser un.

Je vais aussi aller voir comme tu me la dis, le système de gestion des News de Fhx :p

Je vous tien au courant.

Commentaire de destinyfr le 15/12/2008 18:02:30

Oups j'ai oublié de préciser qu'il y a une petite erreur sur la page enregistrement.php :

#  if (!preg_match($regex_mail, $email, $$email2)) {
# echo INSCRIPTION_EMAIL_SYNTAXE;
# exit();
# }

Il y a deux fois le symbole $ sur $email2. Pour éviter toutes erreurs, pensez à en enlever un.
Devient au résultat :
#  if (!preg_match($regex_mail, $email, $email2)) {
# echo INSCRIPTION_EMAIL_SYNTAXE;
# exit();
# }

Commentaire de destinyfr le 17/12/2008 18:34:08

Alors déjà vraiment désolé pour le triple poste (même si il y a quand même un intervalle entre chaque postes). Je viens juste préciser que la classe Users est finie (éventuellement un bug ou deux est restant). Je m'attaque maintenant à la classe News.

Bonne soirée :)

Commentaire de codefalse le 17/12/2008 20:50:03 administrateur CS

T'inquiete pas, tu n'es pas limité a x post à la suite (sauf si tu le fait en moin de 1 minute :p).

J'attends la nouvelle version alors ! :)

Commentaire de destinyfr le 17/12/2008 21:18:04

Pour la nouvelle version j'hésite encore à la poster tout de suite ou après la plupart des classes crée. De plus le nouveau design n'est pas encore codé XD j'ai abandonné ^^' je sais plus coder xhtml/css :(

Commentaire de destinyfr le 19/12/2008 06:57:07

Bon pour la classe des articles, j'ai mis ces fonctions :

Liste des fonctions :
- Ajout d'un article
- Modification d'un article
- Suppression d'un ou plusieurs article(s)
- Ajout de catégories
- Modification de catégories
- Suppression d'une ou plusieurs catégorie(s)
- Récupération des articles par catégories (Validés et Non Validés)
- Listage des articles par catégories (Validés et Non Validés)
- Liste des articles (tous)
- Listage des catégories (toutes)
- Recherche de résultats (Fonction getAllFetch)

Pour la classe users :

- Sélection de tout concernant un/des membre(s) par :
- L'id
- Une limite
- Un sens de classement
- Comptage du nombre de membres total inscrient
- Modification d'un membre par son ID
- Suppression d'un ou plusieurs membres par ID
- Recherche de résultats (Fonction getAllFetch)
- Vérification de la taille des mots de passes
- Hashage des mots de passes
- Vérification de la taille des pseudo et vérification qu'il n'existe pas déjà
- Vérification de la synthaxe des emails et vérification qu'elle n'existe pas déjà

Je sais que j'ai oublié l'ajout de membre ^^' je vais le rajouter. Que pensez vous que je pourrais rajouter des ces deux classes ? Une classe upload serait-elle utile ? (au moins pour l'administration). Si vous avez des propositions de classes, merci de m'en faire par :)

Bonne journée

Commentaire de destinyfr le 20/12/2008 06:19:52

Ce message est juste pour dire que je ne serais pas la cette semaine. Cependant, je vais continuer à m'occuper du script :)

Commentaire de fedebul le 30/12/2008 16:19:27

bonjour, j'ai une erreur qui s'affiche des l'ouverture de l'index !
Parse error: syntax error, unexpected ')', expecting '(' in /homez.18/jonnyfed/www/CMS/index.php on line 154

et la ligne est :
// Requete sur la table myg_membres (on récupère les infos de la personne)
$requete = $bddConnect->query('SELECT * FROM myg_modules WHERE actif=1');
while($resultat = $requete->fetch(PDO::FETCH_OBJ)) {
$nom_menu = htmlspecialchars(stripslashes($resultat->nom));
$url_menu = htmlspecialchars(stripslashes($resultat->url));
$id_menu = intval(stripslashes($resultat->id));

Commentaire de destinyfr le 30/12/2008 18:55:31

Salut à la ligne 154, c'est cette requête :

$requete = $bddConnect->query('SELECT * FROM myg_modules WHERE actif=1');

Or il faut avoir PDO d'activé pour pouvoir utiliser le cms.

Vérifie que tu l'ai, car moi je n'ai pas de problème.

Commentaire de fedebul le 30/12/2008 18:58:52

ouah ! c'est nouveau pour moi mais c'est quoi PDO et comment fait on pour l'activer et où ?
merci beaucoup à toi
laurent

Commentaire de codefalse le 30/12/2008 20:23:21 administrateur CS

@Fedebul : j'avais fait un article sur mon blog pour justement expliquer ce qu'est PDO. Tu peux peut-être le lire histoire d'y comprendre mieux ? :)

Voici le liens :
http://blog.reflectiv.net/2008/10/21/nutilisez-plus-les-fonctions-mysql_/

Commentaire de destinyfr le 31/12/2008 09:36:23

Est-ce qu'il y a un moyen de vérifier si un utilisateur à PDO d'installé sur son serveur (comme pour flash sur son PC) ?

Commentaire de codefalse le 31/12/2008 11:59:55 administrateur CS

<?php if (class_exists ('Pdo')) {echo 'ok';}?> je suppose :p

http://fr.php.net/manual/fr/function.class-exists.php

Commentaire de destinyfr le 31/12/2008 12:48:44

Sa me parait un peu simple, j'en avais déjà entendu parlé, mais je pensé pas que sa marcherais :o (jamais testé ^^).

Je suis pas toujours convaincu, mais je vais tester sur 2 serveurs différents (free doit pas avoir PDO :D)

Commentaire de destinyfr le 02/01/2009 17:07:32

Salut

Effectivement, sa marche ^^

Par contre j'ai une petite (grosse ?) erreur dans ma classe upload :s :

Fatal error: Cannot use object of type PDO as array

Comment je pourrais faire pour éviter ce type d'erreur svp ? Et si quelqu'un peux me dire qu'est-ce que c'est aussi svp ?

Merci beaucoup

Commentaire de destinyfr le 03/01/2009 17:11:17

Bon je n'aime pas poster comme ça à la suite, mais c'est juste pour dire que le design est en cours de découpe (le nouveau), je pourrais par conséquence faire la release qui va arriver d'ici peu avec ce nouveau design.

Je vais aussi regarder comment marche le modèle MVC, mais je ne pense pas que cela soit très dur.

Est-ce que comme sa c'est correcte :
$this->view->render('User_Name', ''.$oUserInfo->Prenom.' '.$oUserInfo->Nom); (méthode de codefalse) => <p>Posté par {User_Name}</p>

Merci de répondre.

Pour le moment, la release ne comprendra pas toutes les classes, juste les principales (en attendant que tout marche à 100%).

Commentaire de codefalse le 03/01/2009 17:20:14 administrateur CS

Oui, bien sûr que c'est possible, faut voir ce que propose le système de vue mis en place cependant !

Si tu utilise smarty, tbs, celui de phpbb, l'un des tiens, etc :)

Commentaire de destinyfr le 03/01/2009 19:26:02

Bin actuellement, je souhaitais juste voir si c'était possible :) ^^

Smarty est un peu lourd d'après ce que j'avais pu lire je me trompe ?
PHPBB, je ne sais pas ce qu'il vaut et tbs, je ne connais pas ^^

Commentaire de codefalse le 03/01/2009 20:12:19 administrateur CS

Smarty est en effet un peu lourd. La partie Phpbb en tant que moteur de template est celle que de nombreux templatiste tentent de refaire encore et toujours, à savoir les {var} dans des <!-- blocs -->

En même temps c'est ce qui marche le mieux :p

Commentaire de destinyfr le 09/01/2009 17:30:38

Je suis désolé pour le temps que cela prendre, mais je n'ai toujours pas le design de découpé (ce n'est pas moi qui m'en occupe), car le codeur est un peu débordé en ce moment.

Commentaire de vxr888 le 22/01/2009 20:26:26

Ah, ton projet est devenu un projet contributif ?

Commentaire de destinyfr le 22/01/2009 22:39:14

Salut
Qu'est-ce que tu entends par la stp ? De plus je n'ai toujours pas le design :'(
Bye

Commentaire de vxr888 le 24/01/2009 18:11:36

Bah open source c'est une appelation mais elle est souvent utilisée abusivement alors que dans le cas de ton projet, si j'ai bien compris, tout le monde peut y contribuer...

Je me faisais la remarque car beaucoup disent leur projet open source "parce qu'ils partagent le code à la demande" ; ce qui est la définition mot à mot d'open source mais en réalité l'open source c'est du développement ouvert à tous...

Commentaire de destinyfr le 24/01/2009 19:05:20

oui exacte, mais il faut quand même une base ^^ après si tu veux contribué en proposant par exemple des classes ou des améliorations, elles seront bien entendus mis en place sauf si inutile XD et tu pourra aussi rajouter ce que tu veux :)

Commentaire de destinyfr le 05/02/2009 20:13:18

Bon je n'ai toujours pas le design :s:s:s:s:s:s:s:s:s:s:s (commence à faire long la), cependant moi je continu à créer des classes ^^ bon je code pas comme un fou, j'avance doucement, je code quand j'ai du temps :)

J'ai déjà réalisé la gestion multilangue, donc à ce niveau pas de problème, il suffit juste de crée les fichiers maintenant :) (XML utilisé).

Bon après me reste deux fonctions (facture et envoie des données contenant le panier de la personne dans le panel admin) à réaliser sur la classe panier (vente en ligne).

Le captcha je le refais en un peu plus sécurisé mais pas encore fini (reste juste la fonction pour générer l'image à faire ^^). Actuellement je suis sur une classe permettant de créer des archives zip (utilisation de la librairie zip), j'avais pensé à une classe gérant les sessions, mais qu'elle en est l'utilité ?

Je souhaite réaliser une classe permettant d'avoir les informations concernant le système du membre, c'est à dire par exemple l'espace disque restant, la bande passante utilisée etc... mais je ne connais aucune fonction la dessus xD (à part pour l'espace disque ^^').

Je veux surtout faire la classe de gestion des groupes, mais la vient un problème :( j'avais pensé binaire, mais pour les modifications, sa oblige à tout refaire :( finalement, je vais opter pour une gestion dynamique, mais la façon dont je souhaite procéder est encore un peu flou :(

Ensuite, si quelqu'un sait comment réaliser une fonction permettant de savoir si sa version du script est à jour, et si ce n'est pas le cas, pouvoir faire la mise à jour SANS avoir à retélécharger le script, je souhaiterais bien savoir (si il/elle veut bien le dire) comment réaliser cela !

Vous souhaitez peut-être voir une classe qui pourrait-être utile selon vous ? Dans ce cas la proposez la moi, je verrai ce que je peux faire :p

Voilà merci de répondre :)

PS : BBcode pour quand :D ?

Commentaire de aKheNathOn le 06/02/2009 10:36:53

Salut destiny,

Tout d'abord bravo pour l'activité et ton assiduité autour de ce projet.

Concernant le système de mise à jour rien de plus simple qu'un fopen avec par exemple en argument l'url de ton site et la version en cours en argument.

Ce qui est complèxe c'est de bien isoler la partie système de la partie personnalisation, et la ça ne concerne pas seulement le  design, mais également les modules ou tout autre élément de customisation. C'est là que réside le vrai chalenge.

En regardant ton code par exemple, ce qui me frappe c'est qu'il n'y a pas d'orientation services ou SDK, donc clairement un module gére tout seul l'ensemble fonctionnel (et même l'affichage) du coup les modules ne feront jamais partie des évolutions à moins d'écraser les évolutions de chaque utilisateur.

De plus, tu n'instaure pas de contrat (interfaces extensibles) et du coup y'à pas de formalisme de type plugin, du coup les évolutions du coeur du système ne seront pas maitrisées ou maitrisables, donc c'est au bonheur la chance de savoir si cela va impacter ou non les modules en place.

Tu as mis le moteur PDO en place, ce qui est excellent, parcontre tu ne l'as pas encapsulé dans une classe, or tu deviens donc dépendant de ce module - penses à faire des niveaux d'abstraction au maximum.

D'autre part, chaque requette SQL est directement dans divers fichiers ce qui pose le problème de l'évolution des bases et l'impact sur le fonctionnement et les fichiers. Il faut les centraliser, sans pour autant faire de l'ORM, mais juste faire un fichier par table, puis des fonctions paramétrées qui exécutent ces requêtes, dans le principe des procédures stockées. Lors d'une migration ou prises en charge entre mysql vers mssql ou oracle, une simple commande LIMIT start, len devient un casse tête chinois.

Concernant la partie administrative, pas assez de boutons de navigation dans l'interface (le chemin en cours serait une bonne chose), pas de bouton de d'ajout (exemple liste de news).

D'autre part il manque un style sur les datagrid d'édition, ainsi que des fonctions de filtre (recherche) et de tri par colonne.

En regardant la source php d'une page de listing on y voit la requette ainsi que la construction HTML du tableau.

Tu devrais en faire une classe, en lui passant en argument les données constituant ton tableau. Ce serait à sa charge de générer le contenu.

Dans ce jet c'est à peu prés tout, ce qui est le plus dommage c'est le manque de classes et de POO, cela risque de limiter pas mal de choses, et en rendre fastidieuses d'autres.

Bon courage pour la suite, et si tu veux un coup de main pour la POO n'hésites pas.

Bonne prog,
akh

Commentaire de aKheNathOn le 06/02/2009 13:09:37

CF :
http://www.phpcs.com/codes/PAGE-SETUP-PORTAIL-CMS-MY-GESTION_49197.aspx

Pour illustrer mes propos au niveau objet, et du même coup contribuer à ton projet en te proposant un setup automatique.

Commentaire de destinyfr le 06/02/2009 17:14:12

Salut aKheNathOn

Déjà merci pour t'es remarques et ton lien :)

Concernant le code que tu as vu, il n'est plus du tout à jour (celui présent ici), en effet j'ai la version POO du CMS sur mon PC, cependant le design qui est maintenant en découpe depuis plus de un mois, n'est toujours pas fini (le codeur manque de temps donc il ne peut pas trop bosser dessus). C'est donc pour cela que je ne peux pas envoyer la nouvelle version, le CMS n'a pas encore de design.

L'autre version gère les connexions PDO (mysql, postgresql, sqlite etc...) grâce au script que CodeFalse : http://www.phpcs.com/codes/GESTIONNAIRE-MODELES-SQL_48539.aspx (Son copyright est présent !), que je trouve très bien et donc que j'ai repris (si tu souhaite que je l'enlève, dit le moi). Je le remercie encore une fois pour ce script !

En faite, lorsque la connexion à la base de donnée est établie, on va pouvoir "charger" (quoi que c'est bien un peu ça ^^) des classes étendues à la classe Model. Ces classes pourraient-êtres assimilées à des modules, car chaque classe permet d'ajouter des fonctions au CMS (par exemple la classe Users contient tout un tas de fonction pour la gestion des utilisateurs, la classe Article pour les articles etc...). (je sais pas pourquoi mais j'aurais ajouter un Et? ici oO finir de cette façon fait zarb).

A côté de cela, une classe Template (bon c'est pas le top du top, il y a surement beaucoup de chose à ajouter) est là pour permettre de séparer html et php.

Une classe de gestion des langues par fichier XML est aussi présente.

Bref après ce hors sujet xD j'ai pas eu trop le temps de voir ta classe, je ne rentre que :) cela me semble en tout cas très bien :) cela te dérange-t-il si je la réutilise ?

Je vous tien au courant :)

Commentaire de aKheNathOn le 06/02/2009 17:23:25

Un conseil, fais un max de réutilisation des codes-sources déjà disponibles, ils sont là pour ça, et ça t'aidera forcément à avancer en étudiant leur manière de coder (ça me ferais même plaisir que tu l'utilises pour faire un setup PHP d'install de ton CMS).

Concernant la classe de codefalse, t'as très bien fait, c'est une très bonne structure et une bonne orientation technique (c'est souvent le cas avec les sources de codefalse entre autres).

Bonne prog et préviens-nous quand les sources PHP seront à jour,
Akh

Commentaire de destinyfr le 06/02/2009 18:52:33

Bin de toute façon, même si le design n'est pas prêt, je code tranquillement mes classes :) je viens aussi de penser à une classe de statistiques (pour les statistiques du site ^^) cependant, je pense faire les diagrammes et camembert en 3D, cela pourrais poser un problème pour certaines personne si je me trompe pas, il faudrait donc que je fasse aussi en 2D (change pas grand chose ^^).

Merci bien, dans ce cas la je vais réutiliser ton code pour l'installation auto :) merci beaucoup (je vais juste faire quelques modifications pour l'adapter :) ).

Je vous tien au courant.

Commentaire de codefalse le 06/02/2009 21:53:22 administrateur CS

Plop :)

Plein de choses à raconter ! :p (holà ! on dirait un blog ;))

Tout d'abord, merci @Destinyfr d'utiliser mon travail, ca fait plaisir :). Ca fait aussi plaisir d'entendre dire que mon code est plutôt bon (Merci à vous, @Destinyfr & @Akhenathon :)). Par ailleurs la licence n'est là plutôt que pour éviter des problèmes (vraiment au cas où), mais tu n'est pas obligé de reprendre la même licence, tu peux la changer, ca ne me dérangera pas :) (et du coup, non, tu ne me dérange pas d'utiliser mon code, bien au contraire, n'hésite pas, comme l'à dit Akhé, c'est ce qu'il faut faire ! Tout ce qui à déjà été fait, validé, éprouvé, c'est du travail en moin ! :)).

Maintenant, il y a un point qui me perturbe. Tu dit attendre de ton graphiste pour le design du site. Mais c'est la partie admin ou publique ? Car si c'est la partie publique, elle doit être obligatoirement réalisée à l'aide d'un moteur de template de façon à ce qu'elle soit modifiable à souhait. Du coup, pas besoin d'attendre sur elle.

Si c'est la partie admin, tu peux aussi t'inspirer des templates de oswd :
www.oswd.org

Sinon, une petite recherche sur google avec "admin template" te retourne de bons liens :
http://nettuts.com/articles/general/7-awesome-admin-themes-to-skin-your-next-client-app-via-themeforest/ ==> que je te conseil (bon, après, themeforest est un site de template payant, à toi de voir !)
http://www.webresourcesdepot.com/free-admin-template-for-web-applications/
http://www.mostinspired.com/blog/2008/10/11/admin-templates/
http://nettuts.com/articles/web-roundups/the-30-most-usable-themes-from-themeforestnet/

Ensuite, pour ce qui est des diagrammes, base toi sur ce qui est déjà existant. Je te conseille la librairie gratuite et opensource Open Flash Chart ! Elle est en flash (ca peux peut-être gêner, mais quand tu aura vu les effets et les possibilités, tu va vite oublier :p Et tout le monde à flash aujourd'hui !).
Voici l'url : http://teethgrinder.co.uk/open-flash-chart/
Sinon, tu peux toujours de baser sur des librairies type jpgraph, mais bon, tout de suite moins intéressant !
Tu peux aussi passer par l'api de google, mais ca m'énerve de toujours leur transférer des données, ils récoltent tout, j'aime pas ca :p

Enfin voilà ! Si tu veux des informations sur un point particulier, n'hésite pas, je (et je ne pense pas être le seul) y répondrais avec plaisir !
C'est rare de voir quelqu'un continuer dans un projet avec autant de perséverance ! Et tu ne peux pas nier que tu aura appris beaucoup de choses ? ;)

Commentaire de destinyfr le 06/02/2009 22:29:42

Salut CodeFalse :)

Donc comme tu veux bien que j'utilise ton code, je vais le garder :) merci beaucoup :p

Ensuite concernant le design, il est déjà crée, j'attends uniquement la découpe de celui-ci (déjà découpé, mais extrêmement buggé), de plus les images sont toutes petites par rapport à l'image dans le PSD, donc il va falloir revoir toute la découpe :(

Ensuite, le design sera le même pour la partie administration et publique ^^ et le codeur s'occupe uniquement de la découpe, moi je vais devoir m'occuper de l'intégration ^^ (donc ajouter mes {TITRE_PAGE} par exemple).
Ensuite d'autres thèmes seront à disposition (peut-être pas dès le début :) mais ça viendra).

Pour la liste de lien pour les thèmes, je vais aller voir ça merci bien :)

Ensuite pour les diagrammes, la libraire flash que tu m'a donné va peut-être (très fortement même ^^) m'intéresser :D je vais me pencher sur celle-ci :)

Et pour répondre à cette question :

Et tu ne peux pas nier que tu aura appris beaucoup de choses ? ;)

C'est le cas de le dire, j'ai appris (niveau orthographe un peu moins :D) énormément de choses même :) surtout au niveaux des classes (même si il reste beaucoup de choses que je ne maitrise pas encore ^^) et surtout grâce à vous :) et à votre aide et vos conseilles !

Commentaire de destinyfr le 07/02/2009 17:12:22

Désolé du double post, mais j'ai un problème sur la gestion des groupes :s je ne sais pas comment opérer :

Je vois bien de cette façon :

Une table permissions contenant les groupes avec le droit necessaire.

La table Users avec deux champs : Groupe et Droits, ensuite via une vérification on donne tel ou tel option

Pensez-vous que ce soit la meilleur façon ?

Avez vous une autre proposition à me faire ? Si oui je veux bien :)

Merci bien :)

PS : Pour les statistiques je vais adopter la librairie que tu m'a donné :D

Commentaire de codefalse le 07/02/2009 20:02:10 administrateur CS

Est-ce que tu utilise Linux ?
En règle générale, un utilisateur peux appartenir à plusieurs groupes (et oui ! :p).
Personnellement je le vois comme ca :
Une table droit, qui définit ce que tu peux faire (add news, modify news, delete news, modify own news, delete own news, modify all news, delete all news, etc (ca peux faire long)), un table group, qui contient le nom du groupe et l'id, et une table rights_for_group, qui contient les id du group et les droits qu'il a.
Ensuite tu fait une table user_in_group, qui va lister l'id de l'utilisateur et ses id de groupes.
Tu fera ensuite une table users_rihts, qui contiendra l'id de l'utilisateur et ses droits (pour les droits de l'utilisateur, pas des groupes).

Personnellement, c'est comme ca que je le ferai, sans trop réfléchir là tout de suite, j'aimerai avoir l'avis des autres. Parce que dans cette conception, le problème c'est q'il faut déterminer dans ton code, le droit, quelle action il autorise (add news, il va pas deviner, ton code, que ca veux dire "ajouter une news est autorisé" :p).

Ce n'est pas un double post que tu as fait, tant que tu met pas la même chose dedans à chaque fois :p

Commentaire de destinyfr le 07/02/2009 20:29:57

Merci pour ta proposition, je veux bien avoir l'avis des autres aussi ^^ cependant (et c'est ici que mon problème était aussi) si j'ai par exemple 10000 groupes et que sur ma page je dois vérifier si il est dans ce groupe ou celui la etc... et la même chose pour les droits, je n'ose même pas imaginer le bordel :(
Mais le problème c'est que je ne vois pas comment réaliser cela sans avoir 40 lignes de code dans chaque page. Peut-être utiliser une session contenant les groupes et une autre les droits :

Groupe1|Groupe2|Groupe3 etc...
Droit1|Droit2|Droit3 etc...

Ensuite arrivé sur la page => $permission->checkUserPerm($_SESSION['groupes'], $_SESSION['droits']); et ensuite dans la classe, je m'occupe de récupérer les groupes et droits, et je retourne un boolean permettant l'accès ou non ? (un peu flou quand même cette façon de procéder). Enfin je ne pense pas que cette solution soit la meilleur :s

Quelqu'un à mieux à proposer svp ?

Commentaire de destinyfr le 08/02/2009 21:13:05

Bon j'ai une bonne nouvelle (enfin deux ^^ et une mauvaise) à annoncer ! (grrr j'aime pas poster plusieurs fois dessuite :( comme ça !)

J'ai un design très jolie (simple ok mais le rendu est très bien) réalisé par Bryou, et je suis actuellement en train de réaliser l'intégration (donc je peux enfin voir le résultat :)), je le remercie énormément, car il m'avait réalisé ce design en tant que thème sur le site, et il va donc devenir le thème principal du CMS.
Le design est dans le style blog, mais ce n'est pas grave :)

Bon sa c'était la première nouvelle :) la deuxième concerne un autre projet que je vais réaliser : une plateforme de blog.

En effet celle-ci marchera avec le CMS via une classe Blog, qui s'occupera de créer le blog de la personne etc...
Le nom de domaine est déjà crée ^^ pas encore révélé :) cela viendra plus tard.

Bon j'ai dit qu'il y avait une mauvaise nouvelle ^^ celle-ci concerne la classe Blog, elle ne sera pas distribué tout simple parce que je n'ai pas envie de voir 40 nouvelles plateformes de création de blog apparaitre.

Voilà d'autres informations seront données en temps et en heure.

Commentaire de codefalse le 08/02/2009 23:30:52 administrateur CS

Déjà, tu as le droit de poster autant de commentaires que tu veux à la suite, tant que tu met pas 50 fois le même :p

Ensuite, c'est une bonne nouvelle pour ton graphisme, mais je suis perturbé sur ta mauvaise nouvelle, je l'ai pas comprise :p Pourrais-tu l'expliquer différement ?

"Distribué tout simple" ? Tu veux dire proposée indépendement du cms ?
Et en quoi ca te dérange que 40 nouvelles plateforme de blog apparaissent ? si elles utilisent ton système ?

Non, vraiment, j'ai besoin de plus de détails :p

Commentaire de destinyfr le 09/02/2009 00:02:56

Salut :)

Déjà j'ai même pas écrit le mot en entier ^^ (la fatigue :p), je voulais marqué "tout simplement".

En faite, beaucoup de personnes recherchent des scripts à la style skyrock (pour pouvoir proposer à des membres de créer leur blog par exemple), il est vrai qu'il en existe, mais ils sont quand même assez vieux (enfin pour ce que j'ai pu voir ^^). Cependant, comme je souhaite réaliser ma propre plateforme de création de blog, cette classe sera exclusivement réservée au site. Je ne vais donc pas la proposer en téléchargement comme je pourrais faire pour une autre classe.

Voilà, si tu souhaite plus de détails sur quelque chose, n'hésite pas :) (cependant, la réponse sera demain ^^ je vais dormir la :p).

Bonne nuit tout le monde :)

Commentaire de destinyfr le 21/02/2009 11:13:15

Bon j'admets que c'est long à arriver, mais faut dire que j'ai perdu du temps en essayant de recréer des classes pour colorer les portions de codes, or il en existent de très bon sur le net xD j'en est donc repris 1 en javascript :

http://alexgorbatchev.com/wiki/SyntaxHighlighter:Usage

Si vous avez mieux à proposer, merci de me le dire :)

De plus, je pense faire une classe de gestion du FTP en ligne (déjà attaqué), un explorateur FTP en quelque sorte, avec comme fonctionnalité :

- Listage des répertoires et fichiers (heureusement xD)
- Création de nouveaux dossiers et fichiers
- Les renommer
- Les copier
- Les couper
- Les dupliquer
- Les supprimer
- Les déplacer
- Lecture des fichiers en ligne (le code sera coloré)
- What else ?

Bien sur je ne sais pas si tout ceci est possible via PHP xD je le verrais bien plus tard ^^.

Pour la classe blog, une version "light" sera distribué en attendant que je me décide à mettre la version originale en distribution public ^^'

J'ai changé le système de pagination pour en mettre un de ce type :

<< Précédent 1 2 ... 5 6 7 ... 10 11 Suivant >> (paramétrable)

A part cela, je ne pense pas avoir autre chose à dire (bien qu'un oublie me tourmente l'esprit actuellement :o).

Je risque de mettre quelques temps pour les modifications et autres, parce que déjà les cours reprennent ^^ donc je m'occupe des cours avant le CMS ;) et j'apprends aussi C/C++ parce que php me soule à force (ce CMS est supposé être la derniers chose que je vais faire concernant PHP => ça veut pas dire qu'il va sombrer au fin fond de google !), j'ai envi de changer un peu (je compte surtout faire de l'algorithme, ça me semblait passionnant, enfin c'est mon opinion ^^ => bon y a aussi le fait de pouvoir créer des programmes :p (j'ai toujours rêvé de pouvoir créer un programme ^^ ne serait-ce que pour afficher les informations sur l'espace restant sur son disque dur etc...).

Bref voilà tout ^^ concernant le CMS, si vous avez des idées de choses pouvant être faite, n'hésitez pas ^^.

Commentaire de destinyfr le 21/03/2009 19:56:19

Bon ce message est juste pour dire que la plateforme de blog va bientôt être opérationnelle :) je crée les pages manquantes, ensuite elle sera en ligne :) les blogs fonctionnent :)

Commentaire de destinyfr le 13/04/2009 22:55:15

Bon la plateforme blog est ok :)
Je rajoute juste quelques fonctions ajax par ci par la histoire de rentre plus attractif :)
Je pense que je vais m'occuper de la plateforme e-commerce par la suite, mais me faut un design :s et je n'ai pas.
Pour le cms, il est toujours en stand by parce que j'ai toujours pas la classe de gestion des groupes et droits :( de plus le codeur qui voulait bien m'aider à la réaliser a lâché l'affaire :(

Voilà dès qu'il y a du nouveau je vous dit.

Commentaire de destinyfr le 28/04/2009 17:35:34

Bon du nouveau : j'ai revenu la classe de gestion des langues via fichier XML, j'ai crée ma classe de gestion des groupes, je me suis aussi occupé de la gestion de la maintenance.

Je m'excuse pour le temps que je prends, mais j'ai pas énormément de temps libre avec les cours. J'essaie tout de même d'avancer quand j'ai un peu de temps.

Bonne journée

Commentaire de destinyfr le 01/05/2009 10:02:46

Design enfin découpé et codé :D merci GC de découpe fr ^^

Voilà ce qui est ok :
Articles
Groupes
Explorateur FTP
Maintenance
Multilingue
Pagination
Sessions
Utilisateur
Template
Youtube
Commentaires
Blog (pour moi xD)
Amis (pour moi xD)
Panier (plateforme e-commerce)

Voilà ce qui est en cours :
Forum
Zip
Les balises de code (parser XML) => buggé pour le moment, je vais essayer de le corriger aujourd'hui ^^ ça vient du XML :p
Captcha (fonctionnelle mais le code en session est différent du code sur l'image oO => la sessions comporte le code précédent :o)
Upload

Voilà juste pour vous dire ce qu'il en est concernant les classes.

Commentaire de destinyfr le 18/06/2009 18:31:04

Bon je crois que je vais laisser tomber, je n'ai vraiment pas le temps et l'envie de le continuer seul. Éventuellement peut-être que si je trouve une équipe, il ce terminerai mais la c'est pas le cas donc on va laisser tomber pour le moment (en plus beaucoup de travail pour les années à suivre).

Désolé. Je supprime ce sujet ce soir vers 23h - 24h.

Merci à vous tous pour m'avoir tout de même bien aidé !

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 2,122 sec (4)

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