1) configuration de netbeanstouchardinforeseau.servehttp.com/.../php_bd/resumeformulairephp… ·...

20
Guide de survie xhtml/PHP/mysql Si une page contient du PHP c'est une page PHP , elle ne peut donc être utilisée que via un serveur HTTP ayant le module PHP. Autrement dit, vous devez avoir une adresse dans votre barre d'URL de navigateur et non file://chemin/vers/ma/page 1) Configuration de netbeans Création d'un projet PHP : Mettre le bon chemin d'accès (dans notre cas un sous répertoire de public_html )

Upload: others

Post on 24-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

Guide de survie xhtml/PHP/mysql

Si une page contient du PHP c'est une page PHP, elle ne peut donc être utilisée que via un serveur HTTP ayant le module PHP.Autrement dit, vous devez avoir une adresse dans votre barre d'URL de navigateur et non file://chemin/vers/ma/page

1) Configuration de netbeans• Création d'un projet PHP :

• Mettre le bon chemin d'accès (dans notre cas un sous répertoire de public_html)

Page 2: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

• Mettre l'adresse du serveur à la place de localhost dans la zone "Project URL"

• Finalisation du projet (pas de framework particulier).

Page 3: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html.

Pour éviter cela lors de l'exécution de votre projet, il faut supprimer/renommer ce fichier (index.php) et modifier la partie "Run configuration" dans les propriétés des votre projet.

• Supprimer le contenu de la zone "Index File" (cela ne supprime pas le fichier, il faut le faire vous même).

Maintenant, lorsque vous cliquerez sur , votre projet sera lancé au bon endroit (sur le

serveur).

Page 4: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

2) Formulaires en xhtmlPour pouvoir faire un formulaire, il faut définir la méthode d'envois du formulaire ainsi que le scriptqui traitera les informations en provenance de ce dernier.<form action="pageQuiDoitRecupererLesInfoDuFormulaire" method="post">...</form>

Chaque élément du formulaire DOIT avoir un attribut name, car c'est sous ce nom que vous pourrezrécupérer la valeur correspondant à cet élément dans la page de traitement. Ce nom peut être considéré comme un nom de variable. Cette variable aura la valeur de l'élément.

Exemple :

Page 5: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

2.1 - Récupération des informations en provenance d'un formulaire :

Selon la méthode d'envois, les données arrivent dans les tableaux associatifs $_POST ou $_GET.L'accès aux données en provenance du formulaire se fait ainsi (si méthode post) :$_POST['nomDeLelement'] contient la valeur de l'élément dont le nom est "nomDeLelement" dans le formulaire et qui a été envoyé via la méthode "post".

Exemple :En reprenant le formulaire précédent :

Le champs nommé numDep prendra la valeur 72Le champs nommé ville prendra la valeur 2 (et pas lyons !! il prend la valeur du value de la balise option).Le champs nommé lin prendra la valeur coché (soit : ON )Le champs nommé win ne prendra pas de valeurLe champs nommé sexe prendra la valeur "nc" (prend la valeur de l'attribut value du radio bouton)traitement.php

Page 6: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

Voici la correspondance entre les données du formulaire et la récupération de ses dernières dans le script PHP.

Page 7: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

Code du script traitement.php :

On récupère dans un premier temps les valeurs des différents champs en provenance du formulaire, puis on les affiche.

Voici l'affichage produit pas traitement.php :

3) Les fonctions en PHPLes fonctions se place dans un fichier PHP ayant pour extension .inc .La syntaxe globale est la suivante :function nomDeLaFonction($param1, $param2,...){}

Il peut ne pas y avoir de paramètre.S'il y a une donnée à retourner, on ne le précise pas à la déclaration de la fonction, mais cette dernière contiendra une instruction "return" .

Page 8: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

Exemple du script précédent avec une fonction :mesfonctions.inc

traitement.php

Version avec passage du tableau $_POSTmesfonctions.inc

traitement.php

Page 9: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

4) SQLPour les exemples nous prendrons la base de données nommée franceiris et ayant les tables suivantes :

4.1 - Récupérer des informations depuis une table

