diff --git a/about/index.php b/about/index.php index 542c8a8..0463ba0 100644 --- a/about/index.php +++ b/about/index.php @@ -3,7 +3,15 @@ + + Qui sommes-nous ? - Elite Solar + + + + + + @@ -12,17 +20,28 @@
-

Elite Solar

- Menu - +
+ + Menu + +
+ +

Qui sommes-nous ?


@@ -40,40 +59,26 @@

Les motivations de notre équipe sont principalement axées sur l’écologie et l’innovation. En effet grâce à notre technologie nous contribuons à la promotion des énergies renouvelables, et de ce fait, à la réduction de l’empreinte carbone. Nous permettons à tous d’accéder à une nouvelle manière innovante de consommer l’électricité, il est indispensable d’innover dans ce domaine afin de préserver l’environnement.

Notre équipe

-

Notre équipe est constituée tout d'abord des trois fondateurs, Lyanis Souidi, Tom Moguljak et Romain Journeau, et d'une autre part d'ingénieurs spécialisés dans les cellules photovoltaïque. Pour les futurs candidats, nous veillerons à ce que ces derniers adhèrent à notre culture d’entreprise, les candidats devront notamment être engagés dans la protection de l’environnement, l’une des valeurs fondamentales de notre projet. Le niveau d’expertise des candidats sera également un point important pour nos recrutements étant donné que nous proposons une technologie très innovante.

+

Notre équipe est constituée tout d'abord des trois fondateurs, Lyanis Souidi, Tom Moguljak et Romain Journeau, et d'une autre part d'ingénieurs spécialisés dans les cellules photovoltaïque. Pour les futurs candidats, nous veillerons à ce que ces derniers adhèrent à notre culture d’entreprise, les candidats devront notamment être engagés dans la protection de l’environnement, l’une des valeurs fondamentales de notre projet. Le niveau d’expertise des candidats sera également un point important pour nos recrutements étant donné que nous proposons une technologie très innovante.

