Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Récupérer des données d'un formulaire en PHP

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par Qwix, le 11 décembre 2006
  • Révision : Ldo le 19/02/2009

Pour récupérer des données provenant des différents champs de formulaire, il nous faut utiliser les tableaux superglobaux de PHP. En effet depuis php 4.2.0, il n'est plus possible de récupérer des données simplement en les appelant par le nom du champ html :-? On dit que l'on travaille avec l'option de configuration de PHP: register_globals à OFF.

Nous allons partir du formulaire suivant:

<html>
<head>
  <title>Récupérer des données provenant d'un formulaire, en PHP</title>
</head>
<body>
  <form name="formulaire" action="affiche-donnees.php" method="POST" enctype="multipart/form-data">
    <ul>
      <li><label for="nom">Entrez votre nom</label>
        <input type="text" id="nom" name="nom"></li>
      <li><label for="prenom">Entrez votre prenom</label>
        <input type="text" id="prenom" name="prenom"></li>
      <li>De quel sexe êtes vous ?
        <input type="radio" id="sexeH" name="sexe" value="Homme"> <label for="sexeH">Homme</label> 
        <input type="radio" id="sexeF" name="sexe" value="Femme"> <label for="sexeF">Femme</label>
      </li>
      <li><label for="pays">Entrez votre pays d'origine</label>
        <select id="pays" name="pays">
          <option value="Allemagne">Allemagne</option>
          <option value="France">France</option>
          <option value="Hollande">Hollande</option>
        </select>
      </li>
      <li><label for="fichier">Envoyez votre photo</label>
        <input type="file" id="fichier" name="fichier">
        <input type="hidden" name="taille_max" value="10000"></li>
      <li><input type="submit" value="Envoyer"></li>
    </ul>
  </form>
</body>
</html>

:!: N'oubliez pas ceci: enctype=“multipart/form-data” sinon vous ne pourrez pas récupérer toutes les données correctement et en particulier celles concernant le fichier sélectionné :!:

Récupérer les données provenant d'un champ texte: Pour récupérer des données provenant de ce type de champ, il suffit d'utiliser le tableau:

$_POST['le_nom_du_champ']

:!: Note: $HTTP_POST_VARS['Le_nom_champ'] Est une ancienne natation qu'il n'est plus conseillé d'utiliser aujourd'hui

Ainsi pour récupérer les données provenant des champs “nom” et “prenom” il faudrait faire comme ceci:

$nom    = $_POST['nom'] ;
$prenom = $_POST['prenom'] ;

On pourrait ensuite les afficher comme ceci:

echo( "Votre nom: <b>".$nom."</b><br>\n" ) ;
echo( "Votre prénom: <b>".$prenom."</b><br>\n" ) ;

Récupérer les données provenant d'un champ de fichier: Pour récupérer des données provenant de ce type de champ, il suffit d'utiliser le tableau:

$_FILES['le_nom_du_champ']

:!: Note: $HTTP_POST_FILES ['Le_nom_champ'] Est une ancienne natation qu'il n'est plus conseillé d'utiliser aujourd'hui

Ainsi pour récupérer les données provenant du champ “fichier” il faudrait faire comme ceci:

$nomFichier  = $_FILES['fichier']['name'] ;
$tailleFichier  = $_FILES['fichier']['size'] ;
$nomTmp      = $_FILES['fichier']['tmp_name'] ;
$typeFichier   = $_FILES['fichier']['type'] ;
$error           = $_FILES['fichier']['error'] ;

La variable $nomFichier permet de stocker le nom du fichier sélectionné. La variable $tailleFichier permet de stocker la taille en octets du fichier sélectionné. La variable $nomTmp permet de stocker le nom temporaire du fichier sélectionné. La variable $typeFichier permet de stocker le type MIME du fichier sélectionné. La variable $error permet de stocker l'erreur qui pourrait arriver lors du l'upload du fichier sélectionné.

On pourrait ensuite afficher les informations correspondantes comme ceci:

echo( "Voilà les données de votre image: <br>\n nom => <b>".$nomFichier.
	  "</b><br>\n taille => <b>".$tailleFichier.
	  "</b> octets<br>\n nom sur le serveur => <b>".$nomTmp.
	  "</b><br>\n type de l'image => <b>".$typeFichier.
	  "</b><br>\n code de l'erreur => <b>".$error."</b><br>") ;

:!: Note: Pour comprendre comment enregistrer le fichier sur le serveur, reportez vous au tutoriel : Uploader un fichier en HTTP sur un serveur avec PHP

Récupérer les données provenant d'un bouton radio:

$sexe = $_POST['sexe'] ;

Ainsi PHP retournera la valeur correspondante au bouton sélectionné. Il ne faut pas oublier de spécifier une valeur aux champs radio.

On pourrait afficher les informations correspondantes comme ceci:

echo( "Votre sexe: <b>".$sexe."</b><br>\n" ) ;

Récupérer les données provenant d'un champ select:

$pays = $_POST['pays'] ;

Ainsi PHP retournera la valeur correspondante à l'option sélectionnée. IL ne faut pas oublier de spécifier une valeur aux options du menu de choix.

On pourrait afficher les informations correspondantes comme ceci:

echo( "Votre pays d'origine: <b>".$pays."</b><br>\n" ) ;

Récupérer les données provenant d'un champ caché:

$tailleMax = $_POST['taille_max'] ;

La méthode est exactement la même que pour récupérer les valeurs d'un champ texte ordinaire.

On pourrait afficher les informations correspondantes comme ceci:

echo( "Taille maximale de l'image: <b>".$tailleMax."</b> octets</b>\n" ) ;

Voilà le code complet de la page affiche-donnees.php:

<?php
$nom = $_POST['nom'] ;
$prenom = $_POST['prenom'] ;
$sexe = $_POST['sexe'] ;
$pays = $_POST['pays'] ;
$tailleMax = $_POST['taille_max'] ;
 
$nomFichier    = $_FILES['fichier']['name'] ;
$tailleFichier = $_FILES['fichier']['size'] ;
$nomTmp        = $_FILES['fichier']['tmp_name'] ;
$typeFichier   = $_FILES['fichier']['type'] ;
$error         = $_FILES['fichier']['error'] ;
 
echo( "Votre nom: <b>".$nom."</b><br>\n" ) ;
echo( "Votre prénom: <b>".$prenom."</b><br>\n" ) ;
echo( "Votre sexe: <b>".$sexe."</b><br>\n" ) ;
echo( "Votre pays d'origine: <b>".$pays."</b><br>\n" ) ;
echo( "Voilà les données de votre image: <br>\n nom => <b>".$nomFichier.
	  "</b><br>\n taille => <b>".$tailleFichier.
	  "</b> octets<br>\n nom sur le serveur => <b>".$nomTmp.
	  "</b><br>\n type de l'image => <b>".$typeFichier.
	  "</b><br>\n code de l'erreur => <b>".$error."</b><br>") ;
echo( "Taille maximale de l'image: <b>".$tailleMax."</b> octets</b>\n" ) ;
?>

:)




Tutorial de Qwix