Formulaires HTML : traiter les entrées utilisateur Rappel : formulaire HTML Motivations : PHP permet d'écrire dynamiquement des documents HTML en relation avec une base de données, grâce notamment à des fonctions MySQL d'exécution de requêtes MySQL. Le fichier PHP est interprété puis, un document HTML est transmis à l'utilisateur coté client. Inversement, comment l'utilisateur peut-il transmettre des données au serveur distant, à l'interpréteur PHP? Formulaire HTML : Données transmises par le navigateur : Le script PHP appelé par la validation du formulaire a accès aux données des champs du formulaire HTML, au travers de tableaux associatifs, dont les clés sont les valeurs des attributs name des champs de formulaire
Formulaires HTML : traiter les entrées utilisateur Récupération des données Le tableau associatif $_POST contient toutes les données transmises après validation du formulaire coté client : La valeur de l'attribut name devient clef du tableau associatif $_POST[ ] $_POST[ ] extract( ) Fonction extract() : création de variables à partir de chaque clef du tableau associatif $_POST[ ] En général, dans un test conditionnel if, le tableau associatif existe-t-il? isset()
Formulaires HTML : traiter les entrées utilisateur Requête sur base de données En général, l'utilisateur souhaite interroger une base de données après avoir formulé des critères grâce au formulaire HTML. Par conséquent, le script PHP appelé après validation du formulaire réalise : Récupération des données saisies dans le formulaire HTML Ecriture d'une requête MySQL dans une variable PHP Exécution de la requête MySQL par la fonction mysql_query() [ après connexion au serveur MySQL et sélection de la base de données ] Affichage des résultats de la requête par une boucle while et la fonction mysql_fetch_array(), et écriture de code HTML par la commande echo Pour tester les valeurs transmises : if($_POST) { foreach($_POST as $key=>$val) { echo $key.'=>'.$val.'<br>'; }
Formulaires HTML : traiter les entrées utilisateur Envoi d'un mail Plutôt que d'exécuter une requête sur une base de données (en lecture ou écriture), les réponses au formulaire peuvent être envoyées par courriel, grâce à la fonction mail() . mail( ) 3 variables pour les 3 principaux arguments de mail() : $destinataire $sujet $message Un 4ième argument permet d'envoyer un en-tête au message, header, qui contiendra, par ex., l'adresse de l'expéditeur From: , les adresses en copie Cc: , les copies cachées Bcc: , l'adresse de retour Reply-To: , une date Date: , la déclaration d'un contenu HTML Content-type: , les types MIME des pièces jointes : $header http://www.commentcamarche.net/php/phpmail.php3
Formulaires HTML : traiter les entrées utilisateur Exemples Pratiques Représentation HTML de sélection de données MySQL (Partie 2): L'agence EdenVoyages souhaite connaître les clients ayant réservés un voyage pour le Pérou en automne. Reprendre l'exercice travaillé dans l'exemple pratique Requête MySQL et PHP, mais créez un formulaire permettant de sélectionner le code voyage. La validation du formulaire appelle le script PHP qui effectue la requête et affiche le résultat dans un tableau HTML. Schéma d'exécution : Créez un formulaire HTML avec une liste déroulante qui permettra de sélectionner les codes voyages. Après connexion au serveur MySQL et sélection de la base de données, écrivez et exécutez la requête SELECT qui permet de lire, entre autre, le champ 'codeVoyage' de la table des voyages. Ecrivez la balise HTML <option> depuis la commande PHP echo, dans une boucle while, pour chaque enregistrement retourné par votre requête SELECT. Récupérez la donnée postée par le formulaire, dans le script PHP développé précédemment. Cette donnée est à utiliser dans la clause WHERE de votre requête.
Passage de données par URL Récupération des données Il est souvent utile de passer un ou plusieurs paramètres d'une page PHP à une autre page PHP, sans avoir recours à un formulaire, contenant éventuellement des champs cachés ( type="hidden" ). $_GET[ ] extract( ) Le ? après l'URL permet de définir le nom d'un paramètre, puis d'affecter une valeur par le sigle = Le & permet de lister plusieurs paramètres. Si la valeur du paramètre passé est une variable PHP : Le script PHP appelé accède aux paramètres via la fonction $_GET[ ] : Fonction extract() : création de variables à partir de chaque clef du tableau associatif $_GET[ ] : En général, dans un test conditionnel if, le tableau associatif existe-t-il? isset() http://cyberzoide.developpez.com/php4/url/