+ + diff --git a/assets/css/blog.css b/assets/css/blog.css new file mode 100644 index 0000000..dbea135 --- /dev/null +++ b/assets/css/blog.css @@ -0,0 +1,3 @@ +#articles li { + margin-bottom: 15px; +} \ No newline at end of file diff --git a/assets/css/footer.css b/assets/css/footer.css index 3bddcdb..e8ce5fe 100644 --- a/assets/css/footer.css +++ b/assets/css/footer.css @@ -1,100 +1,32 @@ footer { - background: var(--c-bg-footer); - color: var(--c-footer-text); - display: grid; - align-items: center; -} - -footer div p { - font-size: 25pt; - text-align: center; -} - -#social ul { - display: inline-block; -} - -#social li { - display: inline; -} - -#copyright { - text-align: center; - padding-top: 25px; - padding-bottom: 25px; - height: 100%; + padding-top: 1rem; + padding-bottom: 1rem; background-color: #21262d; - margin: 0; + color: #ddd; } - -#social, #sitemap, #contact { - height: max-content; -} - -footer a { - color: var(--c-footer-text); - text-decoration: none; -} - -#contact a:hover, #sitemap a:hover { - text-decoration: underline; -} - -#social ul { +footer div.content { display: flex; - justify-content: center; - padding: 0; + align-items: center; + justify-content: space-between; + max-width: 1280px; + margin-right: auto; + margin-left: auto; + padding-right: 1rem; + padding-left: 1rem; } -#social li { - padding: 20px; +footer div.text { + display: flex; + gap: 1.5rem; + font-size: 14px; } -#sitemap ul { - list-style: none; +footer div.text a { + color: #ddd; } -#sitemap li, #contact li { - padding-bottom: 15px; -} - -footer ul { - font-weight: 600; -} - -#contact ul { - list-style: none; - text-align: center; - padding: 0; -} - -#contact a[href^="tel:"]::before { - content: "☎️ "; -} - -#contact a[href^="mailto:"]::before { - content: "✉️ "; -} - -@media screen and (min-width: 800px) { - footer { - grid-template-columns: 1fr 1fr 1fr; - grid-template-rows: 85% 15%; - } - - #social, #sitemap, #contact { - grid-row: 1; - } - - #copyright { - grid-column: 1/4; - grid-row: 2; - } -} - -@media screen and (max-width: 800px) { - footer { - grid-template-columns: 100%; - grid-auto-rows: auto; - } +footer div.social { + display: flex; + gap: 1rem; + align-items: center; } \ No newline at end of file diff --git a/assets/css/header.css b/assets/css/header.css index 9634419..2e37cae 100644 --- a/assets/css/header.css +++ b/assets/css/header.css @@ -5,6 +5,33 @@ header { min-height: 100px; } +header div { + max-width: 1280px; + margin-right: auto; + margin-left: auto; + padding-right: 1rem; + padding-left: 1rem; +} + +header #logo { + filter: invert(100%); + float: left; +} + +@media (prefers-color-scheme: light) { + header { + background-color: #edecec; + } + + #burger-menu { + filter: none; + } + + header #logo { + filter: none; + } +} + header h1 { float: left; font-size: 25px; @@ -35,6 +62,7 @@ header h1 { #burger-menu { transform: translateY(25%); + filter: invert(100%); } @media screen and (min-width: 700px) { diff --git a/assets/css/home.css b/assets/css/home.css index 5fec2a3..7dc4d81 100644 --- a/assets/css/home.css +++ b/assets/css/home.css @@ -22,9 +22,9 @@ display: inline; max-width: 1280px; margin-left: auto; margin-right: auto; - } + } - p { + main p { padding-left: 5%; padding-right: 5%; padding-bottom: 2%; diff --git a/assets/css/style.css b/assets/css/style.css index d61971f..d5dca32 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -99,4 +99,35 @@ main a:hover::after { .right, .left { grid-column: 1; } +} + +#backToTop { + display: none; + position: fixed; + bottom: 55px; + right: 55px; + z-index: 99; + font-size: 18px; + border: none; + outline: none; + background-color: #00A6ED; + padding: 15px; + border-radius: 4px; +} + +#backToTop:hover { + background-color: #555; +} + +nav.crumbs { + border-bottom: 1px solid var(--c-b-primary); +} + +.crumbs ol { + list-style-type: none; + padding-left: 0; +} + +.crumb { + display: inline-block; } \ No newline at end of file diff --git a/assets/css/team.css b/assets/css/team.css new file mode 100644 index 0000000..10d4f59 --- /dev/null +++ b/assets/css/team.css @@ -0,0 +1,81 @@ +@media screen and (min-width: 700px) { + #team { + display: grid; + grid-template-columns: repeat(3, 1fr); + } + + main p#join, #team { + text-align: center; + } +} + +@media screen and (min-width: 850px) { + #cv { + display: grid; + grid-template-columns: 1fr 2fr; + gap: 25px; + } + + #skill { + display: grid; + grid-template-columns: repeat(2, 1fr); + } + + #skill h2 { + grid-column: 1/3; + } +} + +ul#social { + display: inline-block; + display: flex; + padding: 0; + list-style: none; +} + +ul#social li { + display: inline; + padding: 10px; +} + +img[alt="github"] { + filter: invert(100%); +} + +@media (prefers-color-scheme: light) { + img[alt="github"] { + filter: none; + } +} + +@media print { + * { + background-color: transparent !important; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; + } + + header, footer { + display: none; + } + + #cv { + display: grid; + grid-template-columns: 1fr 2fr; + gap: 25px; + } + + #skill { + display: grid; + grid-template-columns: repeat(2, 1fr); + } + + #skill h2 { + grid-column: 1/3; + } +} + +#articles li { + margin-bottom: 15px; +} \ No newline at end of file diff --git a/assets/img/favicon_dark.ico b/assets/img/favicon_dark.ico new file mode 100644 index 0000000..5641ad1 Binary files /dev/null and b/assets/img/favicon_dark.ico differ diff --git a/assets/img/favicon_light.ico b/assets/img/favicon_light.ico new file mode 100644 index 0000000..f215681 Binary files /dev/null and b/assets/img/favicon_light.ico differ diff --git a/assets/img/github.svg b/assets/img/github.svg new file mode 100644 index 0000000..37fa923 --- /dev/null +++ b/assets/img/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/logo_blanc2.png b/assets/img/logo_blanc2.png index 4ed1582..d625cd1 100644 Binary files a/assets/img/logo_blanc2.png and b/assets/img/logo_blanc2.png differ diff --git a/assets/img/logo_noir2.png b/assets/img/logo_noir2.png index 6c32425..6b9e3b7 100644 Binary files a/assets/img/logo_noir2.png and b/assets/img/logo_noir2.png differ diff --git a/assets/js/script.js b/assets/js/script.js new file mode 100644 index 0000000..c2e73d8 --- /dev/null +++ b/assets/js/script.js @@ -0,0 +1,16 @@ +let backToTop = document.getElementById("backToTop"); + +window.onscroll = function() {scrollFunction()}; + +function scrollFunction() { + if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { + backToTop.style.display = "block"; + } else { + backToTop.style.display = "none"; + } +} + +function topFunction() { + document.body.scrollTop = 0; + document.documentElement.scrollTop = 0; +} \ No newline at end of file diff --git a/blog/.htaccess b/blog/.htaccess new file mode 100644 index 0000000..3adb3f4 --- /dev/null +++ b/blog/.htaccess @@ -0,0 +1 @@ +FallbackResource index.php \ No newline at end of file diff --git a/blog/index.php b/blog/index.php new file mode 100644 index 0000000..cdcd924 --- /dev/null +++ b/blog/index.php @@ -0,0 +1,171 @@ +query('SELECT article.title, article.created_at, article.slug, article.excerpt, employee.name AS author, employee.slug AS authorUrl FROM article JOIN employee ON article.author=employee.id ORDER BY created_at DESC;') as $row) { + $articles[] = $row; + } + } else { + $mode = "view"; + $sth = $dbh->prepare("SELECT article.title, article.created_at, article.modified_at, article.slug, article.content, article.excerpt, employee.name AS author, employee.slug AS authorUrl FROM article JOIN employee ON article.author=employee.id AND article.slug = ?;"); + $sth->execute([end($url)]); + $article = $sth->fetch(PDO::FETCH_ASSOC); + + if (empty($article)) { + http_response_code(404); + $error = "notfound"; + } + + $sth = null; + } + + $dbh = null; +} catch (PDOException $e) { + http_response_code(503); + $error = "db"; + die($e->getMessage()); +} +?> + + + + + + + + + Blog - Elite Solar'; + echo ''; + echo ''; + echo ''; + echo ''; + } + elseif ($mode == 'view') { + echo '' . $article['title'] . ' - Elite Solar'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + } + ?> + + + + + + + + + +
+
+ + Menu + +
+
+
+ +
    +
  1. Accueil
  2. > +
  3. Blog
  4. +
