PHP – Scripts basiques (exemples et exercices)

LEÇON

 

Ressources / Références

 

 

Affichage date et/ou heure

Exemple :

 

ex1.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>PHP</title>
    </head>
    <body>

        <?php
              date_default_timezone_set("Europe/Paris");

              /* La fonction date() n'est pas internationalisée. */
              /* Pour exprimer les dates en français, il faut */
              /* utiliser setlocale() et strftime(). */
              setlocale (LC_TIME, 'fr_FR.utf8','fra');
        ?>

        <h3>Date et heure</h3>

        <p><?php echo (strftime("%d/%m/%Y %H:%M:%S")); ?></p>
        <p><?php echo utf8_encode(strftime("%A %d %B %Y, %Hh%M et %S secondes")); ?></p>
        <p><?php echo (strftime("%c")); ?></p>
        <p><?php echo (strftime("%Y-%m-%d-%H-%M-%S")); ?></p>

        <hr>

        <h3>Date</h3>

        <p><?php echo (strftime("%d/%m/%Y")); ?></p>
        <p><?php echo utf8_encode(strftime("%d %b %Y (%a)")); ?></p>
        <p><?php echo utf8_encode(strftime("Le %A, %d %B, %Y")); ?></p>
        <p><?php echo (strftime("%Y jour num&eacute;ro %j")); ?></p>

        <hr>

        <h3>Heure</h3>

        <p><?php echo (strftime("%H:%M:%S")); ?></p>
        <p><?php echo (strftime("%Hh%M")); ?></p>

    </body>
</html>

 

Gestion de données reçues via formulaire

Exemple :

 

ex2.php

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Bienvenue</title>
</head>

<body style="background-color:#e0e0e0; padding:0px; margin:0px;">

<div style="width:880px; margin: 0 auto;
            background-color:#f0f0f0; padding:40px;">

<?php
  if (isset($_POST['prenom']))
  {
?>

<h3>Merci !</h3>
<br>
<p>Nous vous remercions. Votre demande sera trait&eacute;e rapidement.</p>
<p>Veuillez trouver ci-dessous un r&eacute;capitulatif de vos informations.</p>

<br><hr></br>

<p><strong>Pr&eacute;nom</strong> : <?php echo $_POST['prenom']; ?></p>
<p><strong>Nom</strong> : <?php echo $_POST['nom']; ?></p>
<p><strong>H/F</strong> : <?php echo $_POST['hf']; ?></p>
<p><strong>Age</strong> : <?php
                                $age = isset($_POST['age']) ? $_POST['age'] : -1;
                                echo ($age == 'petit' ? 'moins de 18 ans'
                                      : ($age == 'moyen' ? 'de 18 &agrave; 65 ans'
                                      : ($age == 'moyen' ? 'plus de 65 ans'
                                      : '' )));
                          ?></p>
<p><strong>Adresse mail</strong> : <?php echo $_POST['mail']; ?></p>
<p><strong>Recevoir notre spam</strong> : <?php
                                $spam1 = isset($_POST['mail_spam']) ? $_POST['mail_spam'] : 'non';
                                echo ($spam1 == 'oui' ? 'Oui, OK.'
                                      : 'Non. Pas d\'accord'); ?></p>
<p><strong>Recevoir le spam des nos partenaires</strong> : <?php
                                $spam2 = isset($_POST['mail_partage']) ? $_POST['mail_partage'] : 'non';
								echo ($spam2 == 'oui' ? 'Oui, OK.'
                                      : 'Non. Pas d\'accord'); ?></p>
<p><strong>Votre question</strong> : <?php echo $_POST['question']; ?></p>

<?php
  }
  else
  {
?>

<h3>Formulaire</h3>
<br>

<form name="contact" action="ex2.php" method="post">

<label>Pr&eacute;nom :</label>
<input type="text" name="prenom">
<br><br>

<label>Nom :</label>
<input type="text" name="nom">
<br><br>

<label>Je suis :</label>
<select name="hf">
  <option value="Homme">Homme</option>
  <option value="Femme">Femme</option>
</select>
<br><br>

Tranche d'age :
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label for="age_petit">moins de 18 ans</label>
<input type="radio" id="age_petit" name="age" value="petit">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label for="age_moyen">de 18 &agrave; 65 ans</label>
<input type="radio" id="age_moyen" name="age" value="moyen">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label for="age_grand">plus de 65 ans</label>
<input type="radio" id="age_grand" name="age" value="grand">
<br><br>

<label>Adresse mail :</label>
<input type="text" name="mail">
<br><br>

<input type="checkbox" id="mail_spam" name="mail_spam" value="oui">
<label for="mail_spam">Oui, j'accepte d'&ecirc;tre spamm&eacute;(e)</label>
<br><br>
<input type="checkbox" id="mail_partage" name="mail_partage" value="oui">
<label for="mail_partage">Oui, j'autorise le partage sans scrupules de
mon adresse mail avec tous vos partenaires pour qu'ils puissent me
spammer &eacute;galement</label>
<br><br>

<label>Ma question:</label><br>
<textarea rows="4" cols="80" name="question"></textarea>
<br><br><br>

<input type="submit" value="Soumettre">

</form>

<?php
  }
