adresse - AgroParisTech

publicité
www.agroparistech.fr
Système d’information
http://www.agroparistech.fr/Systeme-d-Information.html
Requêtes MySQL en PHP avec AgroSIXPack
Liliana IBANESCU
UFR Informatique – Département MMIP
Année 2014 – 2015
Motivation
Consultation de la BD
SELECT NOM FROM client WHERE COMPTE < 0
Requête en SQL
BD
Réponse
FRANCK
GILLET
MERCIER
Client_commande
2
Accès aux Bases de données
• Il faut connaître la structure des tables
• Il faut connaître SQL
• Risque d’erreurs / incohérence
INSERT INTO client (NOM, ADRESSE, LOCALITE, COMPTE)
VALUES ('FRANCK', '14 avenue du Reclus', 'Lille', '0')
Requête en SQL
BD
Réponse
Client_commande3
Solution
1.
Afficher le formulaire.
2.
Coté utilisateur:
•
Saisir de(s) donnée(s)
•
Envoyer
3.
Traiter les données saisies et
construire une requête SQL
INSERT INTO client (NOM, ADRESSE, LOCALITE, COMPTE)
VALUES (nom, adresse, localité, 0.00)
4.
Exécuter la requête sur la BD
4
Créer un formulaire
• Phase de conception
– Quelle information est à saisir par l’utilisateur?
– Mise en page
sur papier
• Phase de réalisation = Écrire le code pour
– afficher les composants du formulaire
– traiter les données saisies
fonctions du AgroSIXPack ou (PHP et HTML)
Voir le doc Formulaires avec AgroSIXPack.pdf
5
Construction de la requête
1.
2.
Afficher le formulaire.
Coté utilisateur:
•
Saisir de(s) donnée(s)
•
Envoyer
3.
Traiter les données saisies et
construire une requête SQL
function traiter_formulaire() {
$nom = valeur_champ('nom');
$adresse = valeur_champ('adresse');
$localite = valeur_champ('localite');
$compte = valeur_champ ('compte');
}
INSERT INTO client (NOM, ADRESSE, LOCALITE, COMPTE)
VALUES (nom, adresse, localité, compte)
4.
Exécuter la requête sur la BD
6
Construction de requêtes
function traiter_formulaire() {
// Récupération des données
$nom = valeur_champ('nom');
$adresse = valeur_champ('adresse');
$localite = valeur_champ('localite');
$compte = valeur_champ('compte');
// Utilisation des données
// Construction de la requête
!!! Syntaxe SQL
$requete = 'INSERT INTO client';
$requete .= '(NOM, ADRESSE, LOCALITE, COMPTE) VALUES (';
$requete .= chaine_en_sql($nom) . ' , ';
$requete .= chaine_en_sql($adresse) . ' , ';
$requete .= chaine_en_sql($localite) . ' , ';
$requete .= chaine_en_sql($compte) . ' )';
}
INSERT INTO client(NOM, ADRESSE, LOCALITE, COMPTE)
VALUES ( 'FRANCK' , '14 avenue du Reclus' , 'Lille' , '0.0' )
7
Chaîne en SQL
Utiliser la fonction chaine_en_sql:
pour les apostrophes
pour prévenir les injections de code SQL
// $chaine : string
// -> string
function chaine_en_sql($chaine) {
return '\'' . mysql_real_escape_string($chaine) . '\'';
}
8
Execution de la requête
traitement.php
<?php
// construction de la requête
$requete = 'INSERT INTO client';
$requete .= '(NOM, ADRESSE, LOCALITE, COMPTE) VALUES (';
$requete .= chaine_en_sql($nom) . ' , ';
$requete .= chaine_en_sql($adresse) . ' , ';
$requete .= chaine_en_sql($localite) . ' , ';
$requete .= chaine_en_sql($compte) . ' )';
?>
fermer connexion
BD
connexion
Serveur
PHP
envoie des requêtes
Serveur
MySQL
INSERT INTO client (NOM, ADRESSE, LOCALITE, COMPTE)
VALUES (nom, adresse, localité, 0.00)
9
Principe
Exécutions des requêtes SQL en PHP:
1. Établissement d’une connexion à MySQL
2. Sélection d’une base de données
3. Exécution des différentes requêtes et
traitement des réponses
4. Fermeture de la connexion
10
Outils
Exécution de requêtes en PHP:
1. Établissement d’une connexion à MySQL
mysql_connect
2. Sélection d’une base de données
mysql_select_db
3. Exécution des différentes requêtes et
traitement des réponses
4. Fermeture de la connexion
mysql_close
11
Exécution de requêtes
function traiter_formulaire() {
// 1. Ouverture de la connexion au serveur MySQL
mysql_connect(’localhost’, ’root’, ’mysql’);
// 2. Selection de la base de données
mysql_select_db(’client_commande’);
// 3.a Construction de la requête
$requete = 'INSERT INTO client';
$requete .= '(NOM, ADRESSE, LOCALITE, COMPTE) VALUES (';
$requete .= chaine_en_sql($nom) . ' , ';
$requete .= chaine_en_sql($adresse) . ' , ';
$requete .= chaine_en_sql($localite) . ' , ';
$requete .= chaine_en_sql($compte) . ' )';
// 3.b Afficher la requête à l’écran, puis l’exécuter et
// récupérer la table SQL résultat
$res = mysql_query_affiche($requete);
// 4. fermeture de la connexion à la base
mysql_close();
}
12
Afficher le résultat en PHP
function traiter_formulaire() {
// construction de la requête
$requete = 'SELECT nom, adresse FROM client';
// 3. Afficher la requête à l’écran, puis l’exécuter et
// récupérer la ressource SQL résultat
$res = mysql_query_affiche($requete);
while($ligne = mysql_ligne_suivante($res)){
printline($ligne['nom'] . ' ' );
printline($ligne['adresse']);
}
}
13
Téléchargement