SELECT nomChamps1, nomChamps2, … FROM nomDeLaTableWHERE uneConditionParticuliere ;

Exemple :Avoir la liste des communes ayant comme numéro de département 72.SELECT ville_nomFROM villes_franceWHERE ville_departement = 72;

4.2 - Récupérer des informations depuis plusieurs tables

SELECT nomChamps1, nomChamps2, … FROM nomDeLaTable1, nomDeLaTable2, ...WHERE table1.clefPrimaire = table2.clefEtrangereAND table2.clefPrimaire = table3.clefEtrangereAND uneConditionParticuliere ;Exemple :Avoir le nom du département et de la région dont le numéro de département est 72SELECT departement_nom, region_nomFROM departement, regionWHERE region.region_id = departement.departement_regionAND departement_code = 72 ;

Page 10: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

4.3 - Inserer des informations dans une table

INSERT INTO nomDeLaTable(champ1, champ2, …)VALUES(valChamp1, valChamp2, …) ;

Exemple :Ajouter un utilisateur.INSERT INTO utilisateur(nom, prenom, idVille,dateNaissance)VALUES("bidochon","robert",3489,"1950-06-26") ;

On ne s'occupe pas du champs idUtilisateur, car c'est un champ numérique auto-incrémenté par le système.

4.4 - Mettre à jour des informations dans une table

UPDATE nomDeLaTableSET nomDuChamp = nouvelleValeurDuChampWHERE clefPrimaire=valeurDeLaClef ;

Exemple :Changer le nom et le prenom de la personne ayant pour idUtilisateur 25.UPDATE utilisateur SET nom = "doe", prenom = "john" WHERE idUtilisateur =25;

Page 11: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

5) Accès et manipulation de BD via PHPIl faut définir les 4 constantes qui sont :

1. Adresse du serveur de base de données2. Nom de la base de données3. Login4. Mot de passe

Dans un fichier .inc :define ("HOTE","adresseServeur") ;define ("NOMBD","nomBaseDeDonnées") ;define ("LOGIN","loginDeLaBaseDeDonnées") ;define ("MDP","motDePasseDeLaBaseDeDonnées") ;

Exemple :fonctionAccesBd.inc<?phpdefine("HOTE", "172.17.83.15");define("LOGIN", "iris");define("MDP", "iris");define("NOMBASE", "franceiris");

Dans tous les cas, vous devez faire une fonction (à mettre dans le même .inc que vos constantes)

5.1 - Sans données externes

5.1.1 Avec la méthode query :

function nomDeVotreFonction(){ // connexion au serveur et selection de la BD try { $bdd = new PDO('mysql:host=' . HOTE . ';dbname=' . BD, LOGIN, MDP); } catch (Exception $ex) { die("PB connexion BD : " . $ex->getMessage()); } // execution de la requete $requete = $bdd->query("la requete sql à effectuer ;");

or die(print_r($requete->errorInfo())); // exploitation des resultats while ($ligne = $requete->fetch()) { // à chaque tour de boucle, $ligne est mis à jour avec

// la ligne courante contenant le resultat de la requete.// on accède aux différentes valeurs des champs via// $ligne['nomDuChamp']// nomDuChamp correspondant au(x) champs que vous avez// précisé entre le SELECT et le FROM dans votre requete SQL// s'il s'agit d'une requete de consultation

} // liberation des ressources de la requete $requete->closeCursor();}

Page 12: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

5.1.2 Avec la méthode prepare :

function nomDeVotreFonction(){ // connexion au serveur et selection de la BD try { $bdd = new PDO('mysql:host=' . HOTE . ';dbname=' . BD, LOGIN, MDP); } catch (Exception $ex) { die("PB connexion BD : " . $ex->getMessage()); } // preparation de la requete $requete = $bdd->prepare("la requete sql à effectuer ;"); // execution de la requete $requete->execute() or die(print_r($requete->errorInfo())); // exploitation des resultats while ($ligne = $requete->fetch()) { // à chaque tour de boucle, $ligne est mis à jour avec

// la ligne courante contenant le resultat de la requete.// on accède aux différentes valeurs des champs via// $ligne['nomDuChamp']// nomDuChamp correspondant au(x) champs que vous avez// précisé entre le SELECT et le FROM dans votre requete SQL// s'il s'agit d'une requete de consultation

} // liberation des ressources de la requete $requete->closeCursor();}

