0% ont trouvé ce document utile (0 vote)
41 vues35 pages

Projet PHP : Structure et Fonctionnalités

Le document décrit la structure d'un projet PHP, probablement un site web, comprenant des fichiers principaux, une base de données, des contrôleurs, des modèles et des vues. Il détaille le fonctionnement du fichier index.php, qui gère les sessions, la navigation dynamique et l'affichage de contenu selon le rôle de l'utilisateur. Enfin, il présente des exemples de fichiers de vue et de contrôleur, ainsi que leur interaction pour afficher les annonces et gérer les candidatures.

Transféré par

v.alves-fernandes
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues35 pages

Projet PHP : Structure et Fonctionnalités

Le document décrit la structure d'un projet PHP, probablement un site web, comprenant des fichiers principaux, une base de données, des contrôleurs, des modèles et des vues. Il détaille le fonctionnement du fichier index.php, qui gère les sessions, la navigation dynamique et l'affichage de contenu selon le rôle de l'utilisateur. Enfin, il présente des exemples de fichiers de vue et de contrôleur, ainsi que leur interaction pour afficher les annonces et gérer les candidatures.

Transféré par

v.alves-fernandes
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

L'archive contient un projet structuré, probablement un site web ou une application PHP, avec plusieurs

dossiers et fichiers. Voici une vue d'ensemble des fichiers extraits :

 Fichiers principaux :
o [Link] : Point d'entrée principal du site.
o [Link] : Fichier de styles pour la mise en page.
 Base de données :
o [Link] : Gestion des connexions à la base de données.
o recrute_DB.sql : Script SQL pour créer la base de données.
 Contrôleurs :
o Plusieurs fichiers dans le dossier controleur, probablement pour gérer différentes
fonctionnalités (annonces, candidatures, connexions, etc.).
 Modèles :
o Des fichiers dans le dossier modele, probablement pour gérer les interactions avec la
base de données (annonces, candidats, managers, etc.).
 Vues :
o Des fichiers dans le dossier vue, qui semblent gérer l'affichage des différentes pages du
site (accueil, offres, candidatures, etc.).
 Ressources :
o Dossier images contenant des images comme des logos et des illustrations.

Table des matières


[Link].............................................................................................................................. 2
Gestion des pages avec $_GET............................................................................................. 3
Continuation du code (suite de la sortie précédente)..................................................................4
Affichage dynamique du contenu (structure principale).............................................................5
Inclusion dynamique des fichiers de vue................................................................................. 5
Pied de page et fin du fichier................................................................................................ 6
Synthèse du fonctionnement global........................................................................................ 6
Structure du fichier............................................................................................................ 7
Inclusion de composants et contrôleurs................................................................................... 7
Affichage des dernières offres............................................................................................... 8
Lien pour voir plus d'offres.................................................................................................. 9
Relation avec les autres fichiers............................................................................................. 9
Contenu du fichier (Analyse ligne par ligne).........................................................9
Vue profil............................................................................................................................ 10
Contenu du fichier et analyse.................................................................................... 10
Fichier search= recherché.................................................................................................. 12
Structure HTML et explications................................................................................................ 12
Classe Annonce................................................................................................................... 15
Objectif général du code.................................................................................................... 18
Classe Candidat................................................................................................................. 18
Objectif général............................................................................................................... 20
Classe Candidature............................................................................................................. 21
Objectif général............................................................................................................... 23
Sécurisation et gestion des données volumineuses...................................................................23
Classe Manager.................................................................................................................. 23
Index.................................................................................................................................. 24
Déclaration de la session et initialisation...............................................................................24
Définition des variables en fonction du rôle...........................................................................25
Titre par défaut et récupération de la page............................................................................25
Définition dynamique du titre............................................................................................. 26
Structure HTML : En-tête et menu de navigation...................................................................26
Affichage des contenus dynamiques..................................................................................... 27
Pied de page.................................................................................................................... 28
Vue candidature................................................................................................................. 28
Vue acceuil......................................................................................................................... 31

Le fichier [Link] est le point d'entrée principal du site. Voici une explication des premières lignes
et leur relation avec le reste :

[Link]
php
Copier le code
<?php
session_start();
$_SESSION['location'] = "[Link]

 session_start() : Initialise une session PHP. C'est nécessaire pour stocker et gérer des données
utilisateur (comme leur rôle ou état de connexion).
 $_SESSION['location'] : Définit une variable de session pour stocker l'URL de base du site.

php
Copier le code
if (!isset($_SESSION['role'])) {
$_SESSION['role'] = "visiteur";
}
 Vérifie si l'utilisateur a un rôle assigné dans la session. Si ce n'est pas le cas, il est défini par
défaut comme "visiteur".

php
Copier le code
var_dump($_SESSION['role']);
if (($_SESSION['role'] == "candidat") || ($_SESSION['role'] == "manager")) {
$page5 = "vue_profil.php";
$sous5 = "Mon profil";
} else {
$page5 = "vue_connexion.php";
$sous5 = "Se connecter";}

 Affiche temporairement la valeur du rôle pour débogage avec var_dump().


 Selon le rôle de l'utilisateur :
o Si c'est un candidat ou un manager, l'accès à leur profil est défini (vue_profil.php).
o Sinon, il sera redirigé vers la page de connexion (vue_connexion.php).

php
Copier le code
if (!isset($title)) {
$title = "Fromsoftware Recrutement";
}

 Définit un titre par défaut pour la page s'il n'a pas encore été initialisé.

Gestion des pages avec $_GET

php
Copier le code
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}

 Lit la valeur de la page demandée via la méthode GET (par exemple, [Link]?page=2).
 Si aucune page n'est spécifiée, la valeur par défaut est 1.

php
Copier le code
switch ($page) {
case 1:
$title = "Fromsoftware Recrutement";
break;
case 2:
$title = "Nos offres d'emplois";
break;
case 3:
$title = "Candidatures spontanées";
break;
case 4:
$title = "À propos";
break;
case 5:
if ($page5 == "vue_profil.php") {
$title = "Mon profil";
} else {
$title = "Se connecter / S'inscrire";
}
break;
case 6:
$title = "Mon profil";
break;
case 7:
$title = "Détail offre";
break;
}

 En fonction de la valeur de $_GET['page'], le titre de la page est mis à jour. Cela affecte la
présentation et le contenu affiché.
 Les différents cas correspondent à des pages spécifiques (comme les offres d'emploi, le profil
utilisateur, etc.).

Continuons l'analyse du fichier [Link] en passant à l'intégration du HTML et au fonctionnement


global du fichier.

Continuation du code (suite de la sortie précédente)

php
Copier le code
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo $title; ?></title>
<link rel="stylesheet" href="[Link]">
</head>
<body>

 Début du HTML : La structure HTML du site commence après la fermeture du bloc PHP (?>).
 Balises <head> :
o <meta charset="UTF-8"> : Définit l'encodage des caractères comme UTF-8 pour
supporter les caractères spéciaux.
o <meta name="viewport" : Règle la mise en page pour s'adapter aux écrans mobiles.
o <title> : Affiche le titre dynamique défini précédemment dans l'onglet du navigateur.
o <link rel="stylesheet" href="[Link]"> : Charge le fichier de style pour la mise
en forme.

Affichage dynamique du contenu (structure principale)

php
Copier le code
<header>
<h1><?php echo $title; ?></h1>
</header>
<nav>
<ul>
<li><a href="[Link]?page=1">Accueil</a></li>
<li><a href="[Link]?page=2">Offres d'emploi</a></li>
<li><a href="[Link]?page=3">Candidatures spontanées</a></li>
<li><a href="[Link]?page=4">À propos</a></li>
<li><a href="[Link]?page=5"><?php echo $sous5; ?></a></li>
</ul>
</nav>

 <header> : Affiche un en-tête contenant le titre de la page.


 <nav> et <ul> : Génère un menu de navigation.
o Les liens (<a href="[Link]?page=X">) redirigent vers différentes sections du
site. La valeur de page dans l'URL détermine le contenu à afficher.
o Le texte du dernier lien ($sous5) dépend du rôle de l'utilisateur (profil ou connexion).

Inclusion dynamique des fichiers de vue

php
Copier le code
<main>
<?php
switch ($page) {
case 1:
include("vue/vue_accueil.php");
break;
case 2:
include("vue/vue_offres.php");
break;
case 3:
include("vue/vue_candidature.php");
break;
case 4:
include("vue/vue_presentation.php");
break;
case 5:
include("vue/$page5");
break;
case 7:
include("vue/vue_detail.php");
break;
default:
include("vue/vue_accueil.php");
break;
}
?>
</main>

 <main> : La section principale où le contenu change dynamiquement selon la valeur de


$page.
 switch ($page) : Charge des fichiers PHP spécifiques, appelés "vues" :
o Par exemple, la vue vue_accueil.php est incluse pour la page d'accueil.
o Pour la page 5, le fichier chargé dépend de $page5, qui peut être soit
vue_connexion.php soit vue_profil.php.
o En cas de page non reconnue, la page d'accueil est affichée par défaut.

Pied de page et fin du fichier


php
Copier le code
<footer>
<p>&copy; 2024 Fromsoftware Recrutement. Tous droits réservés.</p>
</footer>
</body>
</html>

 <footer> : Un pied de page simple, affichant un copyright et des informations sur le site.

Synthèse du fonctionnement global

1. Gestion des sessions : Détermine le rôle de l'utilisateur et adapte les options affichées.
2. Navigation dynamique : Basée sur la variable $_GET['page'], elle charge des sections
spécifiques via des inclusions PHP.
3. Modularité : Les fichiers de vue permettent de séparer le contenu (HTML) de la logique (PHP),
rendant le site maintenable.
4. Personnalisation : Le rôle de l'utilisateur influe sur le contenu affiché (comme les liens vers le
profil ou la connexion).
Indiquez le fichier que vous souhaitez explorer en priorité. Voici quelques suggestions basées sur leur
rôle :

 Vues (affichage) :
o vue_accueil.php : Affichage de la page d'accueil.
o vue_offres.php : Affichage des offres d'emploi.
o vue_profil.php : Page du profil utilisateur.
 Contrôleurs (logique) :
o [Link] : Gestion des annonces.
o [Link] : Gestion des candidatures.
 Modèles (base de données) :
o [Link] : Accès à la base de données pour les annonces.
o [Link] : Gestion des candidats.

Le fichier vue_accueil.php génère la page d'accueil du site en affichant un message de bienvenue et


les dernières offres d'emploi. Voici une analyse détaillée de son contenu :

Structure du fichier

php
Copier le code
<div id="acceuil">
<h1>Bienvenue chez FROMSOFTWARE !</h1>

 Crée une division principale avec l'ID acceuil, contenant :


o Un titre principal affichant "Bienvenue chez FROMSOFTWARE !".

Inclusion de composants et contrôleurs

php
Copier le code
<?php
include('./parts/[Link]');
include_once("controleur/[Link]");
?>

 include('./parts/[Link]'); : Insère une barre de recherche (probablement définie dans le


fichier [Link]).
 include_once("controleur/[Link]"); : Charge un contrôleur qui semble
récupérer toutes les annonces depuis la base de données.
Affichage des dernières offres

php
Copier le code
<h2>Nos dernières offres !</h2>
<div class="row d-flex justify-content-around">
<?php
include_once("./controleur/[Link]");
$i = 0;
foreach ($allAnn as $value)
{
$i++;
echo'
<div class="col-3 acceuil-annonce">
<h3>' . $value['titre'] . '</h3>
<p class="loc-acceuil d-flex justify-content-start">Localisation :' .
$value['adresse'] . '</p>
<p class="type-acceuil d-flex justify-content-start">Type de contrat :' .
$value['typeCon'] . '</p>
<p class="desc-acceuil d-flex justify-content-start">description :' .
$value['description'] . '</p>
<p class="date-acceuil d-flex justify-content-end">' . $value['dateAnn'] . '</p>
<form action="controleur/[Link]" method="POST">
<input type="hidden" name="idA" value="' . $value['idAnnonce'] . '">
<input type="hidden" name="action" value="detail">
<input type="submit" value="Voir le détail de l\'annonce">
</form>
</div>
';
if ($i > 2) {
break;
}
}
?>
</div>

1. Section "Nos dernières offres" :


o Affiche un sous-titre pour introduire les annonces.
2. Boucle foreach :
o Parcourt la liste des annonces récupérées dans $allAnn (variable issue du contrôleur
[Link]).
o Pour chaque annonce :
 Affiche ses détails (titre, localisation, type de contrat, description, date).
 Inclut un formulaire permettant de consulter les détails de l'annonce en cliquant
sur un bouton.
3. Condition $i > 2 :
o Limite l'affichage à trois annonces maximum pour la page d'accueil.
Lien pour voir plus d'offres
php
Copier le code
<a href="./[Link]?page=2">Voir plus d'offres ?</a>

 Ajoute un lien qui redirige vers la page des offres complètes ([Link]?page=2).

Relation avec les autres fichiers

1. controleur/[Link] :
o Ce fichier est crucial pour récupérer les annonces. Il pourrait exécuter une requête SQL
pour obtenir les données nécessaires.
2. controleur/[Link] :
o Le formulaire d'annonce redirige ici pour afficher les détails d'une annonce spécifique.
3. parts/[Link] :
o Probablement une fonctionnalité de recherche permettant de filtrer les offres.

Contenu du fichier (Analyse ligne par ligne)


1. <h1>Nos offres d'emplois</h1>
o Cette ligne affiche un titre principal pour la page. Il informe les utilisateurs qu'ils
consultent les offres d'emploi disponibles.
2. <?php if($_SESSION['role']=="manager"){?>
o Cette condition en PHP vérifie si l'utilisateur connecté a un rôle de "manager".
o La session utilisateur (stockée dans $_SESSION) est utilisée pour déterminer si des
options supplémentaires (comme l'ajout d'une annonce) doivent être affichées.
3. <h2>Ajouter une annonce</h2>
o Si la condition précédente est vraie, ce titre secondaire est affiché, indiquant qu'une
section pour ajouter une annonce est disponible.
4. <form action="controleur/[Link]" method="POST">
o Début d'un formulaire HTML pour ajouter une annonce.
o Le formulaire envoie les données saisies à [Link] via la méthode HTTP
POST. Ce fichier PHP est chargé de gérer les données soumises et probablement
d'insérer une nouvelle annonce dans la base de données.
5. <label for="titre">Titre de l'annonce : </label>
o Crée une étiquette pour le champ de texte où l'utilisateur doit entrer le titre de l'annonce.
o Le champ correspondant est associé via l'attribut for="titre".
6. <input type="text" name="titre">
o Champ de saisie pour le titre de l'annonce.
o L'attribut name="titre" est utilisé pour transmettre cette donnée au contrôleur.
o Insère un saut de ligne pour une meilleure lisibilité dans le rendu HTML.
7. <label for="adresse">Adresse de l'annonce : </label>
o Une autre étiquette, cette fois pour le champ où l'utilisateur entre l'adresse de l'annonce.
8. <input type="text" name="adresse">
o Champ de texte pour l'adresse de l'annonce.
9. <br>
o Ajoute un saut de ligne.
10. <label for="typeCon">Type de contrat : </label>
o Demande le type de contrat (CDI, CDD, etc.).
11. <input type="text" name="typeCon">
o Champ de texte où l'utilisateur peut spécifier le type de contrat.
12. <br>
o Saut de ligne.
13. <label for="description">description de l'annonce :</label>
o Demande une description pour l'annonce.
14. <input type="text" name="description">
o Champ de texte pour entrer une description.
15. <br>
o Saut de ligne.
16. <label for="salaire">Salaire :</label>
o Une étiquette pour le champ de salaire.
17. <input type="number" name="salaire">
o Champ pour saisir un montant numérique représentant le salaire.
18. <br>
o Saut de ligne.
19. <label for="duree">Durée du contrat (noter "indéterminée" pour CDI) :</label>
o Champ pour spécifier la durée du contrat.

Vue profil
Contenu du fichier et analyse
1. <form action="controleur/[Link]" method="POST">
o Début d’un formulaire permettant de gérer la déconnexion.
o Les données du formulaire sont envoyées via la méthode POST au fichier
[Link].
2. <input type="hidden" name="action" value="deco">
o Champ caché indiquant que l’action à effectuer est la déconnexion (deco).
o Utilisé par le contrôleur pour identifier l’opération demandée.
3. <input type="submit" value="Se déconnecter">
o Bouton de soumission permettant à l’utilisateur de se déconnecter.
4. <table>
o Début d'un tableau affichant les informations du profil utilisateur.
5. <tr><th scope="row">Nom :</th><td><?= $_SESSION['nom']; ?></td></tr>
o Affiche le nom de l’utilisateur, récupéré depuis la session ($_SESSION['nom']).
6. <tr><th scope="row">Prénom :</th><td><?= $_SESSION['prenom']; ?></td></tr>
o Affiche le prénom de l’utilisateur, également récupéré depuis la session.
7. <tr><th scope="row">Adresse :</th><td><?= $_SESSION['adresse']; ?></td></tr>
o Affiche l’adresse de l’utilisateur.
8. <?php if($_SESSION['role']=='candidat'){ ?>
o Vérifie si l’utilisateur a un rôle de "candidat". Si oui, les informations spécifiques aux
candidats sont affichées.
9. <tr><th scope="row">Numéro de téléphone :</th><td><?= $_SESSION['tel'];
?></td></tr>
o Si l’utilisateur est un candidat, affiche son numéro de téléphone ($_SESSION['tel']).
10. <?php }?>
o Termine la condition PHP.
11. <tr><th scope="row">Email :</th><td><?= $_SESSION['email']; ?></td></tr>
o Affiche l’adresse email de l’utilisateur.
12. <?php if($_SESSION['role']=='candidat'){
o Une autre vérification du rôle "candidat".
13. $control="controleur/[Link]";
o Si l’utilisateur est un candidat, la variable $control est définie pour pointer vers le fichier
[Link], qui gère les modifications de mot de passe pour les candidats.
14. }else if($_SESSION['role']=='manager'){
o Si l’utilisateur est un manager, un autre contrôleur est utilisé.
15. $control="controleur/[Link]";
o Définit $control pour les managers, pointant vers [Link], qui gère les mots de
passe des managers.
16. }
o Fin de la condition PHP.

Fichier search= recherché


Structure HTML et explications
1. <form class="d-flex" role="search" id="searchbar">
o Début du formulaire HTML.
o class="d-flex" : Applique un style CSS de type "flexbox" (probablement à l'aide de
Bootstrap) pour aligner les éléments horizontalement.
o role="search" : Indique que ce formulaire est utilisé pour la recherche (amélioration de
l'accessibilité).
o id="searchbar" : Donne un identifiant unique pour référencer cet élément dans le CSS
ou JavaScript.
2. <input class="form-control me-2" type="search" id="searchinput"
placeholder="Rechercher un emploi..." aria-label="Search">
o Champ de saisie pour entrer la requête de recherche.
o class="form-control me-2" :
 form-control : Style Bootstrap pour formater les champs de formulaire.
 me-2 : Marge (margin) à droite, ajoutée pour espacer ce champ du bouton.
o type="search" : Indique que ce champ est destiné à une recherche.
o id="searchinput" : Identifiant unique pour ce champ, utile pour JavaScript.
o placeholder="Rechercher un emploi..." : Texte indicatif affiché à l'intérieur du champ
avant la saisie.
o aria-label="Search" : Fournit une description textuelle pour les technologies
d'assistance (comme les lecteurs d'écran), améliorant l'accessibilité.
3. <button class="btn btn-outline-success" id="search" type="submit">
o Bouton pour soumettre le formulaire.
o class="btn btn-outline-success" :
 btn : Applique les styles Bootstrap pour les boutons.
 btn-outline-success : Style spécifique pour un bouton à contour vert (success).
o id="search" : Identifiant pour référencer cet élément.
o type="submit" : Ce bouton soumet les données du formulaire au serveur ou au
gestionnaire de recherche.
4. Bloc SVG : Icône de recherche
o <svg xmlns="[Link] width="35" height="35"
fill="currentColor" class="bi bi-search" viewBox="0 0 16 16">
 Déclare une icône vectorielle.
 xmlns="[Link] : Définit le namespace pour les
graphiques SVG.
 width="35" height="35" : Dimensions de l'icône (35 pixels par 35 pixels).
 fill="currentColor" : Définit la couleur de l'icône selon la couleur actuelle du
texte (héritée du style).
 class="bi bi-search" : Classe Bootstrap Icons pour une icône de recherche.
 viewBox="0 0 16 16" : Définit la boîte de visualisation du SVG (dimensions
logiques pour l'échelle).
o <path>
 Définit les tracés qui forment l'icône.
 Les coordonnées et commandes décrivent la loupe, incluant un cercle et une
poignée.
5. </button>
o Fin du bouton de soumission.
6. </form>
o Fin du formulaire de recherche.
Analyse du fichier CSS
Globales (body et éléments textuels)
1. body { font-family: Arial, sans-serif; margin: 0; padding: 0; background-color: #ffffff; }
o Applique une police par défaut Arial ou, si indisponible, une police sans-serif.
o Supprime les marges et les espacements par défaut du body.
o Définit un arrière-plan blanc.
2. h1, h2 { color: #000000; text-align: center; }
o Affecte une couleur noire aux titres h1 et h2.
o Centre horizontalement le texte de ces éléments.

Section titre et sous-titre


3. .showcase { height: 200px; text-align: center; padding-top: 50px; }
o Définition d'une section avec une hauteur fixe de 200 pixels.
o Centre horizontalement son contenu et ajoute un espace supérieur de 50 pixels.
4. .showcase h1 { font-size: 55px; color: #ffffff; text-align: center; }
o Agrandit la police des h1 dans la section .showcase à 55 pixels.
o Définit leur couleur en blanc.
5. .showcase p { font-size: 22px; color: #a73333; text-align: center; }
o Agrandit la police des paragraphes de .showcase à 22 pixels.
o Définit leur couleur en rouge foncé.

Disposition globale
6. .container { width: 80%; margin: auto; overflow: hidden; }
o Définit un conteneur central qui occupe 80 % de la largeur de la page.
o Centre horizontalement ce conteneur et masque les débordements de contenu.
7. .main { padding: 20px; background: #fff; }
o Ajoute un espace intérieur (padding) de 20 pixels.
o Définit un arrière-plan blanc pour la section .main.
8. .main h2 { text-align: center; padding: 20px 0; }
o Centre les titres h2 dans .main.
o Ajoute un espace vertical de 20 pixels en haut et en bas.

Section Patron
9. .patron { max-width: 1200px; margin: 0 auto; background-color: #fff; border-radius:
10px; padding: 20px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); }
o Crée une carte pour afficher des informations sur un "patron".
o Fixe une largeur maximale de 1200 pixels et centre horizontalement l'élément.
o Ajoute un rayon de bordure de 10 pixels et une ombre subtile pour donner un effet de
profondeur.
10. .patron-container { display: flex; align-items: center; justify-content: center; gap: 30px; }
o Active la disposition en flexbox pour organiser les éléments horizontalement.
o Centre les éléments verticalement et horizontalement, avec un espace de 30 pixels entre
eux.
11. `.patron-photo { width: 200px; height: 200px; object-fit: cover; border-radius: 50%; }
o Fixe la taille de l'image à 200x200 pixels.
o Utilise object-fit: cover pour s'assurer que l'image remplit les dimensions sans être
déformée.
o Rend l'image circulaire grâce à border-radius: 50%.
12. .patron-details { max-width: 700px; }
o Limite la largeur des détails du "patron" à 700 pixels.
13. .patron-details h2 { font-size: 1.8em; margin-bottom: 10px; }
o Définit la taille des h2 à 1,8 fois la taille de police par défaut.
o Ajoute un espacement en bas de 10 pixels.
14. .patron-details h3 { font-size: 1.2em; color: #555; margin-bottom: 20px; }
o Définit une taille légèrement plus grande pour les h3 et les colore en gris moyen.
15. .patron-details p { font-size: 1.1em; line-height: 1.6; }
o Agrandit légèrement la police des paragraphes et augmente l’interligne pour améliorer la
lisibilité.

Navbar et Recherche
16. .navbar { background-color: #BDBDBD !important; }
o Colore l’arrière-plan de la barre de navigation en gris clair.
o Utilise !important pour donner priorité à cette règle.
17. .nav-link { color: black !important; font-weight: 500; }
o Définit la couleur des liens de navigation en noir.
o Applique une épaisseur moyenne au texte des liens.
18. #search { color: black; border: none; border-left: solid grey 2px; border-radius: 0%;
background-color: #BDBDBD; }
o Définit le style pour le bouton de recherche.
o Supprime les bordures sauf une bordure gauche grise.
o Applique un fond gris clair.
19. #search:hover { background-color: grey; color: white; }
o Modifie l'apparence du bouton lorsqu'il est survolé : fond gris foncé et texte blanc.
20. #searchbar { width: 80%; border: solid grey 2px; }
o Définit une largeur de 80 % et une bordure grise pour la barre de recherche.
21. #searchinput { border: none; }
o Supprime les bordures du champ de saisie dans la barre de recherche.

Pied de page (footer)


22. footer { background: #333; color: #fff; text-align: center; padding: 30px 0; margin-top:
30px; }
o Colore le fond du pied de page en gris foncé et le texte en blanc.
o Ajoute un espacement de 30 pixels autour du texte et un espace supérieur.

Autres éléments
23. #image1 { background: url(images/[Link]); padding: 35px; }
o Définit une image d'arrière-plan pour un élément avec l’ID image1.
o Ajoute un padding de 35 pixels autour de son contenu.
24. .acceuil-annonce { background-color: #BDBDBD; border-radius: 2%; }
o Définit un style pour les annonces dans la section "accueil" avec un fond gris clair et des
coins légèrement arrondis.
25. .annonce { background-color: #BDBDBD; margin: 3% 0%; }
o Colore les cartes d’annonces en gris clair et ajoute une marge verticale de 3 %.
26. a { text-decoration: none; }
o Supprime le soulignement par défaut des liens.

Relation avec d'autres fichiers


 HTML/PHP : Ce fichier est lié aux fichiers HTML ou PHP via une balise <link> dans le
<head> de ces pages. Par exemple :
html
Copier le code
<link rel="stylesheet" href="css/[Link]">
 JavaScript : Les ID (#searchbar, #search) ou classes (.navbar) peuvent être manipulés via des
scripts pour ajouter des interactions dynamiques.
 Images : Le fichier fait référence à une image images/[Link], supposée se trouver dans
un dossier adjacent.

Classe Annonce

Déclaration de la classe et constructeur

php
Copier le code
class Annonce
{
function __construct($bdd)
{
$this->bdd = $bdd;
}
}

 class Annonce : Déclare une classe nommée Annonce qui contiendra les méthodes de gestion
des annonces (CRUD).
 function __construct($bdd) : Méthode spéciale appelée lors de l'instanciation de la classe.
Elle initialise la connexion à la base de données en stockant l'objet $bdd (une instance PDO)
dans l'attribut $this->bdd.

Méthode addAnn

php
Copier le code
public function addAnn($titre, $adresse, $typeCon, $description,$salaire,$duree,
$dateAnn,$idManager)
{
$req = $this->bdd->prepare("INSERT INTO Annonce (Titre, Adresse, TypeCon,
description, Salaire, Duree, DateAnn, IdManager) VALUES
(:titre , :adresse, :typeCon, :description, :salaire, :duree, :dateAnn, :idManager)
");
$req->bindParam(':titre', $titre);
$req->bindParam(':adresse', $adresse);
$req->bindParam(':typeCon', $typeCon);
$req->bindParam(':description', $description);
$req->bindParam(':salaire', $salaire);
$req->bindParam(':duree', $duree);
$req->bindParam(':dateAnn', $dateAnn);
$req->bindParam(':idManager', $idManager);
var_dump($req); // Affiche la requête SQL
return $req->execute();
}

 addAnn : Ajoute une nouvelle annonce dans la base de données.


 $this->bdd->prepare : Prépare une requête SQL paramétrée pour éviter les injections SQL.
 bindParam : Associe chaque paramètre de la requête SQL à une variable PHP pour sécuriser les
données avant l'exécution.
 var_dump($req) : Affiche la requête préparée pour débogage.
 execute : Exécute la requête préparée. Retourne true si la requête réussit.

Méthode allAnn

php
Copier le code
public function allAnn()
{
$req = $this->bdd->prepare("SELECT * FROM Annonce");
$req->execute();
return $req->fetchAll();
}

 allAnn : Récupère toutes les annonces de la table Annonce.


 fetchAll : Retourne tous les résultats de la requête sous forme de tableau associatif.

Méthode deleteAnn

php
Copier le code
public function deleteAnn($idA)
{
$req = $this->bdd->prepare("DELETE FROM Annonce WHERE idAnnonce = ?");
return $req->execute([$idA]);
}

 deleteAnn : Supprime une annonce de la base de données selon son identifiant (idAnnonce).
 execute([$idA]) : Exécute la requête en passant l'identifiant de l'annonce en paramètre.
Méthode updateAnn

php
Copier le code
public function updateAnn($titre, $adresse, $typeCon, $description, $salaire,
$duree, $idA)
{
$stmt = $this->bdd->prepare("UPDATE Annonce SET Titre = :titre, Adresse
= :adresse, TypeCon= :typeCon, description = :description, Salaire = :salaire,
Duree = :duree WHERE idAnnonce = :idA");
$stmt->bindParam(':titre', $titre);
$stmt->bindParam(':adresse', $adresse);
$stmt->bindParam(':typeCon', $typeCon);
$stmt->bindParam(':description', $description);
$stmt->bindParam(':salaire', $salaire);
$stmt->bindParam(':duree', $duree);
$stmt->bindParam(':idA', $idA);
return $stmt->execute();
}

 updateAnn : Met à jour les informations d'une annonce selon son identifiant (idAnnonce).
 Les paramètres sont liés à la requête SQL via bindParam pour sécuriser les entrées utilisateur.
 La requête SQL UPDATE met à jour uniquement les champs spécifiés.

Méthode getAnnById

php
Copier le code
public function getAnnById($idA)
{
$stmt = $this->bdd->prepare('SELECT * FROM Annonce WHERE idAnnonce = ?');
$stmt->execute([$idA]);
return $stmt->fetch();
}

 getAnnById : Récupère les informations d'une annonce spécifique en utilisant son identifiant.
 fetch : Retourne le premier (et unique) résultat correspondant à la requête.

Objectif général du code

Cette classe implémente des opérations CRUD (Create, Read, Update, Delete) pour une table nommée
Annonce dans une base de données SQL. Elle utilise des requêtes préparées pour sécuriser les
interactions avec la base et assurer la modularité et la réutilisabilité du code.

Classe Candidat

Déclaration de la classe et constructeur


php
Copier le code
class Candidat
{
function __construct($bdd)
{
$this->bdd = $bdd;
}
}

 class Candidat : Déclare une classe nommée Candidat contenant les méthodes CRUD pour
gérer les candidats.
 function __construct($bdd) : Le constructeur initialise une connexion à la base de données.
L'objet $bdd (instance PDO) est passé comme argument et stocké dans la propriété $this->bdd.

Méthode addCand

php
Copier le code
public function addCand($nom, $prenom, $adresse, $tel, $email, $mdp)
{
$req = $this->bdd->prepare("INSERT INTO Candidat (Nom, Prenom, Adresse, Tel,
Email, Mdp) VALUES (:nom , :prenom, :adresse, :tel, :email, :mdp)");
$req->bindParam(':nom', $nom);
$req->bindParam(':prenom', $prenom);
$req->bindParam(':adresse', $adresse);
$req->bindParam(':tel', $tel);
$req->bindParam(':email', $email);
$req->bindParam(':mdp', $mdp);

return $req->execute();
}

 addCand : Ajoute un candidat dans la table Candidat.


 $this->bdd->prepare : Prépare une requête SQL paramétrée pour sécuriser les données contre
les injections SQL.
 bindParam : Associe les variables PHP aux paramètres nommés dans la requête SQL.
 execute : Exécute la requête. Retourne true si l'insertion réussit.

Méthode allCand

php
Copier le code
public function allCand()
{
$req = $this->bdd->prepare("SELECT * FROM Candidat");
$req->execute();
return $req->fetchAll();
}

 allCand : Récupère toutes les lignes de la table Candidat.


 fetchAll : Retourne tous les résultats sous forme de tableau associatif.
Méthode deleteCand

php
Copier le code
public function deleteCand($idC)
{
$req = $this->bdd->prepare("DELETE FROM Candidat WHERE idCandidat = ?");
return $req->execute([$idC]);
}

 deleteCand : Supprime un candidat en fonction de son identifiant (idCandidat).


 execute([$idC]) : Exécute la requête en remplaçant le ? par la valeur de $idC.

Méthode updateCand

php
Copier le code
public function updateCand($nom, $prenom, $adresse, $tel, $email, $idC)
{
$stmt = $this->bdd->prepare("UPDATE Candidat SET Nom = :nom, Prenom = :prenom,
Adresse = :adresse, Tel = :tel, Email = :email WHERE idCandidat = :idC");
$stmt->bindParam(':nom', $nom);
$stmt->bindParam(':prenom', $prenom);
$stmt->bindParam(':adresse', $adresse);
$stmt->bindParam(':tel', $tel);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':idC', $idC);
return $stmt->execute();
}

 updateCand : Met à jour les informations personnelles d'un candidat. Notez que le mot de passe
n'est pas modifié ici.
 La requête utilise des paramètres nommés sécurisés.
 execute : Exécute la mise à jour et retourne un booléen (true si réussi).

Méthode updateMdp

php
Copier le code
public function updateMdp($mdp, $idC)
{
$stmt = $this->bdd->prepare("UPDATE Candidat SET Mdp = :mdp WHERE idCandidat
= :idC");
$stmt->bindParam(':mdp', $mdp);
$stmt->bindParam(':idC', $idC);
return $stmt->execute();
}

 updateMdp : Met à jour le mot de passe du candidat. Cette action est séparée pour des raisons de
sécurité.
 bindParam : Lie le mot de passe crypté et l'identifiant du candidat à la requête SQL.
 execute : Exécute la requête de mise à jour.

Méthode getCandById

php
Copier le code
public function getCandById($email)
{
$stmt = $this->bdd->prepare("SELECT * FROM Candidat WHERE Email = ?");
$stmt->execute([$email]);
$candidat = $stmt->fetch(PDO::FETCH_ASSOC);
return $candidat ?: null; // Retourne null si aucun résultat trouvé
}

 getCandById : Récupère un candidat en fonction de son adresse e-mail.


 fetch(PDO::FETCH_ASSOC) : Récupère la première ligne correspondant à la requête sous forme
de tableau associatif.
 Retourne null si aucun candidat n'est trouvé.

Objectif général

Cette classe fournit une interface pour gérer les informations des candidats dans la base de données :

1. Création : Ajouter un nouveau candidat avec addCand.


2. Lecture : Récupérer tous les candidats ou un candidat spécifique avec allCand et getCandById.
3. Mise à jour : Modifier les informations personnelles ou le mot de passe avec updateCand et
updateMdp.
4. Suppression : Supprimer un candidat via deleteCand.

Les méthodes utilisent des requêtes préparées pour éviter les failles de sécurité (ex. injections SQL).

Classe Candidature
Déclaration de la classe et constructeur

php
Copier le code
class Candidature
{
function __construct($bdd)
{
$this->bdd = $bdd;
}
}

 class Candidature : Déclare une classe nommée Candidature, qui gère les opérations CRUD
pour les candidatures.
 function __construct($bdd) : Le constructeur initialise une connexion à la base de données
en recevant une instance PDO ($bdd) et la stocke dans $this->bdd.

Méthode ajouterCandidature

php
Copier le code
public function ajouterCandidature($cv, $motivation, $extraDoc)
{
$req = $this->bdd->prepare("INSERT INTO candidature (Cv, Motivation, ExtraDoc)
VALUES (:cv , :motivation, :extraDoc)");
$req->bindParam(':cv', $cv, PDO::PARAM_LOB);
$req->bindParam(':motivation', $motivation, PDO::PARAM_LOB);
$req->bindParam(':extraDoc', $extraDoc, PDO::PARAM_LOB);

return $req->execute();
}

 ajouterCandidature : Ajoute une nouvelle candidature dans la table candidature.


 prepare : Prépare une requête SQL pour sécuriser les données avant leur insertion.
 bindParam : Lie les variables aux paramètres SQL :
o PDO::PARAM_LOB : Utilisé pour des données volumineuses (ex. fichiers ou texte long).
 execute : Exécute la requête préparée et retourne true si elle réussit.

Méthode allCandidature

php
Copier le code
public function allCandidature()
{
$req = $this->bdd->prepare("SELECT * FROM candidature");
$req->execute();
return $req->fetchAll();
}

 allCandidature : Récupère toutes les candidatures de la table candidature.


 fetchAll : Retourne un tableau associatif contenant toutes les lignes de résultats.

Méthode supprimerCandidature

php
Copier le code
public function supprimerCandidature($id)
{
$req = $this->bdd->prepare("DELETE FROM candidature WHERE ID_Candidature = ?");
return $req->execute([$id]);
}
 supprimerCandidature : Supprime une candidature de la table en fonction de son identifiant
(ID_Candidature).
 execute([$id]) : Remplace le ? dans la requête SQL par la valeur de $id.

Méthode updateCandidature

php
Copier le code
public function updateCandidature($cv, $motivation, $extraDoc, $id)
{
$stmt = $this->bdd->prepare("UPDATE candidature SET Cv = :cv, Motivation
= :motivation, ExtraDoc = :extraDoc WHERE ID_Candidature = :id");
$stmt->bindParam(':cv', $cv, PDO::PARAM_LOB);
$stmt->bindParam(':motivation', $motivation, PDO::PARAM_LOB);
$stmt->bindParam(':extraDoc', $extraDoc, PDO::PARAM_LOB);
$stmt->bindParam(':id', $id);
return $stmt->execute();
}

 updateCandidature : Met à jour les informations d'une candidature (CV, lettre de motivation et
documents supplémentaires).
 bindParam : Associe les données des paramètres nommés dans la requête SQL.
 PDO::PARAM_LOB : Spécifie que les colonnes contiennent des données volumineuses comme des
fichiers.

Méthode getCandidatureById

php
Copier le code
public function getCandidatureById($id)
{
$stmt = $this->bdd->prepare('SELECT * FROM candidature WHERE ID_Candidature
= ?');
$stmt->execute([$id]);
return $stmt->fetch();
}

 getCandidatureById : Récupère une candidature spécifique en fonction de son identifiant


(ID_Candidature).
 fetch : Retourne la première ligne de la requête sous forme de tableau associatif.

Objectif général

La classe Candidature fournit des méthodes pour gérer les candidatures dans une base de données :

1. Création : Ajout de nouvelles candidatures avec ajouterCandidature.


2. Lecture :
o Récupérer toutes les candidatures avec allCandidature.
o Obtenir une candidature spécifique avec getCandidatureById.
3. Mise à jour : Modifier les informations d'une candidature avec updateCandidature.
4. Suppression : Supprimer une candidature via supprimerCandidature.

Sécurisation et gestion des données volumineuses

 Les champs comme Cv, Motivation et ExtraDoc utilisent PDO::PARAM_LOB, indiquant qu'ils
peuvent contenir de gros fichiers ou du texte volumineux.
 Toutes les requêtes sont préparées pour prévenir les injections SQL.

Classe Manager
Déclaration de la classe et constructeur
php
Copier le code
class Manager
{
function __construct($bdd)
{
$this->bdd = $bdd;
}
}
 class Manager : Déclare une classe nommée Manager pour gérer les managers dans une base de
données.
 function __construct($bdd) : Le constructeur initialise une connexion à la base de données en
recevant une instance PDO ($bdd). Cette instance est stockée dans la propriété $this->bdd pour
être utilisée dans les méthodes de la classe.

Méthode getManById
php
Copier le code
public function getManById($email, $mdp)
{
$stmt = $this->bdd->prepare("SELECT * FROM Manager WHERE email = ?");
$stmt->execute([$email]);
$manager = $stmt->fetch(PDO::FETCH_ASSOC);
return $manager ?: null; // Retourne null si aucun résultat trouvé
}
 getManById : Récupère les informations d'un manager dans la table Manager en fonction de
son adresse e-mail.
 prepare : Prépare une requête SQL sécurisée pour éviter les injections SQL.
 execute([$email]) : Exécute la requête en remplaçant le ? par la valeur de $email.
 fetch(PDO::FETCH_ASSOC) : Récupère la première ligne correspondante sous forme de
tableau associatif.
 return $manager ?: null : Si aucun manager n'est trouvé, retourne null.

Méthode updateMdp
php
Copier le code
public function updateMdp($mdp, $idM)
{
$stmt = $this->bdd->prepare("UPDATE Manager SET mdp = :mdp WHERE idManager = :idM");
$stmt->bindParam(':mdp', $mdp);
$stmt->bindParam(':idM', $idM);
return $stmt->execute();
}
 updateMdp : Met à jour le mot de passe d'un manager dans la table Manager.
 prepare : Prépare une requête SQL sécurisée pour éviter les failles de sécurité.
 bindParam :
o :mdp : Lie le nouveau mot de passe à la requête.
o :idM : Lie l'identifiant du manager pour cibler la ligne à mettre à jour.
 execute : Exécute la requête et retourne true si la mise à jour réussit.

Objectif général
La classe Manager offre des méthodes pour :
1. Lecture : Récupérer les informations d'un manager grâce à l'adresse e-mail avec getManById.
2. Mise à jour : Modifier le mot de passe d'un manager avec updateMdp.
Sécurité
 Les méthodes utilisent des requêtes préparées avec PDO, ce qui protège contre les injections
SQL.
 Le mot de passe est traité avec soin dans les méthodes (on suppose qu'il est hashé avant d'être
passé à updateMdp).
Suggestions d'amélioration
 Ajouter une méthode pour ajouter de nouveaux managers (addManager).
 Inclure une vérification plus stricte sur le mot de passe dans getManById pour l'utiliser dans une
logique d'authentification.

Index

Déclaration de la session et initialisation


php
Copier le code
session_start();
$_SESSION['location']="[Link]
if(!isset($_SESSION['role'])){
$_SESSION['role']="visiteur";
}
var_dump($_SESSION['role']);

1. session_start() : Lance une session pour permettre de stocker et accéder à des variables de
session.
2. $_SESSION['location'] : Définit une variable de session contenant l'URL de base du site.
3. if (!isset($_SESSION['role'])) : Vérifie si le rôle n'est pas encore défini dans la session.
o Si absent, définit le rôle par défaut en tant que "visiteur".
4. var_dump($_SESSION['role']) : Affiche le rôle actuel pour déboguer.
Définition des variables en fonction du rôle
php
Copier le code
if(($_SESSION['role']== "candidat") ||($_SESSION['role']== "manager")){
$page5="vue_profil.php";
$sous5="Mon profil";
}else{
$page5="vue_connexion.php";
$sous5="Se connecter";
}

1. Vérifie si le rôle est "candidat" ou "manager".


2. Si vrai :
o $page5 : Définit la vue de profil.
o $sous5 : Texte pour la navigation indiquant "Mon profil".
3. Sinon :
o Définit $page5 sur la vue de connexion.
o Définit $sous5 sur "Se connecter".

Titre par défaut et récupération de la page


php
Copier le code
if(!isset($title)){
$title = "Fromsoftware Recrutement" ;
}
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}

1. Définit un titre par défaut si la variable $title n’est pas déjà définie.
2. Récupère la valeur de page dans l’URL via $_GET. Si aucune valeur n'est trouvée, la page par
défaut est 1.

Définition dynamique du titre


php
Copier le code
switch ($page) {
case 1:
$title="Fromsoftware Recrutement";
break;
case 2:
$title="Nos offres d'emplois";
break;
case 3:
$title="Canidatures spontannées";
break;
case 4:
$title="À propos";
break;
case 5:
if($page5=="vue_profil.php"){
$title="Mon profil";
}else{
$title="Se connecter / S'inscrire";
}
break;
case 6:
$title="Mon profil";
break;
case 7:
$title="Détail offre";
break;
}

1. Utilise un switch pour ajuster dynamiquement le titre de la page en fonction de sa valeur.


2. Les cas spécifiques assignent des titres adaptés pour chaque type de page.

Structure HTML : En-tête et menu de navigation


html
Copier le code
<!DOCTYPE html>
<html>
<head>
<title> <?= $title ?> </title>
<link
href="[Link]
rel="stylesheet" integrity="sha384-
QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH"
crossorigin="anonymous">
<link rel="stylesheet" href="[Link]">
</head>
<body>
<header>
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand" href="[Link]"> <img src="images/[Link]"
width="450" height="90"> </a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-
expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" aria-current="page" href="[Link]?
page=1">Acceuil</a>
</li>
<li class="nav-item">
<a class="nav-link" href="[Link]?page=2">Offres</a>
</li>
<li class="nav-item">
<a class="nav-link" href="[Link]?page=3">Candidature Spontanée</a>
</li>
<li class="nav-item">
<a class="nav-link" href="[Link]?page=4">À Propos</a>
</li>
</ul>
<form class="d-flex">
<a class="nav-link" href="[Link]?page=5">
<svg xmlns="[Link] width="16" height="16"
fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16">
<path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
<path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0
8m8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0
0 0 8 1"/>
</svg>
<?= $sous5 ?>
</a>
</form>
</div>
</div>
</nav>
</header>

1. Définit un en-tête HTML avec un titre dynamique basé sur $title.


2. Le menu de navigation comprend plusieurs pages (Accueil, Offres, Candidatures Spontanées, À
propos).
3. Un bouton mène au profil ou à la connexion selon le rôle via $sous5.

Affichage des contenus dynamiques


php
Copier le code
<center>
<div class="container">
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
switch ($page) {
case 1:
require_once("vue/vue_accueil.php");
break;
case 2:
require_once("vue/vue_offres.php");
break;
case 3:
require_once("vue/vue_candidature.php");
break;
case 4:
require_once("vue/vue_presentation.php");
break;
case 5:
require_once("vue/$page5");
break;
case 6:
require_once("vue/vue_profil.php");
break;
case 7:
require_once("vue/vue_detail.php");
break;
}
?>
</div>
</center>

1. Charge dynamiquement les pages de contenu selon la valeur de page passée dans l’URL.
2. Les fichiers inclus sont placés dans le répertoire vue.

Pied de page
html
Copier le code
<footer>
<p>FROM SOFTWARE &copy; 2024. Tous droits réservés.</p>
</footer>
</html>

1. Affiche un pied de page standard avec un message de copyright.

Vue candidature
1. <center>
 Description : Centre le contenu qui suit horizontalement.
 Usage : Permet de centrer visuellement le contenu, ici le titre <h1>Postuler</h1>.
 Remarque : L'utilisation de <center> est considérée comme obsolète dans HTML5.
On recommande plutôt l'usage de CSS (ex. : text-align: center;).

2. <h1>Postuler</h1>
 Description : Crée un titre principal de niveau 1, affiché en grand.
 Usage : Le titre "Postuler" informe l'utilisateur du but du formulaire.

3. <form action="controleur/[Link]" method="post"


enctype="multipart/form-data">
 Description :
o Définit un formulaire HTML.

o Attributs :
 action : Spécifie le fichier PHP où les données du formulaire seront
envoyées pour traitement.
 method="post" : Définit la méthode HTTP pour l'envoi, ici POST,
utilisée pour transmettre des données sensibles.
 enctype="multipart/form-data" : Permet d'envoyer des fichiers
(nécessaire pour les champs <input type="file">).
 Usage : Prépare l'envoi des données (CV, lettre, etc.) au script
[Link].

4. <div id="candidature">
 Description : Délimite une section du formulaire et lui attribue l’identifiant
candidature.
 Usage : Permet d'appliquer un style ou une logique spécifique à cette section.

5. <label for="cv"><b>CV* :</b></label>


 Description :
o Le <label> associe un texte descriptif au champ d'entrée (attribut for="cv"
fait référence à l’identifiant du champ correspondant).
o Le texte "CV :"* indique que ce champ est obligatoire (*).

o <b> met le texte en gras.

 Usage : Indique clairement à l'utilisateur qu'il doit joindre son CV.

6. <br><br>
 Description : Insère deux sauts de ligne.
 Usage : Espacement visuel entre les éléments pour améliorer la lisibilité.

7. <input type="file" id="cv" name="cv" accept="application/pdf" required>


 Description :
o Crée un champ permettant de sélectionner un fichier.

o Attributs :

 type="file" : Spécifie qu'il s'agit d'un champ de téléchargement.


 id="cv" : Identifie cet élément dans le DOM (Document Object Model).
 name="cv" : Définit le nom sous lequel le fichier sera transmis au
backend.
 accept="application/pdf" : Restreint les fichiers acceptés au format
PDF.
 required : Rend le champ obligatoire.
 Usage : Permet à l'utilisateur de téléverser son CV en format PDF.

8. <label for="motivation"><b>Lettre de motivation (optionnel) :</b></label>


 Description : Similaire à la ligne 5, mais pour une lettre de motivation. Le texte
indique que ce champ est optionnel.
 Usage : Informe l'utilisateur qu'il peut joindre une lettre de motivation.

9. <input type="file" id="motivation" name="motivation"


accept="application/pdf">
 Description : Similaire à la ligne 7, mais pour la lettre de motivation.
 Usage : Permet de téléverser une lettre de motivation au format PDF. Pas
obligatoire.

10. <label for="extraDoc"><b>Dossier supplémentaire (optionnel)


:</b></label>
 Description : Similaire à la ligne 8, pour des documents supplémentaires.
 Usage : Demande à l'utilisateur de téléverser d'autres documents utiles à sa
candidature.

11. <input type="file" id="extraDoc" name="extraDoc"


accept="application/pdf">
 Description : Similaire à la ligne 9, mais pour des documents supplémentaires.
 Usage : Offre la possibilité de téléverser des fichiers additionnels (format PDF
uniquement). Pas obligatoire.

12. <input type="hidden" name="action" value="ajouter">


 Description :
o Crée un champ masqué.

o Attributs :

 type="hidden" : Rend le champ invisible pour l'utilisateur.


 name="action" : Nom du champ envoyé au backend.
 value="ajouter" : Valeur transmise pour identifier l'action demandée
(ajouter une candidature).
 Usage : Permet au backend de reconnaître l'opération effectuée par ce formulaire
sans intervention de l'utilisateur.

13. <input type="submit" value="valider">


 Description :
o Crée un bouton de soumission.

o Attributs :

 type="submit" : Déclenche l'envoi du formulaire.


 value="valider" : Texte affiché sur le bouton.
 Usage : Permet à l'utilisateur de valider et soumettre sa candidature.

14. </div>
 Description : Ferme la division div ouverte en ligne 4.
 Usage : Termine la section du formulaire associée à la candidature.

15. </form>
 Description : Ferme le formulaire commencé à la ligne 3.
 Usage : Indique la fin des champs de saisie et options d'envoi.

En résumé, ce formulaire permet de collecter des fichiers (CV, lettre de motivation,


documents supplémentaires) en vue de postuler à une offre. Chaque champ est bien défini
avec des indications claires sur leur utilité et obligation.

Vue acceuil
1. <div id="acceuil">
 Description : Ouvre une section avec l’identifiant acceuil.
 Usage : Permet d'appliquer un style ou de cibler cette section via CSS ou
JavaScript.

2. <h1>Bienvenue chez FROMSOFTWARE !</h1>


 Description : Crée un titre principal de niveau 1 affiché en grand.
 Usage : Accueille les visiteurs sur la page principale du site.
3.
php
Copier le code
<?php
include('./parts/[Link]');
include_once("controleur/[Link]");
?>
 Description :
o include('./parts/[Link]') : Intègre le contenu du fichier [Link], qui est
probablement un module de recherche.
o include_once("controleur/[Link]") : Inclut une seule fois le fichier
[Link], qui semble contenir une logique ou des données liées aux
annonces.
 Usage : Charge les fonctionnalités nécessaires (comme la recherche ou la
récupération des annonces).

4. <h2>Nos dernières offres !</h2>


 Description : Crée un sous-titre de niveau 2.
 Usage : Présente une section dédiée aux offres récentes.

5. <div class="row d-flex justify-content-around">


 Description :
o Crée une rangée (row) de colonnes flexibles pour organiser les éléments.

o Classes utilisées :

 d-flex : Active le mode flexbox.


 justify-content-around : Espace les éléments uniformément avec un
espace entre eux.
 Usage : Structure les offres en colonnes.

6.
php
Copier le code
<?php
include_once("./controleur/[Link]");
$i=0;
foreach ($allAnn as $value)
{
 Description :
o include_once("./controleur/[Link]") : Recharge les données des
annonces.
o $i=0; : Initialise un compteur pour limiter le nombre d'annonces affichées.

o foreach ($allAnn as $value) : Parcourt chaque annonce contenue dans


$allAnn.
 Usage : Prépare la boucle pour afficher les détails des annonces.

7.
php
Copier le code
$i++;
echo'
<div class="col-3 acceuil-annonce">
<h3>'.$value['titre'].'</h3>
<p class="loc-acceuil d-flex justify-content-start">Localisation
:'.$value['adresse'].'</p>
<p class="type-acceuil d-flex justify-content-start">Type de contrat :'.
$value['typeCon'].'</p>
<p class="desc-acceuil d-flex justify-content-start">description :'.
$value['description'].'</p>
<p class="date-acceuil d-flex justify-content-end">'.$value['dateAnn'].'</p>
<form action="controleur/[Link]" method="POST">
<input type="hidden" name="idA" value="'.$value['idAnnonce'].'">
<input type="hidden" name="action" value="detail">
<input type="submit" value="Voir le détail de l\'annonce">
</form>
</div>
';
 Description :
o echo : Affiche dynamiquement une carte pour chaque annonce.

o Classes utilisées :

 col-3 : Définit la largeur de chaque annonce (1/4 de la rangée en mode


Bootstrap).
 acceuil-annonce : Applique un style personnalisé à chaque carte.
 d-flex justify-content-start/end : Utilise Flexbox pour aligner le contenu.
o Contenu affiché :

 Titre ($value['titre']).
 Localisation ($value['adresse']).
 Type de contrat ($value['typeCon']).
 Description ($value['description']).
 Date de publication ($value['dateAnn']).
o Formulaire :

 action="controleur/[Link]" : Envoie les données pour


obtenir les détails de l'annonce.
 Champs cachés :
 idA : Identifiant de l'annonce.
 action : Instruction pour obtenir les détails.
 Bouton submit : Permet de voir les détails d'une annonce.
 Usage : Affiche une carte pour chaque annonce avec ses détails et un bouton pour
plus d'informations.

8.
php
Copier le code
if($i>2){
break;
}
 Description : Vérifie si plus de deux annonces ont été affichées. Si c'est le cas, la
boucle foreach s'arrête.
 Usage : Limite l'affichage à trois annonces maximum.

9.
php
Copier le code
?>
<a href="./[Link]?page=2">Voir plus d'offres ?</a>
 Description :
o Ferme la boucle PHP.

o Ajoute un lien hypertexte vers la page 2 (page=2), où probablement d'autres


offres sont listées.
 Usage : Fournit un accès pour afficher plus d'annonces.

10. </div>
 Description : Ferme la division ouverte en ligne 5.
 Usage : Termine la rangée des annonces.

En résumé :
Ce code crée une section d'accueil affichant un message de bienvenue et une liste des
trois dernières offres d'emploi. Chaque annonce est affichée dans une carte avec des
détails essentiels et un bouton pour voir plus d'informations. Si l'utilisateur souhaite voir
toutes les offres, un lien le redirige vers une page dédiée.

Vous aimerez peut-être aussi