Conception de Sites Web dynamiques 2023-2024

Cours 3 - Pages web avec connexion à une base de données

Programme

  • HTML Formulaires
  • PHP : récupération de données des formulaires
  • Base de données
  • Liaison PHP avec vos bases de données

Architecture Client-Serveur

Formulaires

Motivation

  • Pour l’instant, passage de paramètres via l’URL :

http://.../index.php?nom=Lisa

  • Comment passer des paramètres sans éditer l’URL ?

Solution :

  • Formulaires !

Formulaires

Exemples

Formulaires

Formulaires

Les formulaires

  • Définissent un ensemble de champs de saisie
  • Permettent de soumettre l’ensemble des valeurs des champs, en une fois, au serveur

Le serveur

  • Traite ces informations au moyen d’un script php (par exemple)
  • Génère en retour un flot HTML qui peut encore être un formulaire (ré-essai ou procédure suivante)

Formulaires

Formulaires

Formulaires

Formulaires

Formulaires

Formulaires

GET

  • Les paramètres sont visibles dans l’URL
  • Mieux pour trouver des erreurs
  • Restrictions de longueur
  • Seulement pour récupérer des données
  • Ne doit pas être utilisé pour des données sensibles (mots de passe, …)
  • Reste dans l’historique dans le navigateur
  • Peuvent être mis dans le cache
  • Peuvent être mis dans les favoris

POST

  • Les paramètres ne sont pas visibles dans l’URL(mots de passe p.ex)
  • Pas de restrictions de longueur
  • Pour des données sensibles (mots de passe, …)

Rappel PHP: Récupération de paramètres

<?php
  $nombre1 = $_GET['nombre1'];
  echo $nombre1;
?>

Rappel PHP: Récupération de paramètres : fonction isset

<?php
if (isset($_GET['nombre1']))
    $nombre1 = $_GET['nombre1'];
else
{
    $nombre1 = 1;
     // valeur par défaut
}
?>

Rappel PHP: Récupération de paramètres : fonction empty

<?php
if (!empty($_GET['nombre1']))
    $nombre1 = $_GET['nombre1'];
else
{
    $nombre1 = 1;
     // valeur par défaut
}
?>

Rappel PHP: Récupération de plusieurs paramètres

<?php
  $prenom = $_GET['prenom'];
  $nom = $_GET['nom'];
  $datenaissance = $_GET['datenaissance'];
  echo $prenom ;
  echo $nom ;
  echo $datenaissance ;
?>

Rappel PHP : Tableaux

  • Tableaux indexés
<?php
$jours = array(); 
$jours[0] = "Lundi"; 
$jours[1] = "Mardi"; 
$jours[2] = "Mercredi"; 
$jours[3] = "Jeudi"; 
$jours[4] = "Vendredi"; 
$jours[5] = "Samedi"; 
$jours[6] = "Dimanche"; 
?>

Rappel PHP : Tableaux

  • Tableaux indexés
<?php
$jours = array(); 
$jours[0] = "Lundi"; 
$jours[1] = "Mardi"; 
$jours[2] = "Mercredi"; 
$jours[3] = "Jeudi"; 
$jours[4] = "Vendredi"; 
$jours[5] = "Samedi"; 
$jours[6] = "Dimanche"; 

$nombreElements = count($jours);

for ($i=0; $i<$nombreElements; $i++)
{
    echo $jours[$i];
}

?>

Rappel PHP : Tableaux

  • Tableaux associatifs (dictionnaires)
<?php
$personne['nom'] = "Lafarge"; 
$personne['prenom'] = "Patxi"; 
$personne['codepostal'] = "33100";
?>

Rappel PHP : Tableaux

  • Tableau indexé d’un tableau associatif (dictionnaires)
<?php
$personnes = array(); 
$personnes[0]['nom'] = "Lafarge"; 
$personnes[0]['prenom'] = "Patxi"; 
$personnes[0]['codepostal'] = "33100";
$personnes[1]['nom'] = "Errecaret"; 
$personnes[1]['prenom'] = "Amaia"; 
$personnes[1]['codepostal'] = "64100";
?>

Rappel PHP : Tableaux

  • Tableau indexé d’un tableau associatif (dictionnaires)
<?php
$personnes = array(); 
$personnes[0]['nom'] = "Lafarge"; 
$personnes[0]['prenom'] = "Patxi"; 
$personnes[0]['codepostal'] = "33100";
$personnes[1]['nom'] = "Errecaret"; 
$personnes[1]['prenom'] = "Amaia"; 
$personnes[1]['codepostal'] = "64100";

$nombreElements = count($personnes);

for ($i=0; $i<$nombreElements; $i++)
{
    echo $personnes[$i]['nom'];
    echo $personnes[$i]['prenom'];
    echo $personnes[$i]['codepostal'];
}

?>

Connexion à une base de données (BDD)

Base de données - Terminologie

  • Base de données (database)
  • Table (table)
  • Enregistrement (record)
  • Champ (field)

Distinction : Structure / données

Exemple :

  • Structure : 1 base de données avec 2 tables consistant de 5 champs chacune
  • Données : 3 enregistrements par table

Architecture Client-Serveur avec connexion BDD

BDD : Tables

Exemple : Table commentaire

Conventions des noms des tables dans CSWD

  • minuscules
  • pas de caractères spéciaux
  • singulier
  • pour chaque table, renseignez quelques enregistrements

BDD : Instructions MySQL sur une table

CRUD : (create, read, update, delete)

  • INSERT : Insérer un enregistrement (*create**))

  • SELECT : Sélectionner des enregistrements (read))

  • UPDATE : Mettre à jour des champs des enregristrements (update))

  • DELETE : Effacer des enregistrements (delete))

CRUD : Read

Instruction MySQL : SELECT :

<?php
// inclure la connexion à la base de données
require_once "connexion_base.php";

$requete  = "SELECT * FROM livreor;        ";
$reponse = $pdo->prepare($requete);
$reponse->execute();

// récupérer tous les enregistrements dans un tableau
$enregistrements = $reponse->fetchAll();

// connaitre le nombre d'enregistrements
$nombreReponses = count($enregistrements);

Parcourir les éléments :

// parcourir le tableau des enregistrements
for ($i=0; $i<count($enregistrements); $i++)
{
    echo $enregistrements[$i]['nom'];
    echo $enregistrements[$i]['texte'];
    echo $enregistrements[$i]['date'];
} 
?>