5.1.3 Exemple :

Afficher l'ensemble des départements et des régions sous forme de tableau HTML.fonctionAccesBd.inc<?phpdefine("HOTE", "172.17.83.15");define("LOGIN", "iris");define("MDP", "iris");define("NOMBASE", "franceiris");

Page 13: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

ou avec la méthode query :

Page 14: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

affichage.php<?php

require_once 'fonctionAccesBd.inc' ;afficheDepartementRegions() ;

Appel à la page affichage.php :

Page 15: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

5.2 - En fonction d'une ou plusieurs données externe

function nomDeVotreFonction($donne1, $donne2,...){ // connexion au serveur et selection de la BD try { $bdd = new PDO('mysql:host=' . HOTE . ';dbname=' . BD, LOGIN, MDP); } catch (Exception $ex) { die("PB connexion BD : " . $ex->getMessage()); } // preparation de la requete $requete = $bdd->prepare("la requete sql à effectuer contenant des items:itemX ;"); // association des valeurs aux items $requete->bindParam(":item1",$donne1) ; $requete->bindParam(":item2",$donne2) ;

... // execution de la requete $requete->execute() or die(print_r($requete->errorInfo())); // exploitation des resultats while ($ligne = $requete->fetch()) { // à chaque tour de boucle, $ligne est mis à jour avec

// la ligne courante contenant le resultat de la requete.// on accède aux différentes valeurs des champs via// $ligne['nomDuChamp']// nomDuChamp correspondant au(x) champs que vous avez// précisé entre le SELECT et le FROM dans votre requete SQL// s'il s'agit d'une requete de consultation

} // liberation des ressources de la requete $requete->closeCursor();}

Page 16: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

5.2.1 Exemple avec Select

