Bonsoir

Je possède actuellement un site web contenant une page d'accueil, une page portfolio avec plusieurs projets (un clique sur le projet ouvre un nouvelle page contenant un texte entrecoupé avec des photos), une page à propos et une page de contact. J'ai codé ce site de A à Z en HTML/CSS, Jquery/Javascript et du PHP pour le formulaire de contact.

J'ai suivi plusieurs cours sur PHP/MySQL et aussi des tuto vidéo. Je souhaiterai maintenant créer un espace d'administration pour mon site. J'ai bien conscience que ça implique de recréer tout le site que j'ai déjà actuellement mais c'est pas grave, ça me permet d'apprendre etc et j'ai deja un design bien précis et quelques pas déjà fait (header etc).

Voilà ce que je souhaiterai (dans le panneau d'admin) :

  • une page permettant d'ajouter une création (avec un champ pour les images, un pour le texte, un pour le titre, un pour le sous titre, un pour la ou les catégories, un pour le slug et un id (qui se met en auto surement))
    • une page permettant de modifier/supprimer une création (avec les mêmes champs que précédemment + un bouton pour supprimer), en soi, cette page est la même que la précédente sauf que les champs sont pré rempli et que l'id ne doit pas changer
    • une page permettant d'ajouter une catégorie (avec nom, slug, id auto)
    • une page permettant de modifier/supprimer une catégorie
    • une page permettant d'ajouter une page (en + de la page portfolio, à propos, contact et accueil). Pour le coup aucune idée de ce que je dois mettre car pour l'instant je n'ai pas l'utilité d'une autre page, mais ça pourrait me servir d'exercice pour de futurs projets
    • une page permettant de modifier/supprimer une page existante
    • une page permettant d'upload des images (on pourra donc insérer une image dans la page créa par exemple sans passer par les fichiers du pc si l'image a dejà été envoyé) avec un champ pour l'image, pour le texte alternatif et un slug
    • une page permettant de visualiser toutes les images disponibles, de modifier le texte ou de supprimer une image
    • une page permettant de modifier le menu du site

Voilà comme vous l'avez compris je cherche à faire quelque chose de plutôt complet, je n'ai pas de temps imparti, je souhaite juste continuer à me former en pratiquant et en prenant de bonnes habitudes. Je sais d'avance que j'aurai besoin d'aide, j'ai donc créer ce sujet afin de faire un suivi du projet :)

Voilà donc mes premières questions : faut il que dans les pages pour créer/modifier/supprimer un projet (coté admin donc), je mette plusieurs champs images (car j'aurais plusieurs images à mettre pour chaque projet, dont une qui doit être "à la une" c'est à dire utilisé pour la page présentant tout les projets) ? En sachant que les images ne seront pas toutes les unes à la suite des autres mais par exemple une au début, 2 au milieu, une à la fin. Donc faut il un champs/image ou un champs dans lequel j'ajoute plusieurs images ?

Pareil pour les textes, faut il que je fasse plusieurs champs (un champ pour une partie de texte situé entre 2 images) ou un seul champ de texte dans lequel je mets tout d'un coup ?

Voilà un schéma de ce que je souhaite pour une page de projet

