Aller au menu - Lire le contenu -

Le site -> Les forums -> Administration d'un site -> Administrer son site avec du PHP

Topic: Administrer son site avec du PHP

Vous devez être inscrit pour répondre au topic

1 2 3 4

Auteur Message
Permalien Top 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.
Permalien Top 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
Permalien Top 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: .
Permalien Top mardi 18 mars 2008 à 10H08
Julien
Inscrit le : 16/06/2004
Message(s) : 112
Rang : Administrateur
Site web
Merci pour ce tutoriel.
Permalien Top 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 ^^ .
Permalien Top 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

Permalien Top mercredi 19 mars 2008 à 12H28
Hatecore.
Inscrit le : 16/03/2008
Message(s) : 29
Rang : Membre
Ok pas de problème, j'attendrai alors ;) .
Permalien Top 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.
Permalien Top 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 :) .
Permalien Top 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.

1 2 3 4

Copyright Notionweb © 2008 | 15 connectés
Politique d'accessibilité - Contactez-nous - Plus d'infos - Tous les membres