+ +

Une erreur est survenue lors du chargement de la page.

'; +} elseif ($error == "notfound") { + echo '' . + "

Article introuvable

+

L'article que vous cherchez à atteindre ne peut pas être trouvée. + Il est possible qu'il ait été supprimé ou déplacé. Si vous avez saisi manuellement son adresse, + veuillez vérifier une éventuelle erreur de saisie.


+

Retour à la page d'accueil

"; +} else { + if ($mode == 'list') { + echo '' . + "

Blog


"; + echo ''; + } elseif ($mode == 'view') { + $date = new DateTime($article['created_at']); + echo '' . + "

" . $article["title"] . "


+

Publié le " . $date->format('d/m/Y') . " par " . $article["author"] . "


+

" . $article["content"] . "

"; + } +} +?> +
+ + + + + \ No newline at end of file diff --git a/contact/index.php b/contact/index.php index b280053..a24cd48 100644 --- a/contact/index.php +++ b/contact/index.php @@ -119,7 +119,15 @@ function select_profile() : string { + + Contact - Elite Solar + + + + + + @@ -128,52 +136,49 @@ function select_profile() : string {
-

Elite Solar

- Menu - +
+ + Menu + +
+ +

Nous contacter

+ + diff --git a/faq/index.php b/faq/index.php index d524adf..ef6653e 100644 --- a/faq/index.php +++ b/faq/index.php @@ -3,7 +3,15 @@ + + FAQ - Elite Solar + + + + + + @@ -12,17 +20,28 @@
-

Elite Solar

- Menu - +
+ + Menu + +
+ +

FAQ

Voici les questions fréquentes de nos clients :

@@ -51,36 +70,22 @@
+ + diff --git a/index.php b/index.php index 3281d1a..ff73553 100644 --- a/index.php +++ b/index.php @@ -3,24 +3,36 @@ + + Elite Solar + + + + + + - +
-

Elite Solar

- Menu - +
+ + Menu + +

Bienvenue chez Elite Solar !


@@ -80,36 +92,22 @@

Nous sommes impatients de vous aider à profiter de notre technologie innovante et de vous offrir un service de qualité. N'hésitez pas à nous contacter pour en savoir plus sur notre produit et comment il peut vous aider.

+ + + \ No newline at end of file diff --git a/legal/index.php b/legal/index.php new file mode 100644 index 0000000..1926877 --- /dev/null +++ b/legal/index.php @@ -0,0 +1,123 @@ + + + + + + + + Mentions légales - Elite Solar + + + + + + + + + + + + +
+
+ + Menu + +
+
+
+ +

Mentions légales

+ +

+ Conformément aux dispositions des Articles 6-III et 19 de la Loi n°2004-575 du 21 juin 2004 pour la Confiance + dans l’économie numérique, dite L.C.E.N., il est porté à la connaissance des utilisateurs et visiteurs, + ci-après l""Utilisateur", du site Elite Solar, ci-après le "Site", les présentes mentions légales. +

+ +

+ La connexion et la navigation sur le site par l’Utilisateur implique acceptation intégrale et sans réserve des + présentes mentions légales. +

+ +

+ Ces dernières sont accessibles sur le Site à la rubrique « Mentions légales ». +

+ + +

ARTICLE 1 - L'EDITEUR

+ +

+ L'édition du Site est assurée par Elite Solar dont le siège social est situé Route forestière Hurtault, + 77300 Fontainebleau.
+ Numéro de téléphone : +33 1 60 74 68 00
+ Adresse e-mail : elitesolar.contact77@gmail.com
+ Le Directeur de la publication est Souidi Lyanis ci-après l'"Editeur". +

+ +

ARTICLE 2 - L'HEBERGEUR

+ +

+ L'hébergeur du Site est l'IUT de Fontainebleau, dont le siège social est situé au Route forestière Hurtault, + 77300 Fontainebleau.
+ Numéro de téléphone : +33 1 60 74 68 00 +

+ +

ARTICLE 3 - ACCES AU SITE

+ +

+ Le Site est accessible en tout endroit, 7j/7, 24h/24 sauf cas de force majeure, interruption programmée ou + non et pouvant découlant d’une nécessité de maintenance. +

+ +

+ En cas de modification, interruption ou suspension du Site, l'Editeur ne saurait être tenu responsable. +

+ +

ARTICLE 4 - COLLECTE DES DONNEES

+ +

+ Le site est exempté de déclaration à la Commission Nationale Informatique et Libertés (CNIL) dans la mesure + où il ne collecte aucune donnée concernant les utilisateurs. +

+ +

+ Toute utilisation, reproduction, diffusion, commercialisation, modification de toute ou partie du Site, + sans autorisation de l’Editeur est prohibée et pourra entraînée des actions et poursuites judiciaires + telles que notamment prévues par le Code de la propriété intellectuelle et le Code civil. +

+ +

NOTE : Elite Solar est une entreprise fictive crée dans le cadre d'un projet lors de notre formation à l'IUT de Fontainebleau.

+
+ + + + + diff --git a/product/index.php b/product/index.php index 0193695..fc4944c 100644 --- a/product/index.php +++ b/product/index.php @@ -3,7 +3,15 @@ + + Produit - Elite Solar + + + + + + @@ -12,17 +20,28 @@
-

Elite Solar

- Menu - +
+ + Menu + +
+ +

Notre produit


@@ -48,36 +67,22 @@
+ + + \ No newline at end of file diff --git a/sitemap/index.php b/sitemap/index.php new file mode 100644 index 0000000..620eec3 --- /dev/null +++ b/sitemap/index.php @@ -0,0 +1,92 @@ + + + + + + + + Plan du site - Elite Solar + + + + + + + + + + + + +
+
+ + Menu + +
+
+
+ + +

Plan du site

+ +
+ + + + + \ No newline at end of file diff --git a/team/.htaccess b/team/.htaccess new file mode 100644 index 0000000..3adb3f4 --- /dev/null +++ b/team/.htaccess @@ -0,0 +1 @@ +FallbackResource index.php \ No newline at end of file diff --git a/team/index.php b/team/index.php new file mode 100644 index 0000000..3b32d32 --- /dev/null +++ b/team/index.php @@ -0,0 +1,329 @@ +diff($date); + return $interval->y; +} + +try { + $error = false; + $dbh = new PDO('mysql:host=saeweb2022.souidi.fr;dbname=saeweb2022', "saeweb2022"); + + $url = parse_url($_SERVER["REQUEST_URI"])["path"]; + + if (str_ends_with($url, "/")) { + $url = substr($url, 0, -1); + } + + $url = explode("/", $url); + + if (end($url) == "team") { + $mode = "list"; + $employees = array(); + + foreach($dbh->query('SELECT name, jobTitle, slug FROM employee;') as $row) { + $employees[] = $row; + } + } else { + $mode = "view"; + $sth = $dbh->prepare("SELECT name, jobTitle, birthdate, email FROM employee WHERE employee.slug = ?;"); + $sth->execute([end($url)]); + $employee = $sth->fetch(PDO::FETCH_ASSOC); + + if (empty($employee)) { + http_response_code(404); + $error = "notfound"; + } + + if (isset($_GET["articles"])) { + $mode = "articles"; + $sth = $dbh->prepare("SELECT article.title, article.slug, article.created_at, article.excerpt FROM article JOIN employee ON article.author=employee.id WHERE employee.slug = ? ORDER BY article.created_at DESC;"); + $sth->execute([end($url)]); + $employee["articles"] = $sth->fetchAll(PDO::FETCH_ASSOC); + } else { + $employee['age'] = age($employee['birthdate']); + $sth = $dbh->prepare("SELECT social.name, social.url FROM employee_social social JOIN employee ON social.employeeId=employee.id WHERE employee.slug = ?;"); + $sth->execute([end($url)]); + $employee["socials"] = $sth->fetchAll(PDO::FETCH_ASSOC); + + $employee['cv'] = array('formation' => array(), 'work' => array(), 'language' => array(), 'skill' => array(), 'project' => array()); + if (isset($_GET["cv"])) { + $mode = "cv"; + $sth = $dbh->prepare("SELECT cv.type, cv.title, cv.description, cv.link FROM cv JOIN employee ON cv.employeeId=employee.id WHERE employee.slug = ? ORDER BY cv.priority;"); + $sth->execute([end($url)]); + foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $e) { + if ($e['type'] == "skill") { + $employee['cv'][$e['type']][$e['title']][] = $e['description']; + } else { + $employee['cv'][$e['type']][] = array( + 'title' => $e['title'], + 'description' => $e['description'], + 'link' => $e['link'] + ); + } + } + } else { + $sth = $dbh->prepare("SELECT article.title, article.slug, article.created_at, article.excerpt FROM article JOIN employee ON article.author=employee.id WHERE employee.slug = ? ORDER BY article.created_at DESC LIMIT 2;"); + $sth->execute([end($url)]); + $employee["articles"] = $sth->fetchAll(PDO::FETCH_ASSOC); + + $sth = $dbh->prepare("SELECT cv.title, cv.description, cv.link FROM cv JOIN employee ON cv.employeeId=employee.id WHERE employee.slug = ? AND cv.type = 'formation' ORDER BY cv.priority LIMIT 1;"); + $sth->execute([end($url)]); + foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $e) { + $employee['cv']['formation'][] = array( + 'title' => $e['title'], + 'description' => $e['description'], + 'link' => $e['link'] + ); + } + } + } + + $sth = null; + } + + $dbh = null; +} catch (PDOException) { + http_response_code(503); + $error = "db"; +} +?> + + + + + + + + + Équipe - Elite Solar'; + echo ''; + echo ''; + echo ''; + } elseif ($mode == 'view') { + echo ''. $employee['name'] .' - Elite Solar'; + echo ''; + echo ''; + echo ''; + } elseif ($mode == 'articles') { + echo 'Articles de '. $employee['name'] .' - Elite Solar'; + echo ''; + echo ''; + echo ''; + } elseif ($mode == 'cv') { + echo 'CV de ' . $employee['name']; + echo 'CV de '. $employee['name'] .' - Elite Solar'; + echo ''; + echo ''; + echo ''; + } + ?> + + + + + + + + + + +
+
+ + Menu + +
+
+
+ +
    +
  1. Accueil
  2. > +
  3. Équipe
  4. +
