166 lines
4.3 KiB
Markdown
166 lines
4.3 KiB
Markdown
# TD Formulaire (intro). #
|
|
|
|
## Exo (Quizz) ##
|
|
|
|
* Pour transmettre l'information d'un formulaire, je peux utiliser
|
|
- get
|
|
- set
|
|
- post
|
|
- lock
|
|
- mock
|
|
* Quelle forme est la plus adaptée si je veux pouvoir mettre un marque-page?
|
|
* Quelle forme est la plus adaptée si je veux transmettre un mot de passe? pourquoi?
|
|
* Quel élément de formulaire permet de choisir exactement une option?
|
|
* Quel élément de formulaire permet de choisir plusieurs options?
|
|
|
|
**correction**
|
|
* get, post
|
|
* get
|
|
* post, car la valeur du mdp sera caché alors qu'avec get elles apparaitra dans l'url.
|
|
* radio
|
|
* checkbox
|
|
|
|
## Exo (Syntaxe) ##
|
|
|
|
Notre page web contient ceci.
|
|
```html
|
|
<form action="salut.php" method="get">
|
|
ton surnom : <input type="text" name="toto">
|
|
</form>
|
|
```
|
|
Nous souhaitons que salut.php (ci-dessous) affiche salut suivi du surnom entré à la page précédente.
|
|
|
|
**à corriger**
|
|
```php
|
|
<html>
|
|
<body>
|
|
|
|
Welcome <?php echo "toto"; ?>
|
|
|
|
</body>
|
|
</html>
|
|
```
|
|
|
|
**correction**
|
|
|
|
```php
|
|
<html>
|
|
<body>
|
|
|
|
Welcome <?php echo $_GET[$toto]; ?>
|
|
|
|
</body>
|
|
</html>
|
|
```
|
|
## Exo (Un jeu) ##
|
|
|
|
On souhaite coder le jeu super ludique suivant.
|
|
L'utilisateur doit écrire une ligne de texte sur une première ligne et une autre ligne de texte sur une seconde ligne qui soit la traduction en rot13.
|
|
|
|
Pour ceci PhP offre une méthode intéressante `str_rot13(string $string): string`
|
|
|
|
Ainsi le fichier suivant :
|
|
```php
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
|
|
<?php
|
|
echo str_rot13("Salut toto, rot13 c'est nul comme crypto");
|
|
echo "<br>";
|
|
echo str_rot13("Fnyhg gbgb, ebg13 p'rfg ahy pbzzr pelcgb");
|
|
?>
|
|
|
|
</body>
|
|
</html>
|
|
```
|
|
va afficher ceci sur le navigateur.
|
|
```
|
|
Fnyhg gbgb, ebg13 p'rfg ahy pbzzr pelcgb
|
|
Salut toto, rot13 c'est nul comme crypto
|
|
```
|
|
|
|
Pour le jeu on veut donc un formulaire
|
|
```html
|
|
<h1>Le Jeu du rot13</h1>
|
|
<form action="rot13.php" method="get">
|
|
<label>le clair :</label>
|
|
<br>
|
|
<input type="text" name="clair">
|
|
<br>
|
|
<label>le chiffré :</label>
|
|
<br>
|
|
<input type="text" name="chiffre">
|
|
<br>
|
|
<br>
|
|
<input type="submit" value="Jouer">
|
|
</form>
|
|
```
|
|
|
|
Détaillez les parties intéressates du fichier `rot13.php` qui permettent d'afficher win ou loss (en rot13 évidemment) selon que le joueur a gagné ou perdu en dessous du texte chiffré initial.
|
|
Exemple si je soumet
|
|
```
|
|
le clair :
|
|
Salut toto
|
|
le chiffré :
|
|
Fnyhg gbgb
|
|
```
|
|
alors le navigateur va afficher
|
|
```
|
|
Fnyhg gbgb
|
|
???
|
|
```
|
|
où ??? correspond à win en rot13.
|
|
|
|
|
|
Question bonus : quelle url permet-elle d'afficher win en rot13 en dessous de win?
|
|
|
|
|
|
|
|
## Exo ##
|
|
à faire exo luc qui transforme le get en post
|
|
idem dans l'autre sens.
|
|
|
|
## Exo (string et tableaux associatifs)##
|
|
|
|
introduction quelques méthodes pour les string.
|
|
|
|
explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
|
|
|
|
|
|
Pour obtenir le tableau des mots d'une phrase :
|
|
|
|
explode(" ","bonjour tout le monde")
|
|
|
|
|
|
Pour faire la différence entre deux tableaux
|
|
|
|
array_diff(array $array, array ...$arrays): array
|
|
|
|
|
|
Exemple :
|
|
|
|
<?php
|
|
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
|
|
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
|
|
|
|
$result=array_diff($a1,$a2);
|
|
print_r($result);
|
|
?>
|
|
|
|
va afficher
|
|
|
|
Array ( [d] => yellow )
|
|
|
|
|
|
Question.
|
|
Écrire un programme PhP qui prend une phrase en argument, enlève les mots pas intéressants ou vulgaires (par exemple "le la les de du au à quel quelle il elle tu je nous vous ils mais ou et donc or ni car zouave étudiant athlète") et compte le nombre de mots.
|
|
|
|
On affiche les mots sous forme d'un nuage de mot du pauvre en changeant la taille des mots en fonction de leur fréquence.
|
|
Par exemple, dix fois leur fréquence en pixel:
|
|
|
|
<p style="font-size:30px">Trendy</p>
|
|
<p style="font-size:60px">Cool</p>
|
|
|
|
|