forked from monnerat/web_2024
Compare commits
92 Commits
Author | SHA1 | Date | |
---|---|---|---|
51f474c066 | |||
0af8488fcd | |||
f7f10cb4d6 | |||
0cf7da82a7 | |||
9850da24f8 | |||
1f9ce23a09 | |||
1cb708318a | |||
e86cb11062 | |||
70f1aa026f | |||
81727fbee4 | |||
a574a5be8d | |||
000ead1692 | |||
4b0863794b | |||
1219001218 | |||
6cdb3f1d65 | |||
f4bb691551 | |||
8c93e7baf0 | |||
2dbf88edc2 | |||
ec4b1c92bd | |||
068b593d7b | |||
a233d3b719 | |||
c984310cc2 | |||
66239bdc85 | |||
ac3656209c | |||
49ad6a87df | |||
09f4e82d95 | |||
08d9b339ee | |||
66085a9ddc | |||
f56154d10d | |||
00133a0b71 | |||
c22e50bb06 | |||
db9aedd9aa | |||
b76a9de642 | |||
4ceb1997d5 | |||
e768da2cd2 | |||
bd7cc7ff3f | |||
0a3521310c | |||
3f095564fb | |||
4863299eae | |||
0e6f47bbb4 | |||
2aa0f688bf | |||
53d5c9a1db | |||
4b2df8fd63 | |||
c07fe8b2bb | |||
2fa1362660 | |||
762864c0d3 | |||
b24991aa31 | |||
92f915c3eb | |||
61278e2b10 | |||
fc58d535dc | |||
0e03a68bed | |||
506ecfa837 | |||
835598801e | |||
8d62cd6c95 | |||
e7d1f22be6 | |||
5fe41c9a9e | |||
49798f4a7f | |||
ae55e46aed | |||
208584efef | |||
47c12a4cd1 | |||
738d8baad3 | |||
35cdc8837c | |||
7dda940779 | |||
2e1e34db0e | |||
560c8c0e15 | |||
22912ec267 | |||
8a43fbbab3 | |||
c99e4e2e0c | |||
326826ade6 | |||
99e0cbbbba | |||
d23d17128c | |||
20708cc0c3 | |||
4eda7fe5af | |||
cbb184a9c0 | |||
1de2a07ce7 | |||
cfb3fc3076 | |||
442a662443 | |||
911aed402a | |||
27e24c917e | |||
b89351ab51 | |||
f3dafbc079 | |||
cd0b51e170 | |||
abc0c9ae9f | |||
4bc10860a5 | |||
1d7e676f43 | |||
e3565e2d99 | |||
c27f712980 | |||
7fec517f7d | |||
8820eb3745 | |||
6bcf423312 | |||
e4706feb3b | |||
6b6cb5d041 |
R3.01
README.md
cours
cm_bases_php.pdfcm_cookies_sessions.pdfcm_extension_mysqli.pdfcm_interaction_client_serveur.pdfcm_mvc.pdfcm_objet.pdf
sae
tp
73
R3.01/README.md
Normal file
73
R3.01/README.md
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# Programmation WEB coté serveur R3.01
|
||||||
|
Ce dépôt contient les ressources utilisées
|
||||||
|
(cours/td/tp) dans la ressource R3.01.
|
||||||
|
|
||||||
|
**Les objectifs**
|
||||||
|
|
||||||
|
> Savoir développer une application Web côté serveur, en utilisant le langage PHP.
|
||||||
|
|
||||||
|
Les notions suivantes seront abordées :
|
||||||
|
|
||||||
|
- Le langage php
|
||||||
|
On se limitera aux bases du langages. La couche objet sera présenté très succintement.
|
||||||
|
Toute la suite sera illustré avec PHP.
|
||||||
|
|
||||||
|
- Interaction avec le client
|
||||||
|
URL (Uniform Resource Locator), requêtes, formulaires, transmission des paramètres, des données, etc.
|
||||||
|
|
||||||
|
- Applications Web à états
|
||||||
|
Cookies et sessions
|
||||||
|
|
||||||
|
- Organisation de l’accès aux données
|
||||||
|
Bases de données, annuaires, services Web, etc.
|
||||||
|
|
||||||
|
- Introduction à la programmation objet en PHP
|
||||||
|
Introduction au principe MVC
|
||||||
|
|
||||||
|
- Sensibilisation à la sécurité des applications web
|
||||||
|
|
||||||
|
## Calendrier
|
||||||
|
|
||||||
|
| Semaine | Cours | TD/TP |
|
||||||
|
| ------------------ | -------------------------------------------------------- | ------------------ |
|
||||||
|
| 1 : 24/03 - 28/03| [Bases du langages](./cours/cm_bases_php.pdf) | [tp1](./tp/tp1) |
|
||||||
|
| 2 : 03/04 - 07/04 | [Intéractions avec le client](./cours/cm_interaction_client_serveur.pdf) | [tp2](./tp/tp2) |
|
||||||
|
| 3 : 10/04 - 14/04 | [PHP/MySQL](./cours/cm_extension_mysqli.pdf) | [tp3](./tp/tp3) |
|
||||||
|
| 4 : 28/04 - 02/05 | [Cookies et sessions](./cours/cm_cookies_sessions.pdf) | [tp3](./tp/tp3) , [tp4](./tp/tp4) |
|
||||||
|
| 6 : 05/05 - 09/05 | [PHP Objet](./cours/cm_objet.pdf), [MVC avec codeigniter](./cours/cm_mvc.pdf) | [tp5](./tp/tp5) |
|
||||||
|
|
||||||
|
## Les TPS
|
||||||
|
|
||||||
|
#### TP1 : Bases du langage PHP
|
||||||
|
Le [tp1](./tp/tp1)
|
||||||
|
permet de se familiariser avec le langage PHP.
|
||||||
|
À chaque exercice correspond un sous répertoire avec
|
||||||
|
des fichiers à compléter.
|
||||||
|
|
||||||
|
#### TP2 : Intéractions avec le client, formulaires et PHP
|
||||||
|
Le [tp2](./tp/tp2)
|
||||||
|
aborde la récupération des données de formulaires avec PHP.
|
||||||
|
À chaque exercice correspond un sous répertoire avec
|
||||||
|
des fichiers à compléter.
|
||||||
|
|
||||||
|
#### TP3 : PHP/Mysql
|
||||||
|
Le [tp3](./tp/tp3)
|
||||||
|
aborde l'interfaçage de php avec mysql, au moyen de l'extention
|
||||||
|
[mysqli](http://php.net/manual/fr/book.mysqli.php) de php.
|
||||||
|
À chaque exercice correspond un sous répertoire avec
|
||||||
|
des fichiers à compléter.
|
||||||
|
|
||||||
|
#### TP4 : Cookies et sessions
|
||||||
|
Le [tp4](./tp/tp4)
|
||||||
|
aborde la notion de cookies et de sessions,et
|
||||||
|
les fonctions php dédiées.
|
||||||
|
À chaque exercice correspond un sous répertoire avec
|
||||||
|
des fichiers à compléter.
|
||||||
|
|
||||||
|
#### TP5 : MVC avec CodeIgniter (Version 3.x)
|
||||||
|
Le [tp5](./tp/tp5)
|
||||||
|
est une introduction au modèle MVC avec le framework
|
||||||
|
[CodeIgniter](https://www.codeigniter.com)
|
||||||
|
L'application permet de gérer des todolists.
|
||||||
|
|
||||||
|
|
BIN
R3.01/cours/cm_bases_php.pdf
Normal file
BIN
R3.01/cours/cm_bases_php.pdf
Normal file
Binary file not shown.
BIN
R3.01/cours/cm_cookies_sessions.pdf
Normal file
BIN
R3.01/cours/cm_cookies_sessions.pdf
Normal file
Binary file not shown.
BIN
R3.01/cours/cm_extension_mysqli.pdf
Normal file
BIN
R3.01/cours/cm_extension_mysqli.pdf
Normal file
Binary file not shown.
BIN
R3.01/cours/cm_interaction_client_serveur.pdf
Normal file
BIN
R3.01/cours/cm_interaction_client_serveur.pdf
Normal file
Binary file not shown.
BIN
R3.01/cours/cm_mvc.pdf
Normal file
BIN
R3.01/cours/cm_mvc.pdf
Normal file
Binary file not shown.
BIN
R3.01/cours/cm_objet.pdf
Normal file
BIN
R3.01/cours/cm_objet.pdf
Normal file
Binary file not shown.
70
R3.01/sae/README.md
Normal file
70
R3.01/sae/README.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# SAE S2.02 : Application de critique de séries.
|
||||||
|
|
||||||
|
## Groupes
|
||||||
|
- Bouchane Naïla / Laporte Clément / Bodol Mathis
|
||||||
|
- Nathan BAUDRIER / Lakshman MURALITHARAN / Canpolat DEMIRCI—ÖZMEN
|
||||||
|
- Michel Tran / Mathis Moogin / Noah Lavignon
|
||||||
|
- Loïc Sainton / Mathis Pauron / Nicolas Miekisiak
|
||||||
|
- Majdi SATOURI / Benjamin DUSSEAUX—JONQUET / Dayaan SIDDIQUI
|
||||||
|
- Aissyne Amine / Lucas Goncalves Do Carmo / Luka Plouvier
|
||||||
|
- Karl FRAMERY / Warrhen ROLANDO / Ozvann ABRAHAM
|
||||||
|
- Enzo POITOU / Nicolas MICHENET / Juan ANTON--LEMOINE
|
||||||
|
- Ben Ghorbal Mazen / Cherifih Hicham / Barhani Adam
|
||||||
|
- Wede BAMBA / Kouami Kpeglo / Arwa Ben Fraj
|
||||||
|
## Le thème
|
||||||
|
|
||||||
|
Le projet utilise une [base de données](./src/sql) de données de séries (créée par
|
||||||
|
Jérôme Cutrona). Il consiste à écrire une application web qui permet :
|
||||||
|
|
||||||
|
- la consultation/recherche d'informations contenues dans la bd (series, saisons, épisodes, critiques),
|
||||||
|
- la possibilité de laisser des critiques/notes pour une série.
|
||||||
|
|
||||||
|
Vous pouvez partir de ce [code](./src) et le compléter et/ou modifier.
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/serie.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Principes généraux, fonctionnalités
|
||||||
|
|
||||||
|
La partie consultation est publique. Plusieurs consultations/vues sont
|
||||||
|
disponibles :
|
||||||
|
|
||||||
|
- liste des séries,
|
||||||
|
- détails d'une série, avec liste des saisons,
|
||||||
|
- détails d'une saison, avec liste des épisodes
|
||||||
|
- filtres, recherches et tris possibles.
|
||||||
|
|
||||||
|
On doit pouvoir passer d'une vue à une autre simplement.
|
||||||
|
|
||||||
|
La partie gestion des critiques nécessite la création d'un compte sur
|
||||||
|
l'application. Une fois authentifié, l'utilisateur peut critiquer et noter une
|
||||||
|
série (une saison particulière ou toutes les saisons).
|
||||||
|
|
||||||
|
## Les attendus
|
||||||
|
- Une application fonctionnelle, accessible depuis le serveur de l'iut. Toutefois, n'hésitez pas à procéder par étape. Il vaut mieux rendre quelque chose d'incomplet qui fonctionne que quelque chose de complet qui ne fonctionne pas.
|
||||||
|
- L'application devra être codée en utilisant le framework php MVC [codeigniter v3](https://github.com/pocketarc/codeigniter).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Échéances et évaluation
|
||||||
|
|
||||||
|
La SAÉ est à realiser par groupe de 3 maximum.
|
||||||
|
|
||||||
|
L'application sera testée **la semaine du 16 juin 2025**.
|
||||||
|
|
||||||
|
Vous devez m'envoyer un [mail](mailto:monnerat@u-pec.fr) (objet : [SAE])
|
||||||
|
|
||||||
|
> - les noms du groupe du projet,
|
||||||
|
> - l'url de votre application (sur dwarves),
|
||||||
|
> - l'url du dépôt GIT.
|
||||||
|
|
||||||
|
## Quelques conseils
|
||||||
|
|
||||||
|
- La présentation générale du site est laissée à votre appréciation. Soyez
|
||||||
|
certes créatif, tout en privilégiant l'ergonomie du site et en respectant
|
||||||
|
le sujet.
|
||||||
|
- Optez pour une présentation claire et efficace, et un code modulaire et lisible.
|
||||||
|
- Vérifiez la conformité de vos pages <a href="http://validator.w3.org">http://validator.w3.org</a>
|
||||||
|
|
||||||
|
|
BIN
R3.01/sae/img/serie.png
Normal file
BIN
R3.01/sae/img/serie.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 539 KiB |
34
R3.01/sae/src/assets/style.css
Normal file
34
R3.01/sae/src/assets/style.css
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
section.list {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(200px,1fr));
|
||||||
|
grid-auto-rows: minmax(100px, auto);
|
||||||
|
gap:calc(2em + 2vh) calc(1.5em + 1vmin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*section.list
|
||||||
|
{
|
||||||
|
display : flex;
|
||||||
|
justify-content : space-between;
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
section.list > div
|
||||||
|
{
|
||||||
|
width : 30%;
|
||||||
|
}*/
|
||||||
|
section.list article header{
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
section.list article{
|
||||||
|
text-align : center;
|
||||||
|
}
|
||||||
|
section.list img {
|
||||||
|
display:inline-block;
|
||||||
|
|
||||||
|
}
|
||||||
|
.short-text {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
17
R3.01/sae/src/ci/controllers/Tvshow.php
Normal file
17
R3.01/sae/src/ci/controllers/Tvshow.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||||
|
|
||||||
|
class Tvshow extends CI_Controller {
|
||||||
|
|
||||||
|
public function __construct(){
|
||||||
|
parent::__construct();
|
||||||
|
$this->load->model('model_tvshow');
|
||||||
|
|
||||||
|
}
|
||||||
|
public function index(){
|
||||||
|
$tvshow = $this->model_tvshow->getTvshow();
|
||||||
|
$this->load->view('layout/header');
|
||||||
|
$this->load->view('tvshow_list',['tvshow'=>$tvshow]);
|
||||||
|
$this->load->view('layout/footer');
|
||||||
|
}
|
||||||
|
}
|
18
R3.01/sae/src/ci/models/Model_tvshow.php
Normal file
18
R3.01/sae/src/ci/models/Model_tvshow.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
|
class Model_tvshow extends CI_Model {
|
||||||
|
public function __construct(){
|
||||||
|
$this->load->database();
|
||||||
|
}
|
||||||
|
public function getTvshow(){
|
||||||
|
$query = $this->db->query("
|
||||||
|
SELECT tvshow.name,tvshow.id,jpeg,
|
||||||
|
(SELECT COUNT(*) from season
|
||||||
|
WHERE season.tvShowId = tvshow.id) as nb
|
||||||
|
FROM tvshow
|
||||||
|
JOIN poster ON tvshow.posterId = poster.id"
|
||||||
|
);
|
||||||
|
return $query->result();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
3
R3.01/sae/src/ci/views/layout/footer.php
Normal file
3
R3.01/sae/src/ci/views/layout/footer.php
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
33
R3.01/sae/src/ci/views/layout/header.php
Normal file
33
R3.01/sae/src/ci/views/layout/header.php
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>SERIES</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
|
||||||
|
<?=link_tag('assets/style.css')?>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class='container'>
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Séries</strong></li>
|
||||||
|
<li><a href="."><i class="fas fa-home"></i></a></li>
|
||||||
|
<li><a href="login"><i class="fas fa-user"></i></a></li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<form method="GET" action="." role="search">
|
||||||
|
<select name="type" aria-label="Type">
|
||||||
|
<option selected disabled value="">Genre</option>
|
||||||
|
</select>
|
||||||
|
<input name="search" type="search" placeholder="Search" />
|
||||||
|
<input type="submit" value="Search" />
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
14
R3.01/sae/src/ci/views/tvshow_list.php
Normal file
14
R3.01/sae/src/ci/views/tvshow_list.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<h6>Liste des séries</h6>
|
||||||
|
<section class="list">
|
||||||
|
<?php
|
||||||
|
foreach($tvshow as $show){
|
||||||
|
echo "<article>";
|
||||||
|
echo "<header class='short-text'>";
|
||||||
|
echo anchor("","{$show->name}");
|
||||||
|
echo "</header>";
|
||||||
|
echo '<img src="data:image/jpeg;base64,'.base64_encode($show->jpeg).'" />';
|
||||||
|
echo "<footer class='short-text'>{$show->nb} saisons</footer>";
|
||||||
|
echo "</article>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</section>
|
BIN
R3.01/sae/src/sql/series.sql.gz
Normal file
BIN
R3.01/sae/src/sql/series.sql.gz
Normal file
Binary file not shown.
233
R3.01/tp/tp1/README.md
Normal file
233
R3.01/tp/tp1/README.md
Normal file
@ -0,0 +1,233 @@
|
|||||||
|
|
||||||
|
# TP1 : bases du langage PHP
|
||||||
|
|
||||||
|
**À l'IUT**
|
||||||
|
|
||||||
|
Le repertoire `public_html` à la racine de votre compte est accessible par http(s) à l'url suivante :
|
||||||
|
|
||||||
|
```
|
||||||
|
http[s]://dwarves.iut-fbleau.fr/~login/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ailleurs**
|
||||||
|
|
||||||
|
Pour monter ce repertoire dans votre aborescence locale, vous pouvez utiliser le programme `sshfs` :
|
||||||
|
```
|
||||||
|
sshfs login@gatekeeper.iut-fbleau.fr:/export/home/an19/login repertoire/de/montage/local/
|
||||||
|
```
|
||||||
|
|
||||||
|
Depuis la version 5.4, la commande `php` embarque un serveur web interne :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
php -S localhost:8080 -t repertoire
|
||||||
|
```
|
||||||
|
|
||||||
|
Le repertoire passé en paramètre est la racine du serveur web.
|
||||||
|
|
||||||
|
|
||||||
|
### Ex1
|
||||||
|
Vous allez tester votre premier script php : `hello_world` :
|
||||||
|
```php
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<?php echo "<h1>hello world</h1>";?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
- Placez le fichier `hello_world.php` dans votre
|
||||||
|
repertoire `public_html`, et testez.
|
||||||
|
|
||||||
|
- En utilisant la fonction `phpinfo`, faites afficher dans le script
|
||||||
|
précédent la configuration php du serveur dwarves.
|
||||||
|
|
||||||
|
### Ex2
|
||||||
|
Quel est l'entier servant de clé à
|
||||||
|
- chaque élément du tableau
|
||||||
|
suivant :
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
$clients = [
|
||||||
|
"Luc",
|
||||||
|
7 => "Paul",
|
||||||
|
2 =>"Martin",
|
||||||
|
"Arnaud"
|
||||||
|
];
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
|
||||||
|
- à l'élément de valeur `Blouson` dans le tableau `$produits` ?
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
$produits = [
|
||||||
|
20 => "Chemise",
|
||||||
|
3 => "Pantalon",
|
||||||
|
10 => "Jupe",
|
||||||
|
"Veste",
|
||||||
|
"Blouson"
|
||||||
|
];
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
- à chaque élément du tableau `$array` ?
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
$array = ["a","b","c"];
|
||||||
|
$array[] = "d";
|
||||||
|
$array[10] = "j";
|
||||||
|
unset($array[2]);
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
### Ex21
|
||||||
|
- Créez un tableau de 10 cases dont la clé i contient la somme des entiers jusqu'à i.
|
||||||
|
- Créez un tableau de 10 cases dont la clé i<sup>2</sup> contient i
|
||||||
|
.
|
||||||
|
### Ex22
|
||||||
|
Écrivez un script php affichant les entiers de 1 à 50.
|
||||||
|
- Faites en sorte que les impairs soient en italique, et les pairs en gras.
|
||||||
|
- Regroupez chaque dizaine dans un même paragraphe.
|
||||||
|
|
||||||
|
### Ex3
|
||||||
|
Vous disposez du fichier [data.php](./ex3/include/data.inc.php) qui
|
||||||
|
représente, sous forme d'un tableau, un certain nombre
|
||||||
|
d'individus, avec pour chacun ses nom, prénom, email, taille et
|
||||||
|
poids.
|
||||||
|
|
||||||
|
Voici un extrait du fichier :
|
||||||
|
```php
|
||||||
|
$data = array(
|
||||||
|
array("Nom"=>"Garza","Prenom"=>"Forrest","Email"=>"eleifend@ligulaedu","Taille"=>"185","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Tanner","Prenom"=>"Orla","Email"=>"adipiscing@vitaecouk","Taille"=>"180","Poids"=>"73"),
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Ecrire un script qui affichent l'ensemble des données sous
|
||||||
|
forme d'un tableau html.
|
||||||
|
2. L'imc (indice de masse corporel) d'une personne est donné par
|
||||||
|
la formule $\frac{poids}{taille^2}$ (poids en kilogramme et taille en mètre).
|
||||||
|
Ajouter une colonne avec la valeur de l'imc (2 chiffres après la virgule).
|
||||||
|
3. Une personne est considérée en surpoids lorsque son imc
|
||||||
|
dépasse 25. Colorier les lignes du tableau lorsque la
|
||||||
|
personne correspondante est en surpoids.
|
||||||
|

|
||||||
|
|
||||||
|
<details><summary>Conseils</summary>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
- Pour utiliser le fichier de données, incluez-le dans votre
|
||||||
|
script.
|
||||||
|
- La structure de langage `foreach` fournit une façon simple de
|
||||||
|
parcourir des tableaux. `foreach` ne fonctionne que pour les
|
||||||
|
tableaux et les objets, et émettra une erreur si vous tentez de
|
||||||
|
l'utiliser sur une variable de type différent ou une variable
|
||||||
|
non initialisée. Il existe deux syntaxes :
|
||||||
|
|
||||||
|
```php
|
||||||
|
foreach (array_expression as $value){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (array_expression as $key => $value){
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Des [exemples]](http://fr2.php.net/manual/fr/control-structures.foreach.php).
|
||||||
|
|
||||||
|
- Pour arrondir un réel, vous pouvez utiliser la fonction [round](https://www.php.net/manual/fr/function.round.php).
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Ex4
|
||||||
|
Ecrivez un script qui permet de lancer deux dés, et en affiche la somme. Utilisez la fonction [mt_rand](https://www.php.net/manual/en/function.mt-rand.php) pour la génération aléatoire.
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Ex5
|
||||||
|
Ecrire un programme PHP qui affiche, sous forme d'une liste
|
||||||
|
"cliquable" vos bookmarks (favoris) stockés dans un tableau
|
||||||
|
associatif. Vos bookmarks seront classés par répertoire. Chaque
|
||||||
|
répertoire aura donc un nom, et contiendra un certain nombre de
|
||||||
|
favoris représentés par un nom, une image et une url.
|
||||||
|
|
||||||
|
Exemple d'affichage :
|
||||||
|
|
||||||
|
- Moteurs de recherche :
|
||||||
|
- [<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/272px-Google_2015_logo.svg.png" width=40>](http://google.fr).
|
||||||
|
- [<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Yahoo%21_%282019%29.svg/200px-Yahoo%21_%282019%29.svg.png" width=40>](http://yahoo.fr).
|
||||||
|
- Journaux :
|
||||||
|
- [<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Le_monde_logo.svg/200px-Le_monde_logo.svg.png" width=40>](http://lemonde.fr).
|
||||||
|
- [<img src="http://upload.wikimedia.org/wikipedia/fr/0/0a/GNUlinuxmagazinefrance.png" width=40>](http://www.unixgarden.com/index.php/category/gnu-linux-magazine).
|
||||||
|
- [<img src="http://upload.wikimedia.org/wikipedia/commons/3/32/L%27%C3%89quipe_wordmark.svg" width=40>](http://lequipe.fr).
|
||||||
|
- Sports :
|
||||||
|
- [<img src="http://upload.wikimedia.org/wikipedia/fr/6/67/Logo_F%C3%A9d%C3%A9ration_Fran%C3%A7aise_de_Football.svg" width=50>](http://fff.fr).
|
||||||
|
- [<img src="http://upload.wikimedia.org/wikipedia/fr/b/bf/FFDF.jpg" width=50>](www.ffdf.fr).
|
||||||
|
|
||||||
|
### Ex6
|
||||||
|
Ecrire (et tester) une fonction
|
||||||
|
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
string createPassword(int $n, string $alphabet);
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
|
||||||
|
qui permet de générer un mot de passe de `n` caractères choisis
|
||||||
|
aléatoirement parmi les caractères de `alphabet`.
|
||||||
|
|
||||||
|
<details><summary>Conseils</summary>
|
||||||
|
|
||||||
|
Il suffit de tirer aléatoirement n caractères de la chaîne alphabet et de les concatener.
|
||||||
|
|
||||||
|
Les fonctions
|
||||||
|
[strlen](https://www.php.net/manual/fr/function.strlen.php)
|
||||||
|
et
|
||||||
|
[mt_rand](https://www.php.net/manual/fr/function.mt-rand.php) pourront vous être utiles.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Ex61
|
||||||
|
On considère les deux tableaux suivants :
|
||||||
|
|
||||||
|
```php
|
||||||
|
$tabMagazines = [
|
||||||
|
'le monde' => ['frequence' => 'quotidien', 'type' => 'actualité', 'prix' => 220],
|
||||||
|
'le point' => ['frequence' => 'hebdo' , 'type' => 'actualité', 'prix' => 80 ],
|
||||||
|
'causette' => ['frequence' => 'mensuel' , 'type' => 'féminin' , 'prix' => 180],
|
||||||
|
'politis' => ['frequence' => 'hebdo' , 'type' => 'opinion' , 'prix' => 100],
|
||||||
|
'le monde diplomatique' => ['frequence' => 'mensuel' , 'type' => 'analyse' , 'prix' => 60 ],
|
||||||
|
'libération' => ['frequence' => 'quotidien', 'type' => 'actualité', 'prix' => 190],
|
||||||
|
];
|
||||||
|
|
||||||
|
$tabMagazinesAbonne = ['le monde', 'le monde diplomatique'];
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
1. Afficher sur une ligne le nom de tous les magazines triés par ordre alphabétique et séparés par des virgules, sans faire de boucle.
|
||||||
|
Vous utiliserez des fonctions déjà existantes telles que [implode](https://www.php.net/manual/en/function.implode.php), [sort](https://www.php.net/manual/en/function.sort.php) et [array_keys](https://www.php.net/manual/en/function.array-keys.php) que vous trouverez dans le manuel php.
|
||||||
|
2. Afficher séparés par des virgule les noms des quotidiens (et uniquement ceux-ci).
|
||||||
|
3. Afficher les magazines exactement de la façon suivante en supposant qu’il peut y avoir beaucoup de magazines et beaucoup de propriétés associées :
|
||||||
|
- le monde (quotidien, actualité, 220)
|
||||||
|
- le point (hebdo, actualité, 80)
|
||||||
|
- causette (mensuel, féministe, 180)
|
||||||
|
- politis (hebdo, opinion, 100)
|
||||||
|
- le monde diplomatique (mensuel, analyse, 60)
|
||||||
|
4. En utilisant le tableau `$tabMagazinesAbonne` contenant le nom des magazines d’un abonné, calculer le prix total de son abonnement.
|
||||||
|
|
||||||
|
### Ex7
|
||||||
|
On reprend l'exercice 3.
|
||||||
|
|
||||||
|
1. Ajouter une colonne de clé `Imc` aux personnes du tableau `$data`. On utilisera la fonction
|
||||||
|
[array_map](https://www.php.net/manual/fr/function.array-map.php).
|
||||||
|
2. Trier `$data` par ordre croissant d'imc. On utilisera la fonction [usort](https://www.php.net/manual/fr/function.usort.php).
|
||||||
|
3. Calculer l'imc moyen de l'ensemble des personnes. On utilisera la fonction [array_reduce](https://www.php.net/manual/fr/function.array-reduce.php).
|
||||||
|
|
||||||
|
|
||||||
|
### Ex8
|
||||||
|
1. Allez voir la page manuel PHP de [scandir](https://www.php.net/manual/en/function.scandir).
|
||||||
|
Quel(s) sont ses arguments ? Que renvoie-t-elle ?
|
||||||
|
2. Utilisez scandir pour afficher des liens vers les autres fichiers de votre dossier public_html. On rappelle
|
||||||
|
que la balise html `a` permet de créer des hyperliens.
|
||||||
|
3. Utilisez la méthode [str_ends_with](https://www.php.net/manual/en/function.str-ends-with.php) pour n’afficher que les scripts PHP.
|
||||||
|
|
||||||
|
Par ailleurs, une liste des fonctions sur les chaînes de caractères est disponible [ici](https://www.php.net/ref.strings).
|
9
R3.01/tp/tp1/ex1/hello-world.php
Normal file
9
R3.01/tp/tp1/ex1/hello-world.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
echo "<h1>hello world !!!</h1>";
|
||||||
|
//phpinfo();
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
26
R3.01/tp/tp1/ex2/index.php
Normal file
26
R3.01/tp/tp1/ex2/index.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
$clients = [
|
||||||
|
"Luc",
|
||||||
|
7 => "Paul",
|
||||||
|
2 =>"Martin",
|
||||||
|
"Arnaud"
|
||||||
|
];
|
||||||
|
|
||||||
|
$produits = [
|
||||||
|
20 => "Chemise",
|
||||||
|
3 => "Pantalon",
|
||||||
|
10 => "Jupe",
|
||||||
|
"Veste",
|
||||||
|
"Blouson"
|
||||||
|
];
|
||||||
|
$array = ["a","b","c"];
|
||||||
|
$array[] = "d";
|
||||||
|
$array[10] = "j";
|
||||||
|
unset($array[2]);
|
||||||
|
|
||||||
|
echo "<pre>";
|
||||||
|
print_r($clients);
|
||||||
|
print_r($produits);
|
||||||
|
print_r($array);
|
||||||
|
echo "</pre>";
|
||||||
|
?>
|
3
R3.01/tp/tp1/ex3/css/style.css
Normal file
3
R3.01/tp/tp1/ex3/css/style.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.warning tr,.warning td {
|
||||||
|
background-color : rgb(255,154,0);
|
||||||
|
}
|
BIN
R3.01/tp/tp1/ex3/img/tableau_ex3.png
Normal file
BIN
R3.01/tp/tp1/ex3/img/tableau_ex3.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 114 KiB |
106
R3.01/tp/tp1/ex3/include/data.inc.php
Normal file
106
R3.01/tp/tp1/ex3/include/data.inc.php
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$data = array(
|
||||||
|
array("Nom"=>"Garza","Prenom"=>"Forrest","Email"=>"eleifend@ligulaedu","Taille"=>"185","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Tanner","Prenom"=>"Orla","Email"=>"adipiscing@vitaecouk","Taille"=>"180","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Griffith","Prenom"=>"Susan","Email"=>"condimentum@tristiqueca","Taille"=>"172","Poids"=>"75"),
|
||||||
|
array("Nom"=>"Wilkinson","Prenom"=>"Carla","Email"=>"tinciduntaliquamarcu@utmolestieca","Taille"=>"178","Poids"=>"71"),
|
||||||
|
array("Nom"=>"Kirkland","Prenom"=>"Vladimir","Email"=>"Donec@egettinciduntduiorg","Taille"=>"178","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Holloway","Prenom"=>"Joy","Email"=>"enim@Nullamca","Taille"=>"191","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Soto","Prenom"=>"Cleo","Email"=>"posuereatvelit@Incondimentumca","Taille"=>"167","Poids"=>"70"),
|
||||||
|
array("Nom"=>"Jacobson","Prenom"=>"Linda","Email"=>"disparturientmontes@metusurnaconvallisnet","Taille"=>"169","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Wilder","Prenom"=>"Ina","Email"=>"odiovel@eratcouk","Taille"=>"167","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Pace","Prenom"=>"Melvin","Email"=>"euismodindolor@DonecestNuncca","Taille"=>"175","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Moody","Prenom"=>"Hayden","Email"=>"ornareelit@malesuadaIntegeridedu","Taille"=>"180","Poids"=>"63"),
|
||||||
|
array("Nom"=>"Rhodes","Prenom"=>"Jarrod","Email"=>"turpis@placeratnet","Taille"=>"168","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Bean","Prenom"=>"Marah","Email"=>"suscipitest@ullamcorperDuiscursusnet","Taille"=>"165","Poids"=>"61"),
|
||||||
|
array("Nom"=>"Beard","Prenom"=>"Dylan","Email"=>"nonmagna@mollisnet","Taille"=>"173","Poids"=>"62"),
|
||||||
|
array("Nom"=>"Davenport","Prenom"=>"September","Email"=>"amet@purusca","Taille"=>"179","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Boyd","Prenom"=>"Natalie","Email"=>"Aeneangravidanunc@metusorg","Taille"=>"179","Poids"=>"62"),
|
||||||
|
array("Nom"=>"Davidson","Prenom"=>"Kane","Email"=>"ullamcorpermagnaSed@eutemporcouk","Taille"=>"181","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Burch","Prenom"=>"Tanek","Email"=>"a@Vivamussitorg","Taille"=>"169","Poids"=>"69"),
|
||||||
|
array("Nom"=>"Talley","Prenom"=>"Leo","Email"=>"musAeneaneget@ornareliberoatcom","Taille"=>"167","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Stephens","Prenom"=>"Simone","Email"=>"in@auctorodioacom","Taille"=>"170","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Haynes","Prenom"=>"Gloria","Email"=>"liberoettristique@diamvelarcucouk","Taille"=>"169","Poids"=>"70"),
|
||||||
|
array("Nom"=>"Blanchard","Prenom"=>"Faith","Email"=>"massa@augueeutellusnet","Taille"=>"166","Poids"=>"62"),
|
||||||
|
array("Nom"=>"Randall","Prenom"=>"Blaze","Email"=>"atpede@blanditNamnullacom","Taille"=>"163","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Griffith","Prenom"=>"Roary","Email"=>"aliquetmetus@velnislcouk","Taille"=>"162","Poids"=>"64"),
|
||||||
|
array("Nom"=>"Morgan","Prenom"=>"Tanner","Email"=>"egetlaoreet@arcucouk","Taille"=>"179","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Chapman","Prenom"=>"Amelia","Email"=>"nunc@massaQuisquecom","Taille"=>"164","Poids"=>"69"),
|
||||||
|
array("Nom"=>"Grant","Prenom"=>"Chloe","Email"=>"auctorMauris@loremegetorg","Taille"=>"173","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Richardson","Prenom"=>"Ryan","Email"=>"scelerisque@ullamcorpermagnacouk","Taille"=>"173","Poids"=>"64"),
|
||||||
|
array("Nom"=>"Cleveland","Prenom"=>"Yeo","Email"=>"acsem@vehiculaca","Taille"=>"163","Poids"=>"69"),
|
||||||
|
array("Nom"=>"Gay","Prenom"=>"Amanda","Email"=>"fames@idsapienedu","Taille"=>"165","Poids"=>"63"),
|
||||||
|
array("Nom"=>"Peters","Prenom"=>"Bruno","Email"=>"ornaretortor@condimentumDonecatcom","Taille"=>"163","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Lambert","Prenom"=>"Dean","Email"=>"sapien@sitametrisuscouk","Taille"=>"180","Poids"=>"71"),
|
||||||
|
array("Nom"=>"Petty","Prenom"=>"Nigel","Email"=>"pedeSuspendisse@risusDuiscouk","Taille"=>"168","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Phelps","Prenom"=>"Cullen","Email"=>"euaugue@Vestibulumanteca","Taille"=>"159","Poids"=>"76"),
|
||||||
|
array("Nom"=>"Cochran","Prenom"=>"Marny","Email"=>"Lorem@enimconsequatpuruscouk","Taille"=>"157","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Bauer","Prenom"=>"Sloane","Email"=>"nisi@liberonet","Taille"=>"174","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Strong","Prenom"=>"Leigh","Email"=>"ut@Aliquamcouk","Taille"=>"176","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Olsen","Prenom"=>"Herrod","Email"=>"uteratSed@rutrumloremedu","Taille"=>"167","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Spears","Prenom"=>"Bruno","Email"=>"congueturpis@nullaorg","Taille"=>"162","Poids"=>"77"),
|
||||||
|
array("Nom"=>"Pearson","Prenom"=>"Marah","Email"=>"Donecatarcu@aedu","Taille"=>"174","Poids"=>"62"),
|
||||||
|
array("Nom"=>"Moore","Prenom"=>"Orson","Email"=>"semegetmassa@puruscouk","Taille"=>"189","Poids"=>"76"),
|
||||||
|
array("Nom"=>"Roman","Prenom"=>"Kylie","Email"=>"habitant@duiaugueca","Taille"=>"177","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Michael","Prenom"=>"Ciaran","Email"=>"nostraper@nibhPhaselluscom","Taille"=>"156","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Sheppard","Prenom"=>"Colton","Email"=>"enim@inaliquetedu","Taille"=>"159","Poids"=>"70"),
|
||||||
|
array("Nom"=>"Mathews","Prenom"=>"Pamela","Email"=>"auctor@Praesenteuedu","Taille"=>"168","Poids"=>"74"),
|
||||||
|
array("Nom"=>"Thompson","Prenom"=>"Olga","Email"=>"vel@egestascom","Taille"=>"173","Poids"=>"75"),
|
||||||
|
array("Nom"=>"Petersen","Prenom"=>"Jared","Email"=>"urna@Crasvulputatevelitca","Taille"=>"173","Poids"=>"75"),
|
||||||
|
array("Nom"=>"Leblanc","Prenom"=>"Aurora","Email"=>"dictum@egetcom","Taille"=>"164","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Blanchard","Prenom"=>"Keiko","Email"=>"Suspendisse@torquentperconubiacouk","Taille"=>"167","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Sharp","Prenom"=>"Barrett","Email"=>"Proineget@laoreetposuereedu","Taille"=>"163","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Hughes","Prenom"=>"Orson","Email"=>"utdolor@risusDonecegestasnet","Taille"=>"159","Poids"=>"62"),
|
||||||
|
array("Nom"=>"Porter","Prenom"=>"Ava","Email"=>"Fuscedolor@Nuncnet","Taille"=>"178","Poids"=>"70"),
|
||||||
|
array("Nom"=>"Figueroa","Prenom"=>"Lesley","Email"=>"Quisquenonummy@eulacusorg","Taille"=>"168","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Wyatt","Prenom"=>"Zelenia","Email"=>"sitametultricies@accumsansedfacilisiscom","Taille"=>"174","Poids"=>"61"),
|
||||||
|
array("Nom"=>"Stark","Prenom"=>"Sarah","Email"=>"natoquepenatibuset@neccursusacom","Taille"=>"167","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Carney","Prenom"=>"Ariana","Email"=>"enimsit@nuncinterdumfeugiatorg","Taille"=>"180","Poids"=>"78"),
|
||||||
|
array("Nom"=>"Simmons","Prenom"=>"Herrod","Email"=>"ac@estnet","Taille"=>"172","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Mayo","Prenom"=>"Carissa","Email"=>"Nulla@quamquisca","Taille"=>"182","Poids"=>"60"),
|
||||||
|
array("Nom"=>"Higgins","Prenom"=>"Serena","Email"=>"anteblanditviverra@aliquetPhasellusfermentumedu","Taille"=>"178","Poids"=>"71"),
|
||||||
|
array("Nom"=>"Fletcher","Prenom"=>"Remedios","Email"=>"Phaselluselitpede@consequatcouk","Taille"=>"180","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Green","Prenom"=>"Dale","Email"=>"libero@temporeratorg","Taille"=>"171","Poids"=>"68"),
|
||||||
|
array("Nom"=>"White","Prenom"=>"Jack","Email"=>"velconvallis@anteedu","Taille"=>"172","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Russo","Prenom"=>"Giselle","Email"=>"nonnisi@luctusvulputateorg","Taille"=>"160","Poids"=>"69"),
|
||||||
|
array("Nom"=>"James","Prenom"=>"Kimberley","Email"=>"malesuadafamesac@nuncsitametcom","Taille"=>"191","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Huffman","Prenom"=>"Thomas","Email"=>"Nuncmauriselit@Pellentesqueca","Taille"=>"168","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Turner","Prenom"=>"Cody","Email"=>"lorem@elitcouk","Taille"=>"172","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Neal","Prenom"=>"Cheryl","Email"=>"nequevitaesemper@rhoncusidcom","Taille"=>"170","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Patel","Prenom"=>"Hamilton","Email"=>"ametultriciessem@nonantebibendumedu","Taille"=>"172","Poids"=>"79"),
|
||||||
|
array("Nom"=>"Alexander","Prenom"=>"Grant","Email"=>"nonnisiAenean@massacom","Taille"=>"174","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Shepherd","Prenom"=>"Tad","Email"=>"ac@inorg","Taille"=>"165","Poids"=>"76"),
|
||||||
|
array("Nom"=>"Wynn","Prenom"=>"Danielle","Email"=>"lectusquismassa@InfaucibusMorbiorg","Taille"=>"169","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Pollard","Prenom"=>"Ahmed","Email"=>"velarcu@Nullaegetorg","Taille"=>"164","Poids"=>"62"),
|
||||||
|
array("Nom"=>"Peters","Prenom"=>"Hollee","Email"=>"loremipsum@sitametca","Taille"=>"177","Poids"=>"75"),
|
||||||
|
array("Nom"=>"Alston","Prenom"=>"Brendan","Email"=>"antebibendumullamcorper@idblanditcouk","Taille"=>"156","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Keith","Prenom"=>"Vernon","Email"=>"diam@sagittisnet","Taille"=>"168","Poids"=>"70"),
|
||||||
|
array("Nom"=>"Rodgers","Prenom"=>"Angela","Email"=>"pharetra@vellectusCumcom","Taille"=>"171","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Parker","Prenom"=>"Tatiana","Email"=>"penatibusetmagnis@scelerisquesedca","Taille"=>"173","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Miller","Prenom"=>"Timothy","Email"=>"tinciduntcongue@atca","Taille"=>"178","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Wilder","Prenom"=>"Rosalyn","Email"=>"mauris@aliquameuorg","Taille"=>"165","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Baker","Prenom"=>"Sheila","Email"=>"sitametrisus@euplacerategetcouk","Taille"=>"178","Poids"=>"69"),
|
||||||
|
array("Nom"=>"Lee","Prenom"=>"Roary","Email"=>"nequenon@acouk","Taille"=>"159","Poids"=>"61"),
|
||||||
|
array("Nom"=>"Gillespie","Prenom"=>"Quemby","Email"=>"nonenimcommodo@lobortiscom","Taille"=>"167","Poids"=>"61"),
|
||||||
|
array("Nom"=>"Dixon","Prenom"=>"Zenaida","Email"=>"risus@etmagnisdisca","Taille"=>"170","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Holden","Prenom"=>"Chloe","Email"=>"in@elementumorg","Taille"=>"169","Poids"=>"76"),
|
||||||
|
array("Nom"=>"Rios","Prenom"=>"Stone","Email"=>"consequatenim@enimMaurisca","Taille"=>"169","Poids"=>"77"),
|
||||||
|
array("Nom"=>"Berg","Prenom"=>"Sara","Email"=>"faucibusleo@Maurisblanditenimorg","Taille"=>"162","Poids"=>"63"),
|
||||||
|
array("Nom"=>"Clay","Prenom"=>"Timon","Email"=>"etultrices@necorg","Taille"=>"168","Poids"=>"72"),
|
||||||
|
array("Nom"=>"Schneider","Prenom"=>"Knox","Email"=>"dolor@liberoca","Taille"=>"165","Poids"=>"65"),
|
||||||
|
array("Nom"=>"Cervantes","Prenom"=>"Pandora","Email"=>"metusVivamuseuismod@ligulaca","Taille"=>"179","Poids"=>"73"),
|
||||||
|
array("Nom"=>"Allen","Prenom"=>"Micah","Email"=>"dolorsitamet@nonhendreritorg","Taille"=>"176","Poids"=>"75"),
|
||||||
|
array("Nom"=>"Kirkland","Prenom"=>"Jolie","Email"=>"Fuscemollis@Nuncullamcorperorg","Taille"=>"154","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Woodard","Prenom"=>"Quincy","Email"=>"idliberoDonec@Phasellusnullaca","Taille"=>"166","Poids"=>"69"),
|
||||||
|
array("Nom"=>"Peck","Prenom"=>"Octavius","Email"=>"lobortis@semperegestasurnaca","Taille"=>"167","Poids"=>"68"),
|
||||||
|
array("Nom"=>"Andrews","Prenom"=>"Wade","Email"=>"sedpede@mifelisorg","Taille"=>"158","Poids"=>"64"),
|
||||||
|
array("Nom"=>"Kennedy","Prenom"=>"Lydia","Email"=>"Vestibulumaccumsanneque@ipsumnuncidnet","Taille"=>"178","Poids"=>"67"),
|
||||||
|
array("Nom"=>"Velez","Prenom"=>"Erin","Email"=>"sagittisDuisgravida@nonduineccouk","Taille"=>"167","Poids"=>"66"),
|
||||||
|
array("Nom"=>"Hendrix","Prenom"=>"Sopoline","Email"=>"asollicitudin@etcouk","Taille"=>"173","Poids"=>"74"),
|
||||||
|
array("Nom"=>"Boyd","Prenom"=>"Neville","Email"=>"nuncidenim@vehiculaPellentesquetinciduntcom","Taille"=>"173","Poids"=>"75"),
|
||||||
|
array("Nom"=>"Rice","Prenom"=>"Lois","Email"=>"nonmassanon@Aeneanca","Taille"=>"166","Poids"=>"58"),
|
||||||
|
array("Nom"=>"Lloyd","Prenom"=>"Aline","Email"=>"dapibusgravida@utmolestieinedu","Taille"=>"145","Poids"=>"80")
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
38
R3.01/tp/tp1/ex3/index.php
Normal file
38
R3.01/tp/tp1/ex3/index.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
include './include/data.inc.php';
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>tp1 - ex3</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
>
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h2>Exercice 3 : IMC </h2>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nom</th>
|
||||||
|
<th>Prénom</th>
|
||||||
|
<th>Email</th>
|
||||||
|
<th>Taille</th>
|
||||||
|
<th>Poids</th>
|
||||||
|
<th>IMC</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<!-- À compléter -->
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
7
R3.01/tp/tp1/ex4/css/style.css
Normal file
7
R3.01/tp/tp1/ex4/css/style.css
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
img{
|
||||||
|
width : 10rem;
|
||||||
|
margin:2rem;
|
||||||
|
}
|
||||||
|
.is-center{
|
||||||
|
text-align : center;
|
||||||
|
}
|
9
R3.01/tp/tp1/ex4/img/dice-six-faces-five.svg
Normal file
9
R3.01/tp/tp1/ex4/img/dice-six-faces-five.svg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m0,0h512v512h-512z"/>
|
||||||
|
<path d="m74.5,36h363a38.5,38.5 0 0,1 38.5,38.5v363a38.5,38.5 0 0,1 -38.5,38.5h-363a38.5,38.5 0 0,1 -38.5-38.5v-363a38.5,38.5 0 0,1 38.5-38.5" fill="#fff"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(0,-.71549,.71911,0,123.67678,212.03015)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,254.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,522.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,522.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,254.32322)"/>
|
||||||
|
</svg>
|
After (image error) Size: 1020 B |
8
R3.01/tp/tp1/ex4/img/dice-six-faces-four.svg
Normal file
8
R3.01/tp/tp1/ex4/img/dice-six-faces-four.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m0,0h512v512h-512z"/>
|
||||||
|
<path d="m74.5,36h363a38.5,38.5 0 0,1 38.5,38.5v363a38.5,38.5 0 0,1 -38.5,38.5h-363a38.5,38.5 0 0,1 -38.5-38.5v-363a38.5,38.5 0 0,1 38.5-38.5" fill="#fff"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,254.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,522.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,522.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,254.32322)"/>
|
||||||
|
</svg>
|
After (image error) Size: 868 B |
5
R3.01/tp/tp1/ex4/img/dice-six-faces-one.svg
Normal file
5
R3.01/tp/tp1/ex4/img/dice-six-faces-one.svg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m0,0h512v512h-512z"/>
|
||||||
|
<path d="m74.5,36h363a38.5,38.5 0 0,1 38.5,38.5v363a38.5,38.5 0 0,1 -38.5,38.5h-363a38.5,38.5 0 0,1 -38.5-38.5v-363a38.5,38.5 0 0,1 38.5-38.5" fill="#fff"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(0,-.71549,.71911,0,123.67678,212.03015)"/>
|
||||||
|
</svg>
|
After (image error) Size: 410 B |
10
R3.01/tp/tp1/ex4/img/dice-six-faces-six.svg
Normal file
10
R3.01/tp/tp1/ex4/img/dice-six-faces-six.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m0,0h512v512h-512z"/>
|
||||||
|
<path d="m74.5,36h363a38.5,38.5 0 0,1 38.5,38.5v363a38.5,38.5 0 0,1 -38.5,38.5h-363a38.5,38.5 0 0,1 -38.5-38.5v-363a38.5,38.5 0 0,1 38.5-38.5" fill="#fff"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(0,-.71549,.71911,0,257.67678,212.03015)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(0,-.71549,.71911,0,-10.32322,212.03015)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,254.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,522.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,522.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,254.32322)"/>
|
||||||
|
</svg>
|
After (image error) Size: 1.1 KiB |
7
R3.01/tp/tp1/ex4/img/dice-six-faces-three.svg
Normal file
7
R3.01/tp/tp1/ex4/img/dice-six-faces-three.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m0,0h512v512h-512z"/>
|
||||||
|
<path d="m74.5,36h363a38.5,38.5 0 0,1 38.5,38.5v363a38.5,38.5 0 0,1 -38.5,38.5h-363a38.5,38.5 0 0,1 -38.5-38.5v-363a38.5,38.5 0 0,1 38.5-38.5" fill="#fff"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(0,-.71549,.71911,0,123.67678,212.03015)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,254.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,522.32322)"/>
|
||||||
|
</svg>
|
After (image error) Size: 715 B |
6
R3.01/tp/tp1/ex4/img/dice-six-faces-two.svg
Normal file
6
R3.01/tp/tp1/ex4/img/dice-six-faces-two.svg
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m0,0h512v512h-512z"/>
|
||||||
|
<path d="m74.5,36h363a38.5,38.5 0 0,1 38.5,38.5v363a38.5,38.5 0 0,1 -38.5,38.5h-363a38.5,38.5 0 0,1 -38.5-38.5v-363a38.5,38.5 0 0,1 38.5-38.5" fill="#fff"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,346.03015,254.32322)"/>
|
||||||
|
<path d="m8.428,184.011a69.882,69.5309 0 1,1 -139.7641,0 69.882,69.5309 0 1,1 139.7641,0z" transform="matrix(-.71549,0,0,-.71911,78.03015,522.32322)"/>
|
||||||
|
</svg>
|
After (image error) Size: 563 B |
BIN
R3.01/tp/tp1/ex4/img/exo4.png
Normal file
BIN
R3.01/tp/tp1/ex4/img/exo4.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 23 KiB |
24
R3.01/tp/tp1/ex4/index.php
Normal file
24
R3.01/tp/tp1/ex4/index.php
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<title>tp1 - ex4</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
>
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h5><a href=""> Tirage aléatoire</a></h5>
|
||||||
|
<article class="is-center">
|
||||||
|
<img src='./img/dice-six-faces-five.svg'>
|
||||||
|
<img src='./img/dice-six-faces-one.svg'>
|
||||||
|
</article>
|
||||||
|
<h5>Somme = </h5>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
5
R3.01/tp/tp1/ex5/css/style.css
Normal file
5
R3.01/tp/tp1/ex5/css/style.css
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
img{
|
||||||
|
height:15px;
|
||||||
|
vertical-align:middle;
|
||||||
|
margin:0;
|
||||||
|
}
|
29
R3.01/tp/tp1/ex5/include/favoris.inc.php
Normal file
29
R3.01/tp/tp1/ex5/include/favoris.inc.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$favoris = [
|
||||||
|
"Moteurs de recherche" => [
|
||||||
|
[
|
||||||
|
"nom"=>"Google",
|
||||||
|
"url"=>"http://google.com",
|
||||||
|
"img"=>"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/272px-Google_2015_logo.svg.png"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"nom"=>"Yahoo",
|
||||||
|
"url"=>"http://yahoo.com",
|
||||||
|
"img"=>"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Yahoo%21_%282019%29.svg/200px-Yahoo%21_%282019%29.svg.png"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"Journaux" => [
|
||||||
|
[
|
||||||
|
"nom"=>"Le Monde",
|
||||||
|
"url"=>"http://lemonde.fr",
|
||||||
|
"img"=>"http://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Le_monde_logo.svg/200px-Le_monde_logo.svg.png"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"nom"=>"L'equipe",
|
||||||
|
"url"=>"http://lequipe.fr",
|
||||||
|
"img"=>"http://upload.wikimedia.org/wikipedia/commons/3/32/L%27%C3%89quipe_wordmark.svg"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
?>
|
27
R3.01/tp/tp1/ex5/index.php
Normal file
27
R3.01/tp/tp1/ex5/index.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
include './include/favoris.inc.php';
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<title>tp1 - ex4</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
>
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h2>
|
||||||
|
Exercice 4 : Favoris
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<!-- À compléter -->
|
||||||
|
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
7
R3.01/tp/tp1/ex6/include/fonction.php
Normal file
7
R3.01/tp/tp1/ex6/include/fonction.php
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
function createPassword($n,$alphabet){
|
||||||
|
$length = strlen($alphabet);
|
||||||
|
$password = "";
|
||||||
|
return $password;
|
||||||
|
}
|
||||||
|
?>
|
35
R3.01/tp/tp1/ex6/index.php
Normal file
35
R3.01/tp/tp1/ex6/index.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
include './include/fonction.php';
|
||||||
|
$alphabet = "@#!*^&azertyuiopqsdfghjkklmwxcvbnAZERTYUIOPLMKJHGFDSQWXCVBN1234567890";
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<title>Exercice 5</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<hgroup>
|
||||||
|
<h2>Exercice 5 : createPassword </h2>
|
||||||
|
<h3>
|
||||||
|
Test de la fonction createPassword
|
||||||
|
</h3>
|
||||||
|
</hgroup>
|
||||||
|
<article>
|
||||||
|
<ul>
|
||||||
|
<li><code><?php echo createPassword(5, $alphabet);?></code></li>
|
||||||
|
<li><code><?php echo createPassword(10,$alphabet);?></code></li>
|
||||||
|
<li><code><?php echo createPassword(15,$alphabet);?></code></li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</main>
|
||||||
|
</html>
|
118
R3.01/tp/tp2/README.md
Normal file
118
R3.01/tp/tp2/README.md
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
# TP 2 : Intéractions avec le client. Formulaires HTML et PHP.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
> On utilisera autant que possible les fonctions
|
||||||
|
[filter\_input](http://php.net/manual/fr/function.filter-input.php) ou
|
||||||
|
[filter\_var](http://php.net/manual/fr/function.filter-var.php) qui
|
||||||
|
permettent de valider le type (ou nettoyer) des entrées d'un formulaire
|
||||||
|
(entre autre).
|
||||||
|
|
||||||
|
### Ex1.
|
||||||
|
Ecrire le script de traitement associé au formulaire (2 champs texte
|
||||||
|
pour le nom et prénom, quatre boutons radio pour choisir le système) qui
|
||||||
|
affiche les données saisies :
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/exo1.png">
|
||||||
|
<img src="./img/exo11.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Faites en sorte que la première lettre (et elle seule) du prénom et
|
||||||
|
du nom soit en en majuscule.
|
||||||
|
|
||||||
|
Vous pouvez utilisez les fonctions :
|
||||||
|
|
||||||
|
```php
|
||||||
|
string strtolower ( string $string );
|
||||||
|
string ucfirst ( string $str );
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ex2.
|
||||||
|
Ecrire un (seul) script qui saisit dans un champs texte un entier et
|
||||||
|
qui affiche la table de multiplication correspondante lors de la
|
||||||
|
soumission.
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/exo2.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
### Ex3.
|
||||||
|
Ecrire une petite calculatrice permettant d'effectuer des
|
||||||
|
opérations arithmétiques élémentaires (+,x,-,/) sur deux opérandes.
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/exo3.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
1. Première version : affichez un formulaire permettant, dans
|
||||||
|
l'ordre, de saisir la première opérande, puis dans une liste
|
||||||
|
(`SELECT`) l'opération, enfin de saisir la deuxième opérande.
|
||||||
|
Associez à ce formulaire le script effectuant le calcul et
|
||||||
|
affichant le résultat.
|
||||||
|
2. Assurez-vous qu'on ne puisse pas diviser par 0.
|
||||||
|
3. Deuxième version : après un calcul, réaffichez le formulaire en
|
||||||
|
proposant comme valeur par défaut de la première opérande le
|
||||||
|
résultat du calcul précédent.
|
||||||
|
|
||||||
|
### Ex4.
|
||||||
|
Vous diposez du fichier html `quizz.html`. Pour chaque question, il
|
||||||
|
n'y a qu'une réponse exacte. On vous demande d'écrire le script
|
||||||
|
php de traitement des réponses qui affiche au joueur le résultat du
|
||||||
|
jeu :
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/exo4.png">
|
||||||
|
<img src="./img/exo41.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Regardez-bien comment est structuré le quizz (nom des variables,
|
||||||
|
valeurs transmises, etc ). Cela doit vous permettre d'écrire un
|
||||||
|
script php qui s'adaptera automatiquement si on rajoute ou on
|
||||||
|
enlève des questions au quizz.
|
||||||
|
|
||||||
|
Evidemment, il est très facile de tricher !
|
||||||
|
|
||||||
|
### Ex5.
|
||||||
|
Vous disposez du formulaire suivant :
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/exo5.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- Un champ texte permet de saisir un verbe du premier groupe à
|
||||||
|
conjuguer.
|
||||||
|
- Des cases à cocher permettent de choisir les temps de
|
||||||
|
conjugaisons.
|
||||||
|
|
||||||
|
Ecrire le script PHP qui receptionne les données **postées** par le
|
||||||
|
formulaire précédent, et qui affiche le verbe conjugué aux temps
|
||||||
|
choisis.
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/exo51.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Conseils</summary>
|
||||||
|
<div>
|
||||||
|
Pour extraire le radical, vous pouvez utiliser la
|
||||||
|
fonction <a href='http://fr2.php.net/manual/fr/function.substr.php'>substr</a>
|
||||||
|
|
||||||
|
```php
|
||||||
|
string substr ( string $string , int $start [, int $length ] );
|
||||||
|
```
|
||||||
|
|
||||||
|
Vous pouvez également stocker dans un tableau associatif les
|
||||||
|
terminaisons possibles, ainsi que les pronoms personnels.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$terminaisons = array("present"=>array("e","es","e","ons","ez","ent"), ...
|
||||||
|
```
|
||||||
|
</div>
|
||||||
|
</details>
|
3
R3.01/tp/tp2/ex1/css/style.css
Normal file
3
R3.01/tp/tp2/ex1/css/style.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
form button{
|
||||||
|
float:right;
|
||||||
|
}
|
54
R3.01/tp/tp2/ex1/ex1.html
Normal file
54
R3.01/tp/tp2/ex1/ex1.html
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
<title>Exercice 1</title>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h3> Exercice 1</h3>
|
||||||
|
|
||||||
|
<form action="ex1.php" method="POST">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Qui êtes-vous ?</legend>
|
||||||
|
<!-- Text input-->
|
||||||
|
<label>Nom
|
||||||
|
<input name="nom" placeholder="nom" type="text">
|
||||||
|
</label>
|
||||||
|
<!-- Text input-->
|
||||||
|
<label >Prénom
|
||||||
|
<input name="prenom" placeholder="prénom" type="text">
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
|
<!-- Multiple Radios -->
|
||||||
|
<fieldset>
|
||||||
|
<legend>Système d'exploitation préféré</legend>
|
||||||
|
<label>
|
||||||
|
<input name="os" value="1" checked="checked" type="radio">
|
||||||
|
Linux
|
||||||
|
</label>
|
||||||
|
<label >
|
||||||
|
<input name="os" value="2" type="radio">
|
||||||
|
Windows
|
||||||
|
</label>
|
||||||
|
<label >
|
||||||
|
<input name="os" value="3" type="radio">
|
||||||
|
macOS
|
||||||
|
</label>
|
||||||
|
<label >
|
||||||
|
<input name="os" value="4" type="radio">
|
||||||
|
Android
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
|
<!-- Button -->
|
||||||
|
<button type="submit">Envoyer</button>
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
26
R3.01/tp/tp2/ex1/ex1.php
Normal file
26
R3.01/tp/tp2/ex1/ex1.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
include 'include/controller.php';
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<ul>
|
||||||
|
<?php
|
||||||
|
echo "<li>$prenom $nom</li>";
|
||||||
|
echo "<li><i class='fa-brands $icon fa-2x'></i></li>";
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
2
R3.01/tp/tp2/ex1/include/controller.php
Normal file
2
R3.01/tp/tp2/ex1/include/controller.php
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
// TODO
|
4
R3.01/tp/tp2/ex2/css/style.css
Normal file
4
R3.01/tp/tp2/ex2/css/style.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
input[type="text"]{
|
||||||
|
display:inline;
|
||||||
|
width:auto;
|
||||||
|
}
|
2
R3.01/tp/tp2/ex2/include/controller.php
Normal file
2
R3.01/tp/tp2/ex2/include/controller.php
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
// TODO
|
23
R3.01/tp/tp2/ex2/multiplication.php
Normal file
23
R3.01/tp/tp2/ex2/multiplication.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
include 'include/controller.php';
|
||||||
|
?>
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h4>Table de multiplication</h4>
|
||||||
|
<form method="GET">
|
||||||
|
<input type=number name="table" placeholder="table">
|
||||||
|
<button type="submit">ENVOYER</button>
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
34
R3.01/tp/tp2/ex3/calculatrice.php
Normal file
34
R3.01/tp/tp2/ex3/calculatrice.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
include 'include/controller.php';
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title></title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container">
|
||||||
|
<h3>Calculatrice</h3>
|
||||||
|
<form method="POST">
|
||||||
|
<div class="grid">
|
||||||
|
<input placeholder="un nombre" type="number" step="any" name="op1" value ="" required>
|
||||||
|
<select name="operation" required>
|
||||||
|
<option value="+">+</option>
|
||||||
|
<option value="-">-</option>
|
||||||
|
<option value="x">x</option>
|
||||||
|
<option value="/">/</option>
|
||||||
|
</select>
|
||||||
|
<input placeholder="un nombre" type="number" step="any" name="op2" required>
|
||||||
|
<button type="submit" name="soumis"> Calculer</button>
|
||||||
|
</grid>
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
6
R3.01/tp/tp2/ex3/css/style.css
Normal file
6
R3.01/tp/tp2/ex3/css/style.css
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
input[type="text"],
|
||||||
|
select
|
||||||
|
{
|
||||||
|
display:inline-block;
|
||||||
|
width:auto;
|
||||||
|
}
|
2
R3.01/tp/tp2/ex3/include/controller.php
Normal file
2
R3.01/tp/tp2/ex3/include/controller.php
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
//TODO
|
4
R3.01/tp/tp2/ex4/css/style.css
Normal file
4
R3.01/tp/tp2/ex4/css/style.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
button{
|
||||||
|
|
||||||
|
float:right;
|
||||||
|
}
|
61
R3.01/tp/tp2/ex4/quizz.html
Normal file
61
R3.01/tp/tp2/ex4/quizz.html
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container">
|
||||||
|
<h3>Quizz</h3>
|
||||||
|
<form action="score.php" method="post">
|
||||||
|
<fieldset>
|
||||||
|
Quelle est la capitale de la France ?
|
||||||
|
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question1" value="faux" > Lyon
|
||||||
|
</label>
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question1" value="vrai"> Paris
|
||||||
|
</label>
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question1" value="faux"> Marseille
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
Quelle est le nombre suivant de la suite 1,2,4,8 ?
|
||||||
|
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question2" value="vrai" > 16
|
||||||
|
</label>
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question2" value="faux"> 32
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
La bataille de Marignan a eu lieu en
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question3" value="faux" > 1492
|
||||||
|
</label>
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question3" value="vrai"> 1515
|
||||||
|
</label>
|
||||||
|
<label class="radio">
|
||||||
|
<input type="radio" name="question3" value="faux"> 1789
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<button type="submit">Envoyer</button>
|
||||||
|
</fieldset>
|
||||||
|
<input type="hidden" value="3" name="nbq">
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user