Document à rendre
Vous devez rendre un fichier avec :
• Dans le sujet du mail : S3 Licence php avancé 1 : nom et prénom (sinon => pénalité)
• les codes sources dans une archive utilisable sous linux (tar.gz ou zip) dans un dossier qui porte votre nom (sinon => pénalité)
• un document libreoffice que vous compléterez, qui indique les parties réalisées (sinon =>
pénalité)
Le document est à rendre pour le Dimanche …..31 janvier 2016 …. minuit (3 par jour de retard)
******************************************************
Vous disposez de 2 tables (table1 et table2) différentes pour chaque sujet Vous remplacerez les noms
table1 et table2 par les noms des tables de votre sujet.
Si les consignes cidessus ne sont pas respectées, une grosse pénalité sera appliquée ! Le programme doit obligatoirement respecter l’architecture MVC vue en TD et TP avec 3 dossiers "models", "views", "controllers". Le programme doit obligatoirement utiliser des classes dans les dossiers "models" et "controllers" et un code le plus proche possible de l'HTML dans les fichiers contenus dans views".
Pour les modèles et les contrôleurs
: Les classes et les méthodes doivent avoir comme nom
: un nom qui fait référence à la ressource à modifier (le nom de la table).
Les liens et les actions sur les formulaires doivent respecter la syntaxe
http://url_du_site/index.php/ressources/action_sur_la_ressource(/paramètres)
Pour les vues dans le code HTML utilisé : pour réaliser les formulaires, vous n'utiliserez que des champs d'entrées <INPUT> de type « text » ou « submit », les champs de contrôle comme "date", "email", "number" …. ne sont pas autorisés dans l'HTML : ceci afin de vérifier que le contrôle des données est bien fait coté serveur.
DONC
REQUIRED, PATTERN, type= "number" , type="date" … sont interdits dans les vues
« html »
réaliser une version le routeur SILEX, avec le moteur de template SLIM Partie 1
: la base (%)
➢ réaliser un fichier SQL de test : SUJET_VotreNom.sql (le mettre sur la racine de votre script)
➢ respecter les normes des ORM doctrine, Eloquent, zend concernant les noms de tables, de champs (id, clé etrangére)
➢ définir la contrainte (jointure) entre la clé primaire et la clé étrangère des 2 tables voir https://laravel.com/docs/5.1/eloquent#definingmodels
exemple :
Partie 2
: affichage de la table1
➢ réaliser une méthode qui appelle des vues pour afficher le contenu du tableau “ table1”
➢ lors de l’affichage de la table1, ne pas afficher la clé étrangère mais un champ plus compréhensible pour l’utilisateur de l'autre table (jointure).
➢ Dans la vue : rajouter
○ un lien pour modifier chaque enregistrement
○ un lien pour supprimer chaque enregistrement
○ un lien en fin de tableau pour créer un enregistrement
Partie 3
: ajout d'un enregistrement dans la table1
➢ réaliser la méthode du contrôleur puis la vue (formulaire) qui est appelée lorsque le lien est « sélectionné » pour créer un enregistrement
➢ réaliser la méthode qui va vérifier les données, puis enregistrer les données dans la table lors de la soumission du formulaire
➢ Lors de la validation du formulaire, vérifier les données, si une erreur est constatée sur les champs d'entrée du formulaire, rappeler la vue du formulaire avec les valeurs saisies et signaler les erreurs sur les champs.
Exemple :
○ vérifier que chaque chaîne de caractères est composée de 2 caractères minimum
○ vérifier que les dates sont au bon format et sont bien des dates (checkdate()), utiliser des fonctions précédentes
○ vérifier que les numériques sont au bon format Partie 4 : suppression d'un enregistrement dans la
table1
➢ réaliser la méthode qui est appelée lorsque le lien pour supprimer un enregistrement est sélectionné
➢ Demander confirmation avant de supprimer un enregistrement dans un formulaire (non fait en TP).
Partie 5
: modification d'un enregistrement dans la table1
➢ réaliser la méthode puis la vue qui est appelée lorsque le lien pour modifier un enregistrement est sélectionné
➢ réaliser la méthode qui va vérifier les données, puis modifier les données dans la table
➢ Lors de la validation du formulaire, vérifier les données, si une erreur est constatée sur les champs d'entrée du formulaire, rappeler la vue du formulaire avec les valeurs saisies et signaler les erreurs sur les champs.
Partie 6 menu et affichage de la deuxième table (
table2 )
Réaliser une page principale qui affiche 2 liens pour :
➢ afficher table1
➢ afficher table2 ainsi que :
➢ un formulaire de connexion ou un lien de deconnexion
➢ réaliser le contrôleur et la vue pour afficher la deuxième table
Partie 7 champ de sélection pour créer/modifier un enregistrement
➢ Lors de la création (ou modification) d'un enregistrement : Modifier la méthode du contrôleur et la vue associée pour afficher un champs plus compréhensible de la table2
=> au lieu de la clé primaire (table2) / clé étrangère (table1) dans le formulaire mettre une liste déroulante ;
=>utiliser les balises <select> et les <option>
➢ réaliser un modèle sur la table 2 pour récupérer les valeurs contenues dans la liste déroulante
➢ Lors de la validation du formulaire, vérifier les données, si une erreur est constatée sur les champs d'entrée du formulaire, rappeler la vue du formulaire avec les valeurs saisies et signaler les erreurs sur les champs.
Vous devez réafficher le même champ en cas d'erreur (<select>)
➢ Lors de la création d'un enregistrement, le champ select est vide (rien est sélectionné à l'ouverture du formulaire)
➢ Lors de la création d'un enregistrement, le bon champ <select> est sélectionné lors de l'ouverture du formulaire
L'attribut selected est placé dans <option> lorsque la clé étrangère de l'enregistrement est égale à la valeur du tableau associatif récupérée à l'aide du modèle (méthode dans la classe modèle) de la table 2
Partie 8 Gestion des connexions
➢ les connexions sont possibles et fonctionnelles :
➢ afficher la table2 : ce lien sera affiché si une personne est connectée (elle possède des droits de session)
➢ si la personne est connectée et si elle possède les droits d'administrateur alors elle visualise les liens pour créer/modifier/supprimer les enregistrements dans la table 1 sinon ces liens n'apparaissent pas
➢ faire la vérification en début de méthode dans le contrôleur
Partie 9
réaliser une classe helper_date
créer une classe que l'on appelle « helper_date » dans un fichier helper_date.php dans un dossier helper avec 3 méthodes :
* une méthode qui transforme les dates du format américain au format français
* une méthode qui transforme les dates du format français au format américain
* une méthode qui vérifie que la date est correcte (format et valeur (pas de 29 février))
http://stackoverflow.com/questions/141315/phpcheckforavaliddateweirddateconversions http://php.net/manual/fr/class.datetime.php
utiliser ce helper dans votre contrôleur pour vérifier les dates et les afficher Partie 9
faille csrf (et sécurité)
* prise en compte de la faille csrf
* réflexion sur les injection
(utilisation de htmlspecialchar … ou utilisation des helpers de symfony , queryBuilder (requêtes paramétrées))
aidez vous des liens suivant :
http://silex.sensiolabs.org/doc/usage.html http://gernaelsten.developpez.com/cours/Silex/
https://openclassrooms.com/courses/evoluezversunearchitecturephp
professionnelle/iteration3integrationduframeworkphpsilex
Pour les tables :
sujet 1 : Gérer dans quel département est un employé
(nom_dep : Production, Marketing, Méthode, Recherche et développement ...dans une entreprise).
table1 table2
sujet 2 : gérer les activités dans une association de loisirs et les locaux où les activités se déroulent
table1 table2
sujet 3 :gérer les opérations bancaires (débits crédits (nature) ; type opérations : virement, retraits, remise de chèques, remise/retrait espèces …)
sujet 4 : gérer et afficher les joueurs de club de foot
table1 table2
sujet 5 : gérer et afficher des types de voitures
table1 table2
sujet 6 : gérer des films par type dans un site web
table1 table2
sujet 7 : gestion des réparations dans un garage
table1 table2
sujet 8 : gérer des bandes dessinées
table1 table2
sujet 9 : gérer les ordinateurs du département
table1 table2
sujet 10 : gérer la location d'emplacements de commerces sur un marché couvert
table1 table2
sujet 11 : gérer les dépenses d'employés d'une entreprise (déplacement, hôtel ….)
table1 table2
sujet 12 : gérer les spectacles dans un site web
table1 table2
sujet 13 :
table1 table2
gérer les articles d'un journal sur le net
date_ajout (format jj/mm/aaaa) : vérifier ce champ dans le contrôleur
sujet 14 :
table2 table1
gérer les locations de place de marché
date_location (format jj/mm/aaaa) : vérifier ce champ dans le contrôleur
sujet 15 :