+ +

Une erreur est survenue lors du chargement de la page.

'; + } elseif ($error == "notfound") { + echo '' . + "

Page introuvable

+

La page que vous cherchez à atteindre ne peut pas être trouvée. + Il est possible qu'elle ait été supprimée ou déplacée. Si vous avez saisi manuellement son adresse, + veuillez vérifier une éventuelle erreur de saisie.


+

Retour à la page d'accueil

"; + } else { + if ($mode == 'list') { + echo '' . + "

Notre équipe


"; + foreach ($employees as $employee) { + echo '
+

' . $employee['name'] . '

+

' . $employee['jobTitle'] . '

+
'; + } + echo "
"; + echo"

Vous souhaitez rejoindre notre équipe ? Contactez-nous par mail à l'adresse suivante : elitesolar.contact77@gmail.com

"; + } elseif ($mode == 'view') { + echo '' . + "

" . $employee["name"] . "

"; + echo "

" . $employee["age"] . " ans | " . $employee["jobTitle"] . "

"; + + echo ''; + + echo "

Articles récents (Voir tout)

"; + if (empty($employee["articles"])) echo '

Aucun article.

'; + echo ''; + + echo '

Formation (Voir le CV)

'; + if (empty($employee["cv"]["formation"])) echo '

Aucune formation enregistrée.

