IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Demande d'avis sur méthode de prog.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut Demande d'avis sur méthode de prog.
    Bonjour,

    Je suis en train de réalisé un CMS, sachant pertinemment qu'il en existe déjà beaucoup et mieux fait. Mais, dans la mesure où je réalise celui-ci tout seul chez moi, je ne peux pas vraiment savoir si je m'y prends de la bonne manière. C'est pourquoi je poste ce message.
    Je ne sais pas si je mets en pièce jointe ce que j'ai fait ou bien si il vaut mieux que je mettes des morceaux de code dans ce message.
    En espérant avoir été compréhensible.
    Merci d'avance de vos réponses.

  2. #2
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !

    Une question simple : pourquoi réinventer la roue ?

    Comme tu le dis il existe de très nombreux CMS... Donc hormis pour le simple "plaisir" de développer, ou d'apprendre, mieux vaut partir sur un CMS existant si tu souhaites créer un site web, non ?

    Ceci dit, tu pourrais commencer en présentant quelques bouts de code associés à des explications pour que l'on puisse comprendre comment fonctionne ton application.
    A++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut
    En fait effectivement, je fais ceci dans le simple but de développer ou plutôt de développer proprement.
    Donc, le principe est de gérer des articles appartenant à des rubriques. On peut associer un article à un thème. J'ai été au plus simple.

    Je vais essayé d'expliquer ma démarche pour ajouter un thème par exemple.
    Avant tout, il y a une authentification à la page d'accueil de la partie administration, puis je créé un objet $utilisateur que je passe par session.
    Je vais aussi vous définir le "squelette" de la partie que e vas décrire :
    - admin
    - theme.php
    - theme_liste.php
    - theme_ajout.php
    - classes
    - Theme.php
    - ThemeTable.php

    Quand on clique sur le menu thème (lien vers theme.php?mode=list), on affiche la liste des thèmes et la possibilité d'ajouter un thème. Si on clique sur ajouter (lien vers theme.php?mode=data_add), on affiche à côté de la liste des thèmes un formulaire d'ajout qui, une fois validé, renvoie vers theme.php?mode=add.

    Donc voici une partie du fichier theme.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    // Je ne sais pas pourquoi j'ai dû utiliser la fonction stripslashes deux fois (???)
    $utilisateur		= unserialize (stripslashes(stripslashes($_SESSION ['utilisateur'])));
    $themeTable		= new ThemeTable ($bdd);
    $langueTable		= new LangueTable ($bdd);
     
    $mode = "list";
    if (isset ($_GET ["mode"])) { $mode = $_GET ["mode"]; }
     
    //------------------------------------------------------------------------------------//
    // MODE : list
    //------------------------------------------------------------------------------------//
    if ($mode == "list")
    {
            // A voir éventuellement plus tard la manière dont je gère les droits utilisateur.
    	if ($niveau_ut_sel < 1)		{ exit ("Droit insuffisant."); }
     
    	require_once 'header.php';           // L'entête et le menu des fonctionnalités.
    	require_once 'theme_liste.php';    // La liste des thèmes.
    	require_once 'rien.php';               // Un fichier qui me sert à combler l'espace vide.
    	require_once 'footer.php';            // le bas de page.
    }
    //------------------------------------------------------------------------------------//
    // MODE : data_add
    //------------------------------------------------------------------------------------//
    if ($mode == "data_add")
    {
    	if ($niveau_ut_sel < 2)		{ exit ("Droit insuffisant."); }
     
    	require_once 'header.php';
    	require_once 'theme_liste.php';
    	require_once 'theme_ajout.php';    // Formulaire de saisie d'un thème.
    	require_once 'footer.php';
    }
    //------------------------------------------------------------------------------------//
    // MODE : add
    //------------------------------------------------------------------------------------//
    if ($mode == "add")
    {
    	if ($niveau_ut_sel < 2)		{ exit ("Droit insuffisant."); }
     
    	$libelle		=	Outils::chaineSauvegarde ($_POST["libelle_th"]);
    	$actif		=	$_POST["actif_th"];
     
    	$theme = new Theme($libelle, $actif, $nb_theme+1);
    	$theme = $themeTable->insert($theme);
    	$nb_theme++;
     
    /* message.php permet d'afficher un message et de rediriger l'utilisateur sur une autre page (en l'occurrence, ici la page de modification du thème ajouté).*/
    	$titre			=	"Ajout";
    	$location		=	'theme.php?mode=data_update&th='.$theme->getId();
    	$message		=	"Ajout correctement effectu&eacute; !";
     
    	require_once ("message.php");
    }
    Je vais vous mettre une partie des fichier Theme.php et ThemeTable.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class Theme
    {
    	private			$id;
    	private			$libelle;
    	private			$actif;
    	private			$ordre;
     
    	public function __construct			($aLibelle, $aActif, $aOrdre)
    	{
    		$this->libelle		= $aLibelle;
    		$this->actif		= $aActif;
    		$this->ordre		= $aOrdre;
    	}
            // Ensuite cette classe contient uniquement les accesseurs des variables d'instance
    }
    Là encore, je ne mets qu'une partie du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    class ThemeTable
    {
    	private			$lastInsertId;
    	private			$selectAll;
    	private			$selectById;
    	private			$insert;
    	private			$update;
     
         public function __construct					($bdd)
        {
        	$this->lastInsertId			= $bdd->prepare ("SELECT LAST_INSERT_ID() as id");
        	$this->lastInsertId			->setFetchMode(PDO::FETCH_ASSOC);
     
            $this->selectAll			= $bdd->prepare ("SELECT id_th, libelle_th, actif_th, ordre_th FROM table_theme ORDER BY ordre_th ASC");
            $this->selectAll			->setFetchMode(PDO::FETCH_ASSOC);
     
            $this->selectById			= $bdd->prepare ("SELECT id_th, libelle_th, actif_th, ordre_th FROM table_theme WHERE id_th = ?");
    		$this->selectById			->setFetchMode(PDO::FETCH_ASSOC);
     
            $this->insert				= $bdd->prepare ("INSERT INTO table_theme (libelle_th, actif_th, ordre_th) VALUES (:libelle, :actif, :ordre)");
    		$this->insert				->setFetchMode(PDO::FETCH_ASSOC);
     
            $this->update				= $bdd->prepare ("UPDATE table_theme SET libelle_th = :libelle, actif_th = :actif, ordre_th = :ordre WHERE id_th = :id");
            $this->update				->setFetchMode(PDO::FETCH_ASSOC);
        }
     
        public function lastInsertId				()
        {
        	$this->lastInsertId->execute			();
        	$tab = $this->lastInsertId->fetch		();
        	return $tab["id"];
        }
     
        public function selectAll					()
        {
            $this->selectAll->execute				();
            $tab		= $this->selectAll->fetchAll();
            $tableau	=	array ();
            for ($i = 0; $i < count ($tab); $i++)
            {
            	$object = new Theme($tab[$i]["libelle_th"], $tab[$i]["actif_th"], $tab[$i]["ordre_th"]);
    			$object->setId ($tab[$i]["id_th"]);
            	$tableau [$i] = $object;
            }
            return $tableau;
        }
     
    	public function selectById					($aId)
        {
            $this->selectById->execute				(array ($aId));
            $tab	= $this->selectById->fetchAll		();
            $objet	= new Theme($tab[0]["libelle_th"], $tab[0]["actif_th"], $tab[0]["ordre_th"]);
            $objet->setId ($tab[0]["id_th"]);
            return $objet;
        }
     
    	public function insert						($aObject)
        {
        	$this->insert->execute
        		( array(	":libelle"				=> $aObject->getLibelle		(),
    						":actif"				=> $aObject->getActif		(),
        					":ordre"				=> $aObject->getOrdre		()
        		));
        	$id = $this->lastInsertId();
        	$aObject->setId ($id);
        	return $aObject;
        }
     
        public function update						($aObject)
        {
        	$this->update->execute
        		( array(	":id"					=> $aObject->getId			(),
        					":libelle"				=> $aObject->getLibelle		(),
    						":actif"				=> $aObject->getActif		(),
        					":ordre"				=> $aObject->getOrdre		()
        		));
        	return $aObject;
        }
    J'espère que mes explications sont clairs. Sinon n'hésitez surtout pas.

    Donc en fait ma question serait : est-ce une bonne méthode parmi d'autres ? Manque-t-il certaines choses ? Un peu tou ça.

    Déjà merci si vous avez lu qu'ici !!!

Discussions similaires

  1. Demande d'avis sur un bouquin (Deitel)
    Par oodini dans le forum C++
    Réponses: 7
    Dernier message: 26/02/2005, 01h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo