Étape 2: 1er script PHP

Introduction

Maintenant que nous avons organisé les informations dont nous aurons besoin dans notre base de données SQLite, commençons à écrire notre premier script PHP.

L’objectif de ce script est de récupérer la liste chronologique de tous les créneaux du planning et de générer (dynamiquement) une page HTML. Les données seront affichées dans un tableau HTML standard.


Requête SQL “basique”

Voyons tout d’abord comment, depuis un script PHP, nous pouvons récupérer le contenu d’une table de notre base de données SQLite. Prenons pour cela une requête SQL très rudimentaire:

select * from planning order by debut;
Pour information, voici le résultat affiché dans l'interpréteur SQLite
sqlite> select * from planning order by debut;
numcreneau  debut                fin                  numcours    numsalle    numprof   
----------  -------------------  -------------------  ----------  ----------  ----------
1           2022-04-04 08:00:00  2022-04-04 09:30:00  1           1           1         
2           2022-04-04 09:30:00  2022-04-04 11:00:00  2           2           2         
3           2022-04-04 11:00:00  2022-04-04 12:30:00  3           3           3         
4           2022-04-04 13:30:00  2022-04-04 15:00:00  2           4           2         
5           2022-04-04 15:00:00  2022-04-04 18:00:00  1           5           1         
6           2022-04-04 18:00:00  2022-04-04 19:30:00  501         2           4         
7           2022-04-05 08:00:00  2022-04-05 11:00:00  5           6           5         
8           2022-04-05 11:00:00  2022-04-05 12:30:00  2           7           2         
9           2022-04-05 13:30:00  2022-04-05 15:00:00  3           8           0         
10          2022-04-05 15:00:00  2022-04-05 18:00:00  5           9           6         
11          2022-04-06 08:00:00  2022-04-06 09:30:00  3           10          0         
12          2022-04-06 09:00:00  2022-04-06 11:00:00  3           11          0         
13          2022-04-06 11:00:00  2022-04-06 12:30:00  6           12          5         
14          2022-04-06 13:30:00  2022-04-06 15:00:00  7           3           7         
15          2022-04-06 15:00:00  2022-04-06 18:00:00  2           13          2         
16          2022-04-07 08:00:00  2022-04-07 09:30:00  6           2           5         
17          2022-04-07 09:30:00  2022-04-07 11:00:00  5           12          6         
18          2022-04-07 11:00:00  2022-04-07 12:30:00  4           12          5         

Voici un exemple minimal de code PHP permettant d’exécuter cette requête SQL et d’afficher le résultat, en mode texte brut pour l’instant. Nous utilisons la technique des PDO (PHP Data Objects). Quelques informations supplémentaires ici.

<html>

  <head>
    <title>Test connexion SQLite</title>
  </head>

  <body>
    <h1>Acces à planning.db</h1>
    <code>select * from planning order by debut;</code>
    <hr>

    <?php
      $dbh = new PDO('sqlite:planning.db') or die("impossible d'ouvrir la base sqlite");
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      foreach ($dbh->query("select * from planning order by debut;") as $row) {
        echo "<li>".$row['numcreneau']." , ".$row['debut']." , ".$row['fin']." , ".$row['numcours']." , ".$row['numsalle']." , ".$row['numprof']."</li>";
      }
    ?>

    <hr>
    Fin du script...
  </body>

</html>

Vous pouvez voir ce que donne l’exécution de ce script en cliquant sur ce lien.

php_step02_index01
PHP+SQLite → texte brut


Mise en forme HTML

L’objectif de notre script n’est pas de nous afficher le résultat en texte brut, comme si nous étions sous l’interpréteur SQLite en ligne de commande. Voyons comment nous pouvons générer un tableau HTML qui sera affiché “proprement” par le moteur de rendu de votre navigateur Web.

Un tableau HTML est décrit par les balises suivantes:

  • une balise de début <table border="1">
  • des lignes (record) commençant par une balise <tr> et se terminant par une balise </tr>
  • les cellules d’une ligne de titre (header) sont délimitées par les balises <th> et </th>
  • les cellules classiques (data) sont délimitées par les balises <td> et </td>
  • une balise de fin <table>

Nous pouvons donc transformer notre code PHP précédent pour générer dynamiquement un tableau HTML:

<html>

  <head>
    <title>Test connexion SQLite</title>
  </head>

  <body>
    <h1>Acces à planning.db</h1>
    <code>select * from planning order by debut;</code>
    <hr>

    <?php
      $dbh = new PDO('sqlite:planning.db') or die("impossible d'ouvrir la base sqlite");
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      echo '<table border="1">';
      echo '<tr><th>num</th><th>début</th><th>fin</th><th>cours</th><th>salle</th><th>prof</th></tr>';
      foreach ($dbh->query("select * from planning order by debut;") as $row) {
        echo '<tr>';
        echo '<td>'.$row['numcreneau'].'</td>';
        echo '<td>'.$row['debut'].'</td>';
        echo '<td>'.$row['fin'].'</td>';
        echo '<td>'.$row['numcours'].'</td>';
        echo '<td>'.$row['numsalle'].'</td>';
        echo '<td>'.$row['numprof'].'</td>';
        echo '</tr>';
      }
      echo '</table>';
    ?>

    <hr>
    Fin du script...
  </body>

</html>

Vous pouvez voir ce que donne l’exécution de ce script en cliquant sur ce lien.

php_step02_index02
PHP+SQLite → tableau HTML


Conclusion

Maintenant que nous savons écrire un script PHP qui interroge une base de données SQLite et utilise ces données pour générer une page HTML, voyons comment “paramétrer” ce script, c’est-à-dire comment les envoyer des paramètres qu’il pourra utiliser pour “adapter” sa requête SQL.