'; + foreach ($employee["cv"]["formation"] as $formation) { + echo '' . $formation["title"] . ''; + } + echo '
'; + } elseif ($mode == "cv") { + echo '' . + "

CV de " . $employee["name"] . "

"; + echo "
"; + + echo "

Informations

" . + "
    +
  • Âge : " . $employee["age"] . "
  • +
  • Adresse électronique : " . $employee["email"] . "
  • "; + foreach ($employee["socials"] as $social) { + if ($social["name"] == "linkedin" || $social["name"] == "github") { + echo "
  • " . $social["url"] . "
  • "; + } + } + echo "
"; + + echo '

Formation

'; + if (empty($employee["cv"]["formation"])) echo '

Aucune formation enregistrée.

'; + foreach ($employee["cv"]["formation"] as $formation) { + echo '' . $formation["title"] . '
  • ' . $formation["description"] . '
'; + } + echo '
'; + + echo '

Expérience

'; + if (empty($employee["cv"]["work"])) echo '

Aucune expérience enregistrée.

'; + foreach ($employee["cv"]["work"] as $work) { + echo '' . $work["title"] . '
  • ' . $work["description"] . '
'; + } + echo '
'; + + echo '

Langues

'; + if (empty($employee["cv"]["language"])) echo '

Aucune langue enregistrée.

'; + echo '
    '; + foreach ($employee["cv"]["language"] as $language) { + echo '
  • ' . $language["title"] . ' : ' . $language["description"] . '
  • '; + } + echo '
'; + + echo '

Compétences

'; + if (empty($employee["cv"]["skill"])) echo '

Aucune compétence enregistrée.

'; + while ($skill = current($employee["cv"]["skill"])) { + echo '
' . key($employee["cv"]["skill"]) . '
  • '; + echo implode('
  • ', $skill); + echo '
'; + next($employee["cv"]["skill"]); + } + echo '
'; + + echo '

Projets

'; + if (empty($employee["cv"]["project"])) echo '

Aucun projet enregistré.

'; + foreach ($employee["cv"]["project"] as $project) { + if (empty($project["link"])) { + echo '' . $project["title"] . '
  • ' . $project["description"] . '
'; + } else { + echo '' . $project["title"] . '
  • ' . $project["description"] . '
'; + } + } + echo '
'; + } elseif ($mode == 'articles') { + echo '' . + "

Articles publiés par " . $employee["name"] . "

"; + if (empty($employee["articles"])) echo '

Aucun article.

'; + echo ''; + } + } + ?> +
+ + + + + \ No newline at end of file