?>

</div>

</body>
</html>

 

Compteur de visites

Exemple :

 

ex3.php

<?php
$fichier = ("ex3.txt");
$contenu = file($fichier);
$compte = $contenu[0] + 1;
$fp = fopen($fichier , "w");
fputs($fp , (string)$compte);
fclose($fp);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Page counter</title>
    </head>
    <body>
        <h1>Lorem ipsum dolor sit amet</h1>
        <p>Aliquam dapibus eros eget justo suscipit blandit.
           Nullam non tempor nulla, in tempus ligula.</p>
        <hr>
        <p>Nombre de visiteurs : <?php echo $compte; ?></p>
    </body>
</html>

ex3.txt

0

 

Générer un nombre aléatoire

Exemple :

 

ex4.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Random</title>
        <style>
          body {
            background-color:black;
            color:lime;
          }
          .box {
            padding:0px 40px;
                     font-size:108px;
                     border:1px solid lime;
          }
        </style>
    </head>
    <body>
        <h1>Nombre aléatoire à 8 chiffres</h1>
        <span class="box">
          <?php print rand(10000000,99999999); ?>
        </span>
    </body>
</html>

 

Message d'accueil aléatoire

Exemple :

 

ex5.php

<?php
$chaines = array('In lobortis pharetra malesuada. Sed sem velit, mollis at fermentum eget, semper vel metus.',
                 'Proin luctus nisi eget nulla dapibus. Cras ac nisi lobortis sem aliquam dignissim id a metus.',
                 'Vivamus faucibus luctus arcu ac aliquet. Nulla at metus id risus bibendum ornare et vitae enim.',
                 'Morbi non nunc rhoncus, iaculis magna ac, suscipit mi. Fusce eu leo in mi fermentum.',
                 'Quisque posuere laoreet libero, ac porta magna ultrices. Duis convallis nibh a elit dignissim.',
                 'Suspendisse convallis magna vel mattis gravida. Nunc non justo eu quam mattis pretium.');
$index = rand(0,5);
$chaine = $chaines[$index];
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>PHP</title>
        <style>
          body {
            font-family:Arial, Helvetica, sans-serif;
            width:960px;
            margin:0 auto;
            padding:0;
            background-color:#f0f0f0;
          }
          #wrapper {
            background-color:white;
          }
          #header, #footer {
            background-color:#456789;
            color:#f0f0f0;
            font-size:20px;
          }
          h1.main-title {
            color:white;
            font-size:72px;
            text-align:right;
            margin:0;
            position:relative;
            top:14px;
            left:1px;
          }
          #header p {
            margin-top:0;
            padding:5px;
            letter-spacing:3px;
            color:darkorange;
          }
          #menu {
            background-color:darkorange;
            height:20px;
          }
          #main {
            padding:20px;
          }
          #footer {
            font-size:12px;
            color:#d0d0d0;
            padding:20px;
          }
        </style>
    </head>
    <body>
      <div id="wrapper">
        <div id="header">
          <p><?php echo $chaine; ?></p>
          <h1 class="main-title">Lorem ipsum dolor</h1>
        </div>
        <div id="menu">
        </div>
        <div id="main">

          <h4>Duis semper volutpat ante id dictum</h4>
          <p>Proin iaculis nisl est, nec cursus erat mollis vehicula. Cras scelerisque nulla metus, et scelerisque nisi vulputate ut. Nulla vitae sodales erat, at posuere dui. Suspendisse potenti.</p>
          <h4>Morbi enim ipsum, condimentum vitae luctus vitae</h4>
          <p>Commodo ut sem. Morbi nulla orci, tristique in ultrices sagittis, auctor a leo. Maecenas nisl felis, vehicula non dictum porta, posuere a sapien. Sed eu posuere dolor.</p>

        </div>
        <div id="footer">
          <p>Donec efficitur erat purus, et vehicula urna laoreet a. Proin luctus nisi eget nulla dapibus, eget dictum leo euismod. Integer a finibus magna. Ut quis placerat lorem, vel feugiat massa. Vestibulum ac lorem non massa tempor dignissim ac non enim. </p>
        </div>
      </div>
    </body>
</html>

 

Appeler un web-service : adresse vers coordonnées GPS

Exemple :

 

ex6.php

