Besion d'aide pour créer un CMS

[Résolu]
Signaler
Messages postés
6
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
1 mai 2008
-
Messages postés
6
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
1 mai 2008
-
Bonjour,

Je suis en train de développer un CMS (Content Manager System) en PHP5, le tout est évidement orienté objet.
Mais n'étant qu'à mes débuts en POO, j'ai quelques problèmes que je n'arrive pas à résoudre.
Alors voilà, j'ai une classe que j'ai nommée DbConnector qui permet de se connecter au serveur MySQL et d'envoyer des requêtes dont voici la partie interressente :

    public function __construct() {
        $this->link = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, FALSE)
        or die(' Connexion au serveur MySQL impossible !

Une erreur est survenue lors de la connexion à la base de données, veuillez rafraîchir la page afin de réessayer.
');
        mysql_select_db(DB_NAME) or die('Base de données introuvable !');
        register_shutdown_function(array(&$this, 'close'));
    }

    public function query($query) {
        $this->globalQueriesCounter++;
   
        $deb = microtime(true);
        $result = mysql_query($query, $this->link);
        $fin = microtime(true);

        $this->globalQueriesTimer += ($fin - $deb) * 1E3;
                if($errno mysql_errno($this->link) 0) {
            return $result;
        }
        else {
            die('Erreur SQL '.(LOCAL ? $errno.' :
'.$query.'
'.mysql_error() : '!').'');
        }       
    }

J'ai aussi une autre classe Article qui permet de gérer des articles.
Donc pour récupérer un article contenu dans ma base de données, j'ai une fonction du genre :

    public function getArticle() {
        $db = new DbConnector();
        $result = $db->query(
        'SELECT * FROM articles '.
        'WHERE category=\''.$this->category.'\' AND sub_category=\''.$this->subCategory.'\''
        );
       
        if($db->numRows($result) === 0) {
            return 'Article introuvable !
';
        }
        else {
            $article = $db->fetchObject($result);
            return(array(
            'category' => $article->category,
            'subCategory' => $article->sub_category,
            'creationDate' => date('j/m/Y', $article->creation_date),
            'editionDate' => date('j/m/Y', $article->edition_date),
            'revisionNo' => $article->revision_no,
            'title' => $article->title,
            'contents' => self::formatContents($article->contents),
            'text' => stripslashes($article->text)
            ));
        }
    }

Le problème se situe dans ma classe DbConnector lorqu'il faut compter le nombre de requêtes et le temps qu'elles ont mis à s'éxécuter, en effet, lorsque je fais $this->globalQueriesCounter++; j'incrémente bien mon compteur mais seulement pour mon instance créée avec $db = new DbConnector(); donc lorsque j'affiche mon compteur à la fin du script je n'ai pas le nombre total de requêtes mais seuelement celui de mon instance.
Donc je voudrais savoir comment faire mon remédier à ce problème. Je suis ouvert à toute proposition même s'il s'il faut recommencer mon CMS à zéro car il n'est pour l'instant pas encore très important.
De plus, si vous connaissez un CMS bien codé en PHP5 et assez petit pour que je puisse le comprendre facilement, n'hésister à m'en faire part.
Merci beaucoup

4 réponses

Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
il faut utiliser une variable static...
petite remarque ... mysql pour seul DB d'un CMS... pas top
(joomla, e107, plume,...)

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Je ne t'en conseille aucun, je te conseille une abstraction de de DB. qu'on n'ai pas a changer bcp de choses pour que ça marche avec mssql, postgresql, ...

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Messages postés
6
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
1 mai 2008

Merci beaucoup, ça marche nickel.
Je pensais que tout ce qui était "static" générait une erreur de niveau E_STRICT mais apparemment cela ne concerne que les méthodes statiques et pas les propriétés.

Sinon, pourquoi dis tu que MySQL n'est pas top pour un CMS, j'ai déjà testé Joomla, Drupal, Haricow... ils utilisent tous MySQL. Quel SGBD me conseille tu d'autre ?
Messages postés
6
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
1 mai 2008

En effet, c'est une bonne idée. Je n'avais pas compris ce que tu voulais dire au début.
Je vais suivre ton conseil.
Encore merci.