Aller au contenu

PHP et GET⚓︎

Les paramètres dans l'URL⚓︎

Obtenir les paramètres de l'URL

Par défaut, lorsqu'un navigateur fait une requête à un serveur, il utilise la méthode GET et passe donc les paramètres dans la barre d'adresse en rajoutant ?param1=val1&param2=val2 à la fin. Ces valeurs sont stockées dans un dictionnaire qui peut être utilisé par PHP en écrivant $_GET['param1'] pour obtenir la valeur du premier paramètre. Ainsi, on peut modifier le script multiplication.php pour pouvoir donner la valeur de a en paramètre :

<!DOCTYPE html>
<html lang="fr">
    <?php
    if (isset($_GET['a'])) {
       $a=$_GET['a'];
    } else {
      $a=7;
    }
    ?>
    <head>
        <title>La table de <?php echo $a ?></title>
        <meta charset="utf-8">
    </head>
    <body>
        <ul>
            <?php
            $fin = 10;
            $style = "color:red";
            for ($i=0 ; $i <= $fin ; $i=$i+1){
                if ($i%2 != 0) {
                    echo "<li style='" . $style . "'>";
                } else {
                    echo "<li>";
                }
                echo $a . " * " . $i . " = " . ($a * $i) ;
                echo "</li>\n";
            }
            ?>
        </ul>
    </body>
</html>

L'instruction isset($_GET['a']) permet de tester s'il y a bien un paramètre a passé dans l'adresse. Si ce n'est pas le cas, on donne une valeur par défaut.

Exercice 6
  1. Modifiez le script multiplication.php avec le code ci-dessus. Les lignes à modifier (ajout ou retrait) sont surlignées.
  2. Testez en allant à l'adresse http://localhost/multiplication.php.
  3. Testez en allant à l'adresse http://localhost/multiplication.php?a=41.
Exercice 7

Modifiez le script multiplication.php pour que l'adresse http://localhost/multiplication.php?a=42&debut=15&fin=67 affiche la table de multiplication de 42, en partant de 15 jusqu'à 67 inclus.

S'il n'y a pas de valeurs pour debut ou fin, vous pouvez reprendre les valeurs initiales du script.

Formulaires⚓︎

Utilisation de formulaires

Rentrer les valeurs directement dans la barre d'adresse, c'est fastidieux et pas très intuitif. Tout le contraire de ce qu'on veut pour une page web. Pour rentrer ces valeurs, on utilise généralement un formulaire et on envoie les données au serveur en appuyant sur un bouton. En HTML, les formulaires se font avec la balise <form>. Les parties avec lesquelles peut interagir l'utilisateur sont dans les balises <input>. Les <label> servent à rajouter le texte, tandis que <fieldset> et <legend> servent pour la mise en page.

Voici un exemple :

<!DOCTYPE html>
<html lang="fr">
    <head>
        <title>On met la table ?</title>
        <meta charset="utf-8">
    </head>
    <body>
        <form action="multiplication.php" method="get">
          <fieldset style="width:20em">
            <legend>La table de quel nombre ?</legend>
            <label>Nombre : </label>
            <input type="number" name="a" value="1" size="5">
            <br>
            <label>Début : </label>
            <input type="number" name="debut" value="0" size="5">
            <br>
            <label>fin : </label>
            <input type="number" name="fin" value="10" size="5">
            <br>
            <input type="submit" value="Afficher la table">
          </fieldset>
        </form>
    </body>
</html>
Exercice 8
  1. Créez un fichier multiplication.html et copiez le code ci-dessus.
  2. Testez en allant à l'adresse http://localhost/multiplication.html et cliquez sur le bouton pour obtenir la page.
Attributs des balises de formulaires

Dans la balise <form>, l'attribut \htmlinline{action} permet de définir la page à charger et method indique la méthode à utiliser (GET ou POST). Pour les balises <input>, les attributs optionnels value permet de définir une valeur par défaut pour être sûr de passer une valeur au fichier PHP. Il est également possible de rajouter un attribut required pour que le bouton ne puisse pas lancer l'action tant que tous les champs obligatoires n'ont pas été remplis.