18
Guide de survie html/PHP/mysql Table des matières 1) Configuration de netbeans................................................................................................................2 2) Formulaires en html......................................................................................................................... 5 2.1 - Récupération des informations en provenance d'un formulaire :............................................ 6 3) Les fonctions en PHP....................................................................................................................... 8 4) SQL................................................................................................................................................ 10 4.1 - Récupérer des informations depuis une table........................................................................10 4.2 - Récupérer des informations depuis plusieurs tables..............................................................10 4.3 - Inserer des informations dans une table................................................................................ 11 4.4 - Mettre à jour des informations dans une table.......................................................................11 5) Accès et manipulation de BD via PHP...........................................................................................12 5.1 - Sans données externes........................................................................................................... 12 5.1.1 Avec la méthode query :................................................................................................... 12 5.1.2 Exemple :......................................................................................................................... 13 5.2 - En fonction d'une ou plusieurs données externes.................................................................. 14 5.2.1 Exemple avec Select........................................................................................................ 15 5.2.2 Exemple avec insert......................................................................................................... 17 5.2.3 Exemple avec update........................................................................................................18 PHP/BD 1/18

Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

Guide de survie html/PHP/mysql

Table des matières1) Configuration de netbeans................................................................................................................22) Formulaires en html.........................................................................................................................5

2.1 - Récupération des informations en provenance d'un formulaire :............................................63) Les fonctions en PHP.......................................................................................................................84) SQL................................................................................................................................................10

4.1 - Récupérer des informations depuis une table........................................................................104.2 - Récupérer des informations depuis plusieurs tables..............................................................104.3 - Inserer des informations dans une table................................................................................114.4 - Mettre à jour des informations dans une table.......................................................................11

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

5.1.1 Avec la méthode query :...................................................................................................125.1.2 Exemple :.........................................................................................................................13

5.2 - En fonction d'une ou plusieurs données externes..................................................................145.2.1 Exemple avec Select........................................................................................................155.2.2 Exemple avec insert.........................................................................................................175.2.3 Exemple avec update........................................................................................................18

PHP/BD 1/18

Page 2: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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)

PHP/BD 2/18

Page 3: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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

• Finalisation du projet (pas de framework particulier).

PHP/BD 3/18

Page 4: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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).

PHP/BD 4/18

Page 5: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

2) Formulaires en htmlPour 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 :

PHP/BD 5/18

Page 6: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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

PHP/BD 6/18

Page 7: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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

PHP/BD 7/18

Page 8: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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" .

PHP/BD 8/18

Page 9: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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

traitement.php

Version avec passage du tableau $_POSTmesfonctions.inc

traitement.php

PHP/BD 9/18

Page 10: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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 ;

PHP/BD 10/18

Page 11: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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;

PHP/BD 11/18

Page 12: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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.18.58.15");define("LOGIN", "iris");define("MDP", "iris");define("BD", "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();}

PHP/BD 12/18

Page 13: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

5.1.2 Exemple :

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

Avec la méthode query :

affichage.php<?php

require_once 'fonctionAccesBd.inc' ;afficheDepartementRegions() ;

Appel à la page affichage.php :

PHP/BD 13/18

Page 14: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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

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",$donnee1) ; $requete->bindParam(":item2",$donnee2) ;

... // 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();}

PHP/BD 14/18

Page 15: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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) ;

PHP/BD 15/18

Page 16: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

2. Via un formulaire.

formulaireChoix.html <html> <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) ;

PHP/BD 16/18

Page 17: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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.html<html> <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) ;

PHP/BD 17/18

Page 18: Guide de survie html/PHP/mysqltouchardinforeseau.servehttp.com/siteweb20152016/... · Attention, par défaut, le serveur chargera toujours la page nommée index.php ou index.html

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.html<html> <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) ;

PHP/BD 18/18