logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Leçons PHP - leçon 1 - Travail avec les formulaires

05/07/2025, by Ivan

Dans la vie courante, nous recevons des informations via la télévision, la radio, internet, ou par des échanges en direct. Les sites web reçoivent aussi des informations des utilisateurs, mais sous une forme particulière : via des formulaires. Les formulaires peuvent être comparés à des questionnaires ou des formulaires officiels à remplir pour des demandes administratives. Même si le nombre d’éléments de formulaire est limité, ils permettent de collecter toutes les informations nécessaires auprès de l’utilisateur pour le bon fonctionnement du site.

Pour que cette leçon soit plus productive, il est conseillé de lire des leçons HTML sur la création de formulaires.

Avant de commencer la première leçon, créons la structure de notre application, notamment une classe qui gèrera notre site.

Créons un dossier class dans lequel on placera le fichier simpleCMS.php contenant la classe de gestion du site. Créons également un fichier index.php qui lancera cette gestion. Enfin, créons un dossier vide messages/ pour nos messages, ainsi qu’un fichier de styles style.css. Voici l’arborescence des fichiers et dossiers :

class/simpleCMS.php

messages/

index.php

style.css

Contenu du fichier simpleCMS.php :

<?php
class simpleCMS {  // classe de gestion
  public function display_public() { // méthode d’affichage des messages
  
  }
  public function display_admin() { // méthode d’entrée de message
	
  }
  public function write($p) { // méthode d’écriture de message
  
  }  
}
?>

Pour l’instant, laissons les méthodes vides, nous y ajouterons du code plus tard.

Contenu du fichier style.css :

*{
  margin: 0;
  padding: 0;
}

body{ 
  font: 12px "Lucida Grande",  Sans-Serif;
  background: #ccc;
}

#page-wrap{ 
  width: 500px; 
  margin: 50px auto; 
  padding: 20px; 
  background: white; 
}

h1, h2, h3{ 
  font: 28px Georgia, Serif; 
  border-bottom: 1px dotted #ccc;
  margin: 0 0 10px 0; 
}

.clear{ 
  clear: both; 
}

input[type="text"], textarea{ 
  padding: 3px; 
  border: 1px solid #666; 
  width: 350px;	
  margin: 0 0 15px 0; 
}

input[type="text"]{ 
  font: 28px Georgia, Serif; 
}

textarea { 
  height: 100px; 
  font: 12px "Lucida Grande", Sans-Serif; 
}

label 	{ 
  background: #666; 
  color: white; 
  padding: 2px 6px; 
}

.post{ 
  margin: 0 0 20px 0; 
}

Contenu du fichier index.php :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apprenons PHP</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
  	<div id="page-wrap">
    <?php
    
      include_once('class/simpleCMS.php'); // inclure la classe
      $obj = new simpleCMS(); // créer un objet de gestion
  ?>
   </div>
  </body>
</html>

Voici comment cela fonctionne. À chaque chargement du site, le fichier index.php est chargé. Pour l’instant il est vide, mais nous avons inclus la classe et créé un objet. Cet objet dispose de méthodes que nous appellerons selon les besoins, déterminés par des conditions if.

Avant de continuer, intéressons-nous aux variables globales $_GET et $_POST.

Variable globale $_GET

Les formulaires HTML ont un attribut method (valeur 'get' ou 'post') qui détermine si les données sont passées dans la variable globale $_GET ou $_POST. Exemple :

<form action="welcome.php" method="get">
Nom : <input type="text" name="fname" />
Âge : <input type="text" name="age" />
<input type="submit" />
</form> 

En cliquant sur le bouton, on accède à l’URL :

http://sitename/welcome.php?fname=Peter&age=37

C’est la formation de la variable $_GET, c’est-à-dire tout ce qui suit le point d’interrogation :

<?php
print $_GET['fname'];
print $_GET['age'];
?>

$_GET est un tableau issu de l’URL. On peut ainsi transmettre des données d’une page à une autre sans utiliser un formulaire, par exemple :

http://sitename/example.php?number=45

avec ce script :

<?php
  print $_GET['number'];
?>

affichera le nombre depuis l’URL.

Variable globale $_POST

$_POST est utilisée de la même manière que $_GET pour les formulaires. Exemple similaire :

Une simple forme avec nom et message :

<form action="welcome.php" method="post">
Nom : <input type="text" name="fname" />
Âge : <input type="text" name="age" />
<input type="submit" />
</form> 

En soumettant, on arrive à :

http://sitename/welcome.php

On récupère alors :

<?php
print $_POST['fname'];
print $_POST['age'];
?>

Contrairement à $_GET, les données $_POST ne sont pas visibles dans l’URL.

Créons un formulaire d’ajout de message. L’envoi se fera en POST, la gestion du site via GET :

public function display_admin() { // méthode d’entrée de message	
  $content = '';
  $content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">'; // $_SERVER['PHP_SELF'] retourne le fichier en cours
  $content .= '<label for="title">Nom:</label><br />';
  $content .= '<input name="title" id="title" type="text" maxlength="150" />';
  $content .= '<div class="clear"></div>';
  $content .= '<label for="bodytext">Message:</label><br />';
  $content .= '<textarea name="bodytext" id="bodytext"></textarea>';	
  $content .= '<div class="clear"></div>';	
  $content .= '<input type="submit" value="Ajouter un message" />';	
  $content .= '</form>';		
  $content .= '<p><a href="/index.php">Retour à l’accueil</a></p>';    
  return $content;  
}

Modifiez la méthode display_admin() avec ce code. Ce formulaire sera affiché quand on souhaite ajouter un message. Par défaut, on affiche les messages. Convenons que le formulaire s’affiche quand l’URL contient admin=1 :

http://test/index.php?admin=1

Modifions donc index.php :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Apprenons PHP</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
  	<div id="page-wrap">
    <?php
    
      include_once('class/simpleCMS.php'); // inclure la classe
      $obj = new simpleCMS(); // créer l’objet

      if( $_GET['admin'] == 1 ){ // si variable admin dans l’URL
	    print $obj->display_admin(); // afficher le formulaire
	  }else{
	    print $obj->display_public(); // sinon afficher les messages
	  }
     
    ?>	  
	</div>
  </body>
</html>

Modifions la méthode d’affichage des messages (pour index.php sans paramètre) :

public function display_public() { // méthode d’affichage
  $content = '';
  $content .= '<p><a href="/index.php?admin=1">Ajouter un message</a></p>';
  return $content;
}

On ajoute un lien vers la page avec paramètre admin=1 pour afficher le formulaire.

Si vous avez des problèmes d’affichage de caractères, créez un fichier .htaccess (sur Windows, copiez un fichier existant et videz-le) avec :

AddDefaultCharset utf-8

Cela force le serveur à utiliser l’encodage UTF-8.

Le formulaire est prêt et envoie les données vers une autre page. Vous pouvez tester en changeant la méthode en get :

$content .=	'<form action="' . $_SERVER['PHP_SELF'] . '" method="get">';

Les paramètres passeront alors via l’URL. Nous verrons leur traitement dans la leçon suivante, lors de l’apprentissage du travail avec les fichiers pour enregistrer les données.

Прикрепленные файлы