Avoir le nom du département et de la région dont le numéro de département est passé en paramètre de la fonction.fonctionAccesBd.incfunction afficheRegionDepartementFromNroDept($nroDept){ // connexion au serveur et selection de la BD try { $bdd = new PDO('mysql:host=' . HOTE . ';dbname=' . BD, LOGIN, MDP); } catch (Exception $ex) { die("PB connexion BD : " . $ex->getMessage()); } // preparation de la requete $requete = $bdd->prepare("SELECT departement_nom, region_nomFROM departement, region WHERE region.region_id = departement.departement_region AND departement_code = :codeDept ;"); // association des valeurs aux items $requete->bindParam(":codeDept",$nroDept) ;

... // execution de la requete $requete->execute() or die(print_r($requete->errorInfo())); // exploitation des resultats while ($ligne = $requete->fetch()) { echo utf8_encode($ligne['departement_nom']) ; echo " - " ; echo utf8_encode($ligne['region_nom']) ; } // liberation des ressources de la requete $requete->closeCursor();}

1. Appel dans le script affiche.php<?phprequire_once 'fonctionAccesBd.inc' ;afficheRegionDepartementFromNroDept(72) ;

Page 17: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

2. Via un formulaire.

formulaireChoix.xhtml<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>exemple de formulaire</title> </head> <body> <div> <form method="post" action="traitement.php"> <label for="numDep">Numéro département</label> <input type="text" name="numDep" id="numDep" /> <input type="submit" /> </form> </div> </body> </html>

traitement.php<?phprequire_once 'fonctionAccesBd.inc' ;$nroDept = $_POST['numDep'] ;afficheRegionDepartementFromNroDept($nroDept) ;

Page 18: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

5.2.2 Exemple avec insert

fonctionAccesBd.incfunction ajouterUtilisateur($nom, $prenom,$idVille,$naissance){ // connexion au serveur et selection de la BD try { $bdd = new PDO('mysql:host=' . HOTE . ';dbname=' . BD, LOGIN, MDP); } catch (Exception $ex) { die("PB connexion BD : " . $ex->getMessage()); } // preparation de la requete $requete = $bdd->prepare("INSERT INTO utilisateur (nom,prenom,idVille,dateNaissance) VALUES (:nom, :prenom, :ville, :ddn);"); // association des valeurs aux items $requete->bindParam(":nom",$nom) ; $requete->bindParam(":prenom",$prenom) ; $requete->bindParam(":ville",$idVille) ; $requete->bindParam(":ddn",$naissance) ; ... // execution de la requete $requete->execute() or die(print_r($requete->errorInfo())); // liberation des ressources de la requete $requete->closeCursor();}

formulaireAjout.xhtml<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>exemple de formulaire</title> </head> <body> <form method="post" action="ajoutPersonne.php"> <label for="dn">Date naissance</label> <input type="text" name="dn" id="dn" /> <label for="nom">nom</label> <input type="text" name="nom" id="nom" /> <label for="prenom">prenom</label> <input type="text" name="prenom" id="prenom" /> <label for="idVille">identifiant de la ville</label> <input type="text" name="idVille" id="idVille" /> <input type="submit" /> </form> </body> </html>

ajoutPersonne.php<?phprequire_once 'fonctionAccesBd.inc' ;$dn = $_POST['dn'] ;$nom = $_POST['nom'] ;$prenom = $_POST['prenom'] ;$idv = $_POST['idVille'] ;ajouterUtilisateur($nom, $prenom,$idv,$dn) ;

Page 19: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

5.2.3 Exemple avec update

fonctionAccesBd.incfunction modifNomPrenom($idPers,$nom,$prenom){ // connexion au serveur et selection de la BD try { $bdd = new PDO('mysql:host=' . HOTE . ';dbname=' . BD, LOGIN, MDP); } catch (Exception $ex) { die("PB connexion BD : " . $ex->getMessage()); } // preparation de la requete $requete = $bdd->prepare("UPDATE utilisateur SET nom =:nom, prenom=:prenom WHERE idUtilisateur=:idp ;");

// association des valeurs aux items $requete->bindParam(":nom",$nom) ; $requete->bindParam(":prenom",$prenom) ; $requete->bindParam(":idp",$idPers) ; // execution de la requete $requete->execute() or die(print_r($requete->errorInfo())); // liberation des ressources de la requete $requete->closeCursor();}

formulaireModif.xhtml<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>exemple de formulaire</title> </head> <body> <form method="post" action="modifPersonne.php"> <label for="nom">nom</label> <input type="text" name="nom" id="nom" /> <label for="prenom">prenom</label> <input type="text" name="prenom" id="prenom" /> <label for="idVille">identifiant de la personne</label> <input type="text" name="idp" id="idp" /> <input type="submit" /> </form> </body> </html>

modifPersonne.php<?phprequire_once 'fonctionAccesBd.inc' ;$nom = $_POST['nom'] ;$prenom = $_POST['prenom'] ;$idp = $_POST['idp'] ;modifNomPrenom($idp,$nom,$prenom) ;

Page 20: 1) Configuration de netbeanstouchardinforeseau.servehttp.com/.../PHP_BD/resumeFormulairePhp… · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou

Table des matières1) Configuration de netbeans................................................................................................................12) Formulaires en xhtml.......................................................................................................................4

2.1 - Récupération des informations en provenance d'un formulaire :............................................53) Les fonctions en PHP.......................................................................................................................74) SQL..................................................................................................................................................9

4.1 - Récupérer des informations depuis une table..........................................................................94.2 - Récupérer des informations depuis plusieurs tables................................................................94.3 - Inserer des informations dans une table................................................................................104.4 - Mettre à jour des informations dans une table.......................................................................10

5) Accès et manipulation de BD via PHP...........................................................................................115.1 - Sans données externes...........................................................................................................11

5.1.1 Avec la méthode query :...................................................................................................115.1.2 Avec la méthode prepare :................................................................................................125.1.3 Exemple :.........................................................................................................................12

5.2 - En fonction d'une ou plusieurs données externe....................................................................155.2.1 Exemple avec Select........................................................................................................165.2.2 Exemple avec insert.........................................................................................................185.2.3 Exemple avec update........................................................................................................19