<?php
  $adresse = 'Studio-M, 3320 Boulevard Paul Valery, 34070, Montpellier, France';
  if (isset($_POST['adresse'])) {
    $adresse = $_POST['adresse'];
  }
  $adresse_codee = preg_replace('/\s+/', '+', $adresse);
  $jsonObject = json_decode(file_get_contents("http://maps.google.com/maps/api/geocode/json?address=" . $adresse_codee . "&sensor=false"));
  $gps_latitude = $jsonObject->results[0]->geometry->location->lat;
  $gps_longitude = $jsonObject->results[0]->geometry->location->lng;

?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>PHP</title>
    </head>
    <body>
        <h1>Coordonnées GPS via Google</h1><br>
        <p>Adresse : <?php echo $adresse; ?></p>
        <h3>GPS : <?php echo $gps_latitude . ', ' . $gps_longitude; ?></h3>
        <div style="background-color:#f0f0f0; padding:30px; margin-top:50px;">
          <p>Essayer avec une autre adresse ...</p>
          <form name="gpslookup" action="ex6.php" method="post">
            <label>Adresse : </label><input type="text" name="adresse" size="70">
            <br><br><br>
            <input type="submit" value="Soumettre">
          </form>
        </div>
    </body>
</html>

 


 

EXERCICES

 

1. Créer un site web (en HTML, CSS et PHP) identique à ce site : Cliquez ici pour ouvrir le site.

Astuce importante : cet exercice est beaucoup plus facile si on prend le code de l'exemple 5 de la leçon "PHP - Principes de Base" comme point de départ. Voici le fichier ZIP avec le code de cet exemple : Télécharger le fichier ZIP avec le code pour "PHP - Pricipes de Base - Exemple 5"

Remarquer et reproduire les caractéristiques suivantes :

  • une section bannière, suivi par une section menu, suivi par une section pour contenu principal, suivi par une section footer
  • un message aléatoire de bienvenue dans la bannière, suivi par un grand titre statique (qui ne change jamais)
  • un menu avec 3 liens pour les 3 pages du site (ce menu est disponible et identique sur chaque page du site)
  • dans la section contenu de la page "Home" : on affiche l'heure actuelle, un compteur de visites, et un code promo aléatoire
  • dans la section contenu de la page "Service GPS" : on implémente le formulaire de géolocalisation avec l'appel au web-service GPS de Google. Quand on soumet une adresse, on reste sur la  même page du site et on voit les coordonnées GPS de l'adresse fournie.
  • dans la section contenu de la page "Inscription" : on affiche un formulaire qui demande un prénom et une adresse mail. Après envoi des informations, on reste sur la même page du site et on voit un message genre récépissé.

 

 

EXERCICES - ADVANCED

 

Pour les exercices suivants, il faudrait soit chercher sur Internet des scripts à intégrer, soit piocher dans les autres leçons de ce site pour prendre des bouts de code (attention, il y aura dans ce cas éventuellement besoin d'extrapoler la logique !). Dans chaque cas, mettre le script en œuvre dans une page web (HTML/CSS/PHP).

 

2. Créer une page web avec un formulaire qui refuse la soumission (message d'erreur en rouge par exemple) si les champs obligatoires ne sont pas remplis (à vous de choisir les champs du formulaire et lesquels sont obligatoires).

3. Créer une page web avec un formulaire qui demande (entre autres) un numéro de téléphone et qui refuse la soumission si le numéro de téléphone est incompréhensible (ne comporte pas 10 chiffres).

4. Créer une page web qui génère un certain nombre de paragraphes en latin fictif, style Lorem ipsum. On peut s'inspirer de ce site : lipsum.com. Astuce : pour faire rapidement, préparer des paragraphes dans des scripts PHP à part, et utiliser l'instruction include pour les assembler - voir la leçon sur PHP principes de base.

5a. Prendre le code de l'exemple 5 de la leçon "PHP principes de base" (voici le fichier ZIP : Télécharger) et l'étendre pour offrir la possibilité à l'internaute de choisir le skin du site via des liens dans la bannière de la page. Le choix devrait se communiquer au serveur via un paramètre GET. Ainsi, quand l'internaute change de skin, ce qui est affiché est toujours le même contenu, mais ce contenu est stylé différemment via CSS. Chaque skin devrait s'implémenter via un fichier CSS à part. Les styles communs devraient se trouver dans un fichier CSS commun. Il ne doit pas y avoir de répétition de code HTML ou CSS - tout doit rester modulaire !

5b. Étendre la solution de l'exercice n°5a pour que chaque skin puisse avoir un structure différent au niveau du HTML. Ainsi, quand l'internaute change de skin, ce qui est affiché est toujours le même contenu stylé différemment, mais il peut être également structuré différemment au delà de ce qui est possible avec CSS uniquement (par exemple menu dans une colonne à gauche).