Académique Documents
Professionnel Documents
Culture Documents
Hicham OMARA 1
Formulaires
Création d'un formulaire
Envoie/ réception des données
Transfère de fichier
Hicham OMARA 2
Formulaires
Hicham OMARA 3
Formulaires
Création d'un formulaire HTML …
Hicham OMARA 4
Formulaires
Création d'un formulaire HTML
▬ L’attribut action="nom_de_fichier.php" est obligatoire.
∎ Il désigne le fichier qui va traiter, sur le serveur, les informations saisies dans le formulaire.
∎ Si le fichier se trouve dans un autre dossier, voire sur un autre serveur, il faut utiliser une adresse absolue,
en écrivant : action= http://nomdomaine/chemin/nom_de_fichier.php.
∎ On utilise la variable $_SERVER["PHP_SELF"], qui contient le nom du fichier en cours d’exécution
comme valeur de l’attribut action; Si traitement du formulaire se trouve dans le même fichier.
▬ On peut mettre "mailto:nom@domaine.com", pour envoyer les données vers une
adresse e-mail, mais pas vers une base de données.
▬ L'attribut name = "nom_formulaire"
∎ donne un nom au formulaire.
Hicham OMARA 5
Formulaires
Création d'un formulaire HTML
Hicham OMARA 6
Formulaires
Création d'un formulaire HTML
Hicham OMARA 9
Formulaires
Création d'un formulaire HTML
Hicham OMARA 11
Formulaires
Création d'un formulaire HTML
Hicham OMARA 12
Formulaires
Création d'un formulaire HTML
Hicham OMARA 14
Formulaires
Création d'un formulaire HTML
▬ L’élément <input type = "submit" />
∎ Crée un bouton que l’utilisateur doit cliquer dessus pour déclencher l’envoi des données du formulaire
vers le serveur.
∎ L’attribut value constitue le texte visible du bouton dans le formulaire.
∎ Au moins un bouton d’envoi par formulaire.
∎ Ex : <input type ="submit" value="Envoyer" />
▬ L’élément <input type = "reset" />
∎ Crée un bouton de réinitialisation du formulaire.
› Si l’utilisateur clique sur le bouton reset, les valeurs par défauts contenues dans les attributs value qui seront affichées.
∎ L’attribut value constitue le texte visible du bouton dans le formulaire.
∎ Exemple : <input type ="reset" value="Effacer" />
Hicham OMARA 15
Formulaires
Création d'un formulaire HTML
Hicham OMARA 16
Formulaires
Création d'un formulaire HTML
Hicham OMARA 17
Formulaires
Création d'un formulaire HTML
Hicham OMARA 19
Formulaires
Récupération des données du formulaire
▬ Valeurs uniques
∎ Les valeurs provenant des champs de formulaires sont contenues sur le serveur dans des
tableaux associatifs
∎ appelés $_POST et $_GET, selon la méthode choisie.
› Les clés de ces tableaux sont les noms associés aux champs par l’attribut name.
Hicham OMARA 20
Formulaires
Récupération des données du formulaire ….
<form action= "<?= $_SERVER["PHP_SELF"] ?>" method="post">
<fieldset>
Hicham OMARA 21
Formulaires En cas d’erreur de saisie sur un seul champ, l’utilisateur
est obligé de recommencer l’ensemble de la saisie.
Maintien de l’état du formulaire
Pour éviter cela, il est utile de maintenir l’état du
… formulaire après traitement en réaffichant l’ensemble des
saisies.
Nom : <input type="text" name="nom" size="40" value="<?php if(isset($_POST["nom"]))
echo $_POST["nom"]?>"/> <br />
Debutant : <input type="radio" name="niveau" value="debutant"
<?php if(isset($_POST["niveau"]) && $_POST["niveau"]=="debutant") echo "checked=\"checked\"" ?> />
Initie : <input type="radio" name="niveau" value="initie"
<?php if(isset($_POST["niveau"]) && $_POST["niveau"]=="initie") echo "checked=\"checked\"" ?>/><br />
…
<?php
if(isset($_POST["nom"]) && isset($_POST["niveau"])){
echo "<h2> Bonjour ". stripslashes($_POST["nom"]). " vous êtes ".$_POST["niveau"]." en PHP</h2>";
}
?>
Hicham OMARA 22
Formulaires
Récupération des données du formulaire
▬ Valeurs multiples
∎ Certains champs donnent à l'utilisateur de saisir +ieurs valeurs sous un même nom de composant. Ex :
› Un groupe de cases à cocher ayant le même attribut name, dont il est possible de cocher une ou +ieurs cases simultanément.
› Une liste de sélection ayant un nom unique mais dans laquelle l’attribut multiple="multiple" est défini.
∎ Donc il s'agit d'un tableau (de type array) pas un simple scalaire.
∎ Solution : suivre le nom du composant de crochets, comme pour créer
une variable de type array.
html:<input type="checkbox" name="choix[]" value="html" />
css:<input type="checkbox" name="choix[]" value="css" />
∎ Le programmeur récupère ces valeurs dans les variables suivantes :
$_POST["choix"][0] //qui contient la valeur "html"
$_POST["choix"][1] //qui contient la valeur "css"
Hicham OMARA 23
Formulaires
Récupération des données du formulaire <form method="post" action="trait.php" >
<H3>Générateur de CV</h3>
Nom : <input type="text" name="identite[]" />
▬ Valeurs multiples Prénom : <input type="text" name="identite[]"/>
Langues <br />
∎ Ex ============ <select name="lang[]" multiple="multiple">
<option value="arabic">arabic</option>
∎ Le formulaire contient :
<option value="français">français</option>
› deux zones de saisie de texte portant le </select> <br />
même nom, Compétences<br />
PHP<input type="checkbox" name="competence[]"
› une liste de sélection avec l’attribut value="PHP" />
multiple JAVA<input type="checkbox" name="competence[]"
value="JAVA" />
› quatre cases à cocher ayant le même C#<input type="checkbox" name="competence[]"
nom. value="C#" /> <br />
…
Hicham OMARA 24
Formulaires
Récupération des données du formulaire if(isset($_POST["identite"]) && isset($_POST["lang"]) &&
isset($_POST["competence"])) {
echo "Mon CV ";
▬ Valeurs multiples $nom=$_POST["identite"][0];
$prenom=$_POST["identite"][1];
$lang = $_POST["lang"];
› Le script cible du formulaire "trait.php" $competence=$_POST["competence"];
echo"<b> $prenom ", $nom, "</b>";
récupère les données et réalise une fiche echo "<br />Langue :";
récapitulative des renseignements echo "<ul>";
foreach($lang as $val) echo "<li>$val</li>";
personnels echo "</ul>";
echo "Compétences :";
–si les variables du tableau $_POST echo "<ul>";
existent foreach($competence as $val)echo "<li>$val</li>";
}
–le cas contraire, une boîte d’alerte, (la else { echo"<script type=\"text/javascript\">";
echo "alert(Pb de saisie!');";
fonction alert() de JS), et une redirection echo "window.history.back() </script>";
vers la page de saisie, via la fonction JS }
window.history.back()
Hicham OMARA 25
Formulaires
Transfert de fichiers vers le serveur (Upload)
Hicham OMARA 26
Formulaires
Transfert de fichiers vers le serveur
Hicham OMARA 28
Formulaires
Transfert de fichiers vers le serveur
<form action="test.php" method="post" enctype="multipart/form-data" >
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<label>Fichier</label>
<input type="file" name="fich" accept="image/gif"/>
<input type="submit" value="Envoi" />
</form>
<?php
if(isset($_FILES['fich'])) { // vérification
echo "Taille maximale autorisée: ", $_POST["MAX_FILE_SIZE"], " octets";
echo "<h3>Tableau \$_FILES </h3>";
foreach($_FILES["fich"] as $cle => $valeur) echo "clé : $cle|valeur : $valeur <br/>";
// Enregistrement et renommage du fichier
$res = move_uploaded_file($_FILES["fich"]["tmp_name"],"img.gif");
if($res==TRUE) echo "Le transfert est fait!";
else echo "Erreur de transfert n°", $_FILES["fich"]["error"];
} ?>
Hicham OMARA 29
Formulaires
Transfert de plusieurs fichiers
▬ Pour un envoie de plusieurs fichiers simultanément : tout élément <input
type="file"…/> doit avoir le même nom suivi de crochets de la manière
suivante :
<input type="file" name="fichier[]" accept="image/gif" size="50"/>;
∎ l’attribut accept peut prendre des valeurs différentes pour chaque élément <input />.
∎ Lors de la récupération du formulaire, le tableau $_FILES contenant les informations sur les
fichiers transférés, devient tableau à trois dimensions.
∎ Ex, la variable : $_FILES["fich"]["name"][0] contient le nom du premier fichier transféré.
▬ La fonction move_uploaded_file() permet de renommer et sauvegarder les
fichiers transférés.
Hicham OMARA 30
Formulaires
Transfert de plusieurs fichiers
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post" echo " Fichier : $key valeur : $val <br />";
enctype="multipart/form-data" > }// Déplacement et renommage des fichiers
<input type="hidden" name="MAX_SIZE" value="10000" /> $r1=move_uploaded_file($_FILES["img"]["tmp_name"][0],"ima
Fichier 1 : <input type="file" name="img[]" ge1.gif");
accept="image/gif"/> $r2=move_uploaded_file($_FILES["img"]["tmp_name"][1],"ima
Fichier 2 : <input type="file" name="img[]" ge2.gif");
accept="image/gif"/> if($r1==true && $r2==true) echo "Transferts effectués !";
<input type="submit" value="Envoie" /> else echo "Transferts non effectués <br />";
</form> }
<?php else echo "Choisissez les fichiers à transférer";
if(!empty($_FILES)){ ?>
echo"Taille autorisée :",$_POST["MAX_SIZE"],"octets";
foreach($_FILES["fich"] as $cle => $valeur) {
echo "Clé:$cle <br />";
foreach($valeur as $key=>$val)
Hicham OMARA 31
Formulaires
Formulaire avec des boutons d’envoi multiples
<input type="submit" name="op"
Hicham OMARA 32