Le site -> Les forums -> Administration d'un site -> Administrer son site avec du PHP
| Auteur | Message |
|---|---|
lundi 17 mars 2008 à 20H10
|
|
|
Hatecore. Inscrit le : 16/03/2008 Message(s) : 29 Rang : Membre |
Salut à tous, Il y a quelques temps j'avais rédigé un tutoriel qui n'a jamais été mis son Internet, alors voilà, je vais vous le mettre ici :p . Introduction Dans ce tutoriel, je vais tâcher de vous apprendre à organiser correctement la partie administration de votre site. Avec ce système, au lieu d'avoir une page de formulaire et une page de traitement par partie de votre site à administer, vous n'aurez qu'une seul page contenant les formulaires de toutes les parties de votre site et une page qui traitera ces formulaires envoyés de la première page. Par grande partie de votre site, je vous parle, par exemple, de la partie news, forum, galerie photos, ... . Pour pouvoir suivre et comprendre ce dossier, vous devez savoir utilser les conditions (if, else, elseif,switch), les variables $_GET et $_POST, les formulaires ainsi que savoir utiliser soit les fichiers soit une base de données. Bonne lecture. Contenu Structure de la page admin.php Dans cette première partie, je vais vous expliquer ce système en deux pages. A la fin de ce tutoriel, vous aurez droit à un exemple concret de ce système pour bien illustrer mes codes. Tout d'abord, créez une page appelée admin.php. Dans cette page, créez un premier switch qui proposera les différentes grandes parties de votre site. Par grandes parties, je veux vous parler de la partie administration des news, du forum,... par exemple. Créez une case par partie de votre site à administrer. Comme default à ce switch, nous allons mettre le menu général de l'administration, c'est-à-dire : configurer les news, configurer les tutoriels,... . Voyez plutôt ce code : <?php switch () { case "1": //administration des news par exemple break; case "2": //administration du forum break; // ... default; echo'<p>Administration<br /> <a href="admin.php?grandepartie=1">Admin partie 1</a> <a href="admin.php?grandepartie=2">Admin partie 2</a> </p>'; // .. pour toutes les parties break; } ?> Comme vous pouvez le constater, les liens de la partie default de notre switch rechargent la même page avec une variable dans l'URL. Cette variable va nous servir à savoir quelle partie l'administrateur veut modifier. Nous allons donc récupérer cette variable et l'insérer dans notre switch, comme paramètre. Je vous laisse le soin de sécuriser la variable :p . <?php switch (intval($_GET['grandepartie'])) { } ?> Je ne vous ai pas remis tout le code, il est juste au-dessus ^^ . Maintenant que nous avons fait ce premier switch, passons au second. Au second ?!? Bin oui :) , maintenant que l'administrateur a choisi quelle grande partie il voulait administrer, il faut savoir ce qu'il veut faire dans cette partie : ajouter, supprimer, éditer,... des articles,des news, des membres,... . Ce deuxième switch va donc nous servir à préciser les choses. Dans le default de ce second switch, nous allons mettre l'index de la grande partie à modifier, exemple : ajouter une news, modifier un membre,... . Dans les différentes case de cette seconde condition, nous pourrons mettre ce que l'on veut : ce sera presque toujours des formulaires; je vous expliquerai un petit truc sur ces formulaires juste après ce code. <?php switch (intval($_GET['grandepartie'])) { case "1": switch () { case "1": // ici tu mets des formulaires (voir après), des liens à modifier,... break; case "2": // ici tu mets des formulaires (voir après), des liens à modifier,... break; // ... default; echo'Administrer Grande partie 1<br /> <a href="admin.php?grandepartie=1&partie=1">Admin partie 1</a> <a href="admin.php?grandepartie=1&partie=2">Admin partie 2</a> </p>'; // .. pour toutes les parties break; } break; case "2": // idem que vous la "case 1" break; // ... default; echo'<p>Administration<br /> <a href="admin.php?grandepartie=1">Admin partie 1</a> <a href="admin.php?grandepartie=2">Admin partie 2</a> </p>'; // .. pour toutes les parties break; } ?> Comme vous pouvez le voir, ce système n'est pas très compliqué mais un peu tordu ^^ . Comme auparavant, les liens des default des seconds switch rechargent la même page avec, en plus de la variable $_GET contenant le numéro de la grande partie (qu'il ne faut surtout pas oublier !), une seconde variable $_GET contenant le numéro de la partie à administrer. Nous allons donc récupérer cette seconde variable et le placé dans tous les seconds switch de la même manière que pour le premier switch : <?php // ... switch (intval($_GET['partie'])) // ... ?> Venons-en aux formulaires maintenant. La cible des formulaires doit être la page verif_admin.php car c'est sur cette page que les formulaires vont être traités, sécurisés et envoyés dans vos fichiers ou votre base de données. Mais ce n'est pas tout pour la cible, puisque la page de vérification contiendra les mêmes switch que sur la page admin.php, il va falloir mettre des variables dans l'URL : il nous faudra le numéro de la grande partie à modifier ainsi que le numéro de la partie à administrer. Voyez plutôt ce code : <form method="post" action="verif_admin.php?grandepartie=1&partie=2"> <!-- Formulaire --> </form> Bien évidement, le form doit être modifier par les bon numéro de partie pour chaque formulaire :) . Voilà, ce n'est pas plus compliqué que cela. Vous auriez très bien pu, au lieu de mettre les variables dans l'URL, créer deux input de type hidden contenant le numéro des parties, cela revient au même. Structure de la page verif_admin.php Comme dit auparavant, cette page contiendra la même structure que la page admin.php : les mêmes switch. Les seules différences sont au lieu d'avoir des formulaires, on a des vérifications, des sécurisations et l'envoi des informations par requêtes SQL et qu'au lieu d'avoir des liens dans les default, on aura des messages d'erreurs car on est arrivé dans les default soit par erreur, soit en modifiant l'URL de la page. Voici le code de cette page, je vous le donne d'un coup car il est presque le même que auparavant (admin.php) : <?php switch (intval($_GET['grandepartie'])) { case "1": switch (intval($_GET['partie'])) { case "1": // ici tu mets des sécurisations, vérifications des formulaire et des requêtes... break; case "2": // ici tu mets des sécurisations, vérifications des formulaire et des requêtes... break; // ... default; echo'<p> Erreur, tu n'as pas le droit d'etre ici</p>'; break; } break; case "2": // idem que vous la "case 1" break; // ... default; echo'<p> Erreur, tu n'as pas le droit d'etre ici</p>'; break; } ?> Et bien voilà, vous avez une partie administration claire, propre, soignée, structurée et seulement en deux pages, simple isn't it? :p Vous aurez très bien pu le faire en une seule page mais cela aurait compliqué les choses. Avant de vous lâcher, je vais vous donner un petit exemple de ce que vous devriez être capable de faire maintenant. Exemple Vous voilà dans la dernière partie de ce dossier. Ici, je vais vous montrer concrètement, à l'aide d'un exemple, le fonctionnement de ce système. Je vais ici prendre l'exemple d'un site qui administre des news et une galerie photo. Je vais vous donner les codes d'un coup car vous devriez être capable des les comprendre maintenant. Je ne pas les formulaires ni les sécurisations ni les requêtes SQL, je les remplacerai par des commentaires. Page admin.php : <?php switch (htmlspecialchars($_GET['grandepartie'])) { case "news": switch (htmlspecialchars($_GET['partie'])) { case "ajout_news": // ici tu mets des formulaires pour ajouter une news break; case "modif_news": // ici tu mets la liste des news à modifier break; case "delete_news": // ici tu mets la liste des news à supprimer break; default; echo'Administrer les news<br /> <a href="admin.php?grandepartie='.news.'&partie='.ajouter_news.'">Ajouter une news</a> <a href="admin.php?grandepartie='.news.'&partie='.modif_news.'">Modifier une news</a> <a href="admin.php?grandepartie='.news.'&partie='.delete_news.'">Ajouter une news</a> </p>'; break; } break; case "galerie": switch (htmlspecialchars($_GET['partie'])) { case "ajout_photo": // ici tu mets des formulaires pour ajouter une photo break; case "modif_photo": // ici tu mets la liste des photos à modifier break; case "delete_photo": // ici tu mets la liste des photos à supprimer break; default; echo'Administrer les photos<br /> <a href="admin.php?grandepartie='.galerie.'&partie='.ajouter_photo."'">Ajouter une photo</a> <a href="admin.php?grandepartie='.galerie.'&partie='.modif_photo."'">Modifier une photo</a> <a href="admin.php?grandepartie='.galerie.'&partie='.delete_photo."'">Ajouter une photo</a> </p>'; break; } break; default; echo'<p>Administration<br /> <a href="admin.php?grandepartie='.news.'">Admin les news</a> <a href="admin.php?grandepartie='.galerie.'">Admin les photos</a> </p>'; break; } ?> Page verif_admin.php : <?php switch (htmlspecialchars($_GET['grandepartie'])) { case "news": switch (htmlspecialchars($_GET['partie'])) { case "ajout_news": // ici tu mets des requetes pour ajouter une news break; case "modif_news": // ici tu mets la requete pour modifier la news break; case "delete_news": // ici tu mets la requete qui supprime une news break; default; echo'<p>Erreur</p>'; break; } break; case "galerie": switch (htmlspecialchars($_GET['partie'])) { case "ajout_photo": // ici tu mets la requete pour ajouter une photo break; case "modif_photo": // ici tu mets requte pour modifier une photo break; case "delete_photo": // ici tu mets la requete qui te sert à delete une photo break; default; echo'<p>Erreur</p>'; break; } break; default; echo'<p>Erreur</p>'; break; } ?> Voilà, il n'y a rien à ajouter, les codes sont suffisamment commentés. Ah si, j'oubliais une chose, les codes ne contiennent aucun design, à votre tour d'entrer en action :p . Conclusion Vous voilà à la fin de ce dossier, j'espère que celui-ci vous aura appris quelque chose d'utile pour vos sites. Pour toutes remarques/suggestions/critiques ou autres, vous pouvez les faire soit pas MP soit en laissant un petit commentaire au tutoriel. A bientôt. Hatecore. |
lundi 17 mars 2008 à 20H46
|
|
|
TimeSplitters Inscrit le : 24/12/2005 Message(s) : 97 Rang : Administrateur Site web |
Wow, tout simplement super :cool: Une toute petite critique: dans les switchs, il serait sans doute préférable d'utiliser des valeurs numériques au lieux de chaînes de caractères quand on utilise des variables du type 1, 2, 3... Par exemple, au lieu de case "1" (chaîne de caractères), case 1 (valeur numérique) est bien plus rapide :) Ce n'est qu'un détail, mais ça accélère le traitement de la page ^^ Aussi, je ne suis pas convaincu par l'utilisation abusive de switchs: ils ont la réputation d'être lents à traiter, et puis de simples if() peuvent suffire (après c'est une question de goût). Tiens ça me fait penser au module de tutos que je dois faire pour bientôt :). Edit: c'est vrai qu'on y pense pas, mais tout gérer dans 2 fichiers peut être très bénéfique si on s'y prend bien. Personnellement, après quelques mois d'expérience, je me suis rendu compte qu'il était plus clair de gérer chaque formulaire (ou même pages simples) avec un fichier chacun. Je me rends compte que certaines requêtes sont en doubles, certaines pages aussi, mais pour le moment tout est clair donc je reste sur cette vision ^^ Je testerai ta façon de coder un de ces 4 :p |
lundi 17 mars 2008 à 21H02
|
|
|
Hatecore. Inscrit le : 16/03/2008 Message(s) : 29 Rang : Membre |
Cette façon est ma façon, à vous de l'adapter. Je trouvais les switch plus simple pour cette application mais là tu fais comme tu veux ;) . Pour les chaines de caractère, bonne chance sur tu veux tout mettre en numérique :lol: . |
mardi 18 mars 2008 à 10H08
|
|
|
Julien Inscrit le : 16/06/2004 Message(s) : 112 Rang : Administrateur Site web |
Merci pour ce tutoriel. |
mardi 18 mars 2008 à 20H33
|
|
|
Hatecore. Inscrit le : 16/03/2008 Message(s) : 29 Rang : Membre |
Mais de rien :D . Si vous trouvé des fautes d'orthographes ou des erreurs de codes ,n'hésitez pas. Je suis sur qu'il y en a ^^ . Hatecore. EDIT: je viens de voir que vous avez une partie "Articles" sur ce site. Pourquoi ne pas mettre ce tutoriel dans cette partie, c'est juste une idée ^^ . |
mardi 18 mars 2008 à 22H20
|
|
|
marvrik Inscrit le : 23/07/2004 Message(s) : 73 Rang : Designer |
il est supossé y avoir une section tutoriaux. Julien avais deja commencer a faire quelque tutos |
mercredi 19 mars 2008 à 12H28
|
|
|
Hatecore. Inscrit le : 16/03/2008 Message(s) : 29 Rang : Membre |
Ok pas de problème, j'attendrai alors ;) . |
mercredi 19 mars 2008 à 17H21
|
|
|
Julien Inscrit le : 16/06/2004 Message(s) : 112 Rang : Administrateur Site web |
Oui on va étoffer cette partie, je suis entrain d'en rédiger encore, et on récupérera ceux précédemment fait. Bien entendu on ajoutera ceux que proposerons les membres. Tu as donc de forte chance d'y figurer. |
mercredi 19 mars 2008 à 18H50
|
|
|
Hatecore. Inscrit le : 16/03/2008 Message(s) : 29 Rang : Membre |
Ok merci :p . Dites-moi les fautes d'orthographe pour que je corrige ça :) . |
vendredi 21 mars 2008 à 11H17
|
|
|
Julien Inscrit le : 16/06/2004 Message(s) : 112 Rang : Administrateur Site web |
Pour les fautes on relira ça plus en détail au moment d'ajouter le tutoriel. |
Copyright Notionweb © 2008
| 15 connectés
Politique d'accessibilité
- Contactez-nous
- Plus d'infos
- Tous les membres