[URL=http://www.hostingpics.net/viewer.php?id=291699Sanstitre1.png][IMG]http://img4.hostingpics.net/thumbs/mini_291699Sanstitre1.png[/IMG][/URL]

Merci d'avance pour vos conseils

5 réponses


faut il que dans les pages pour créer/modifier/supprimer un projet (coté admin donc), je mette plusieurs champs images [...] ?

si tu veux faire les choses correctement, il faut procéder autrement : tu dois créer une table Medias, qui se chargera de stocker tes fichiers (seulement les url / extensions de tes fichiers). il faut penser à ajouter une colonne page_id pour lier tes fichiers avec tes pages. lors de la création d'une page, tu auras un seul champ de type file, si tu as besoin d'ajouter plus d'une image, tu ajoutes dynamiquement un nouveau champ de type file en js, tu traites ensuite en php / js la récupération de ces informations. en mode édition, il suffit de faire une requête sur la table Medias et de récupérer tous les fichiers associés à ta page. en mode suppression, il faut penser à supprimer côté base de données et côté dossier (dossier qui stocke tes fichiers)... tu auras ainsi une table Medias cohérente par rapport aux fichiers que tu disposes sur le serveur (ça ne sert à rien de stocker des données qui ne correspondent à aucun fichier réel).

pareil pour les textes, faut il que je fasse plusieurs champs (un champ pour une partie de texte situé entre 2 images) ou un seul champ de texte dans lequel je mets tout d'un coup ?

cela va dépendre de la structure du frontend... si ton frontend est "classique", il vaut mieux tout stocker dans un textarea et utiliser un éditeur de texte de type CKEditor pour ajouter les images au bon endroit dans ton textarea (comme sous WP). si ton frontend est "complexe" (dans le sens structure vraiment particulière), il vaudrait mieux séparer les choses.

a+

cochi69
Auteur

D'accord super merci pour ces précisions j'attaque tout ça dès demain !
Pour le texte je sais pas trop, si on peut mettre des images côtes à côtes je pense que ça peut le faire avec un editeur de texte. Sinon je vais devoir séparer

cochi69
Auteur

Bonjour
j'ai commencé et je suis confronté au premier problème : je ne sais pas comment mettre en place les messages de connexions (connexion réussie, mot de passe éronné...).

Je vous explique, il y a une page login.php, si la connexion échoue, on reste sur cette page, si elle réussie on arrive sur index.php.

J'ai essayé en mettant un écho mais ça ne fonctionne pas.

Pouvez vous m'aiguiller sur une solution ou un tuto ?

Merci d'avance

Bonjour.

Pouvez vous m'aiguiller sur une solution ou un tuto ?

Voilà : Tutoriel Vidéo PHP » Gestion d'un espace membre et si tu veux aller un peu plus loin : Tutoriel Vidéo PHP » Gestion d'un espace membre (refactorisation).

Bonjour,
voici la façon dont je réaliserais le projet :

une page permettant d'ajouter une création (avec un champ pour les images, un pour le texte, un pour le titre, un pour le sous titre, un pour la ou les catégories, un pour le slug et un id (qui se met en auto surement))

TABLE 'Contenu' : id(primary, AI), slug (255), titre(255), sous_titre(255), id_catégorie(INT), texte(LONGTEXT),type(INT),ordre(INT),menuType(INT)
FRONT :

Article.php (identique pour ajout / modif)

Input hidden : name="id" (vide si création / remplie si modif)

Input text : name="titre"

Select : Liste catégories (value ="id_catégorie)

Input text : Name ="sous_titre"

nput text : Name ="slug"

Textarea =
Création d'une POP IN en javascripts (jquery c'est plutot accéssible) qui litste url de l'image eavec sa vignette)

Utilisation de balise dans ton textarea :

EXEMPLE :
Insertion image : [IMAGE]https//urlImage.jpg[/IMAGE]

Insertion image center : [IMAGE center]https//urlImage.jpg[/IMAGE]

Insertion image right : [IMAGE right]https//urlImage.jpg[/IMAGE]

Insertion image center et grand format: [IMAGE center big]https//urlImage.jpg[/IMAGE]

Lors de l'affichage coté client : tu appliques une regex :

Tout se qui est compris entre [IMAGE] c'est img src=

Si aprés [IMAGE il y a quelques chose, c'est une class img src= class=

Cela peut paraitre inquiétant au premier abord, mais c'est tellement génial les regex !

Ca marche aussi avec le texte a toi d'écrire autant de regex avec utilisation de replaceall pour mettre en forme ton texte.

exemple : [gras], [color:jaune],[center],[trait-separation],[list type=puce], etc ...

une page permettant de modifier/supprimer une création (avec les mêmes champs que précédemment + un bouton pour supprimer), en soi, cette page est la même que la précédente sauf que les champs sont pré rempli et que l'id ne doit pas changer
Comem tu dis ...

une page permettant d'ajouter une catégorie (avec nom, slug, id auto)
TABLE : id(primary, AI), nom(255),slug(255),niveau(INT)
niveau : pour les catégories parent/enfant (dans le futur peu être)
Architecture identique pour le php.

une page permettant de modifier/supprimer une catégorie
Comme dit précedement.

une page permettant d'ajouter une page (en + de la page portfolio, à propos, contact et accueil). Pour le coup aucune idée de ce que je dois mettre car pour l'instant je n'ai pas l'utilité d'une autre page, mais ça pourrait me servir d'exercice pour de futurs projets
une page permettant de modifier/supprimer une page existante

identique à article.php
On utilise la table 'Contenu' avec l'utilisation des champs TYPE et ORDRE
TYPE : 1, 2 , 3 , 4 ....
Avec soit un array dans un fichier php :
<?phparound$type = ['1'=>'page','2'=>'article','3'=>'autre chose']around?>
Soit avec une autre table paramétrable au seins de ton administration
TABLE 'type' = id(primary,AI),num(INT),nom(255),description(TEXT)

ORDRE : si tu douhaites mettre la page contact, avant la page home ou la page About ... bref tu comprends !

une page permettant d'upload des images (on pourra donc insérer une image dans la page créa par exemple sans passer par les fichiers du pc si l'image a dejà été envoyé) avec un champ pour l'image, pour le texte alternatif et un slug
TABLE 'media' : id(primary,AI), slug(255),url(LONGTEXT)
Url pourrait stockéer un tableau style
['grand'=>'http:// grande image.jpg',
'moyen' =>'httpp:// medium image.jpg',
'petite'=>'hrpp// ptiote imageJpg']

PHP : media.php
un champs flile et un belle page de traitement pour générer des fichiers de différente taille et une belle gestion d'erreurs.

une page permettant de visualiser toutes les images disponibles, de modifier le texte ou de supprimer une image
Je mettrais cette page avec celle de l'upload
avec en dessous deu block pour upload , un second block qui charge un tableau avec toute les images / nom / description / et option
avec pour la suppression : https//www.monsite.com/administration/media/gestionsmedia.php?effacer=(id_image)
avec la modification : https//www.monsite.com/administration/media/gestionsmedia.php?modifier=(id_image)

une page permettant de modifier le menu du site
On en revient à la reponse du début
menuType c'est un entier qui depent d'une autre table de la bdd

TABLE 'menu' = id(...), nom(255), information(TEXT)

Ca te laisse l'option d'attribuer un menu latteral different pour article ou page.
Tu as compris le principe !

Bonne chance, car ça reprensente du boulot !