1. Trang chủ
  2. » Công Nghệ Thông Tin

Pratique de MySQL et PHP- P13 potx

5 278 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Interrogation De La Table Film Simple
Trường học University of Example
Chuyên ngành Computer Science
Thể loại Bài luận
Năm xuất bản 2025
Thành phố Example City
Định dạng
Số trang 5
Dung lượng 160,31 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ici on a placé dans le fichier Connect.php les informations de base sur la connexion à MySQL : le nom du serveur, le nom de la base et le compte d’accès à la base... Pour cela, on peut t

Trang 1

<body >

<h1> I n t e r r o g a t i o n de l a t a b l e F i l m S i m p l e < / h1>

<? php

r e q u i r e ( " Connect php " ) ;

$ c o n n e x i o n = m y s q l _ p c o n n e c t (SERVEUR , NOM, PASSE ) ;

i f ( ! $ c o n n e x i o n ) {

echo " D é s o l é , c o n n e x i o n à " SERVEUR " i m p o s s i b l e \n " ;

e x i t ;

}

i f ( ! m y s q l _ s e l e c t _ d b (BASE , $ c o n n e x i o n ) ) {

echo " D é s o l é , a c c è s à l a b a s e " BASE " i m p o s s i b l e \n " ;

e x i t ;

}

$ r e s u l t a t = m y s q l _ q u e r y ( " SELECT ∗ FROM FilmSimple " , $connexion ) ;

i f ( $ r e s u l t a t ) {

w h i l e ( $ f i l m = m y s q l _ f e t c h _ o b j e c t ( $ r e s u l t a t ) ) {

echo " $ f i l m−> t i t r e , paru en $film −>annee , r é a l i s é "

" p a r $ f i l m−>p r e n o m _ r e a l i s a t e u r $film −>n o m _ r e a l i s a t e u r <

b r / >\n " ; }

}

e l s e {

echo " <b> E r r e u r d a n s l ’ e x é c u t i o n de l a r e q u ê t e < / b>< b r / > " ;

echo " <b> M e s s a g e de MySQL : < / b> " m y s q l _ e r r o r ( $ c o n n e x i o n ) ;

}

? >

</ body >

</ html >

Nous allons commenter soigneusement ce code qui est représentatif d’une bonne partie des techniques nécessaires pour accéder à une base MySQL et en extraire des informations Le script proprement dit se réduit à la partie comprise entre les balises

<?php et ?>.

Inclusion de fichiers – Constantes

La première instruction estrequire ("Connect.php");

La commande require permet d’inclure le contenu d’un fichier dans le script Certaines informations sont communes à beaucoup de scripts, et les répéter systématiquement est à la fois une perte de temps et une grosse source d’ennuis le

jour ó il faut effectuer une modification dans n versions dupliquées Ici on a placé

dans le fichier Connect.php les informations de base sur la connexion à MySQL : le nom du serveur, le nom de la base et le compte d’accès à la base

Trang 2

Exemple 1.7 exemples/Connect.php:Fichier contenant les paramètres de connexion

<? php

/ /

/ / F i c h i e r c o n t e n a n t l e s d e f i n i t i o n s d e c o n s t a n t e s

/ / p o u r l a c o n n e x i o n à MySQL

d e f i n e ( ’NOM’ , " a d m i n F i l m s " ) ;

d e f i n e ( ’ PASSE ’ , " mdpAdmin " ) ;

d e f i n e ( ’SERVEUR ’ , " l o c a l h o s t " ) ;

d e f i n e ( ’ BASE ’ , " f i l m s " ) ;

? >

La commande define permet de définir des constantes, ou symboles

correspon-dant à des valeurs qui ne peuvent être modifiées L’utilisation systématique des constantes, définies en un seul endroit (un fichier que l’on peut insérer à la demande)

garantit l’évolutivité du site Si le serveur devient par exemple magellan et le nom de

la base Movies, il suffira de faire la modification dans cet unique fichier

Accessoire-ment, l’utilisation de symboles simples permet de ne pas avoir à se souvenir de valeurs

ou de textes qui peuvent être compliqués

REMARQUE –Il est tentant de donner une extension autre que.phpaux fichiers contenant les scripts Le fichier Connect.php par exemple pourrait être nommé Connect.inc pour bien indiquer qu’il est destiné à être inclus dans d’autres scripts Attention cependant : il devient alors

possible de consulter le contenu du fichier avec l’URL http://serveur/Connect.inc L’extension incétant inconnue du programme serveur, ce dernier choisira de transmettre le contenu en clair (en-têtetext/plain) au client Cela serait très regrettable dans le cas deConnect.php, qui contient un mot de passe Un fichier d’extension.php sera, lui, toujours soumis par le programme serveur au filtre de l’interpréteur PHP et son contenu n’est jamais visible par le client web.

Il faut protéger le plus possible les fichiers contenant des mots de passe L’accès à ces fichiers devrait être explicitement réservé aux utilisateurs qui doivent les modifier (le webmestre) et

au serveur web (dans ce dernier cas, un accès en lecture suffit).

Connexion au serveur

Donc nous disposons avec ce require des symboles de constantes NOM, PASSE, BASE

et SERVEUR2, soit tous les paramètres nécessaires à la connexion à MySQL

$ c o n n e x i o n = m y s q l _ p c o n n e c t (SERVEUR , NOM, PASSE ) ;

La fonction mysql_pconnect() essaie d’établir une connexion avec le serveur

mysqld En cas de succès une valeur positive est renvoyée, qui doit ensuite être

utilisée pour dialoguer avec le serveur En cas d’échec mysql_pconnect() affiche

un message d’erreur et renvoie une valeur nulle

2 L’utilisation des majuscules pour les constantes n’est pas une obligation, mais facilite la lecture.

Trang 3

REMARQUE –Si vous voulez éviter que MySQL envoie un message en cas d’échec à la connexion, vous pouvez préfixer le nom de la fonction par « @ » C’est à vous alors de tester

si la connexion est établie et d’afficher un message selon vos propres normes de présentation Cette pratique est valable pour les autres fonctions de l’interface MySQL/PHP.

Avant de continuer, il faut vérifier que la connexion est bien établie Pour cela,

on peut tester la valeur de la variable $connexion, et, le cas échéant, afficher un message et interrompre le script avec exit

i f ( ! $ c o n n e x i o n ) {

echo " D é s o l é , c o n n e x i o n à " SERVEUR " i m p o s s i b l e \n " ;

e x i t ;

}

Avec PHP, toute valeur non nulle est considérée comme vraie, le 0 ou la chaỵne vide étant interprétés comme faux Au lieu d’effectuer un test de comparaison, on peut tester directement la valeur de la variable $connexion Le test simple if ($connexion) donne un résultat inverse de if ($connexion == 0)

En revanche, en inversant la valeur booléenne de $connexion avec l’opérateur

de négation « ! », on obtient un test équivalent, et la notation, très courante, if (!

$connexion) La condition est vérifiée si $connexion est faux, ce qui est le but recherché

Le même principe est appliqué au résultat de la fonction mysql_select_db() qui renvoie, elle aussi, une valeur positive (donc vraie) si l’accès à la base réussit D’ó le test :

if (!mysql_select_db (BASE, $connexion))

Tous ces tests sont importants Beaucoup de raisons peuvent rendre un serveur indisponible, ou un compte de connexion invalide Le fait de continuer le script, et donc d’effectuer des requêtes sans avoir de connexion, mène à des messages d’erreur assez désagréables Bien entendu l’écriture systématique de tests et de messages alourdit le code : nous verrons comment écrire ce genre de chose une (seule) fois pour toutes en utilisant des fonctions

Exécution de la requête

Le moment est enfin venu d’effectuer une requête ! On utilise la fonction mysql_query()

$resultat = mysql_query ("SELECT * FROM FilmSimple", $connexion);

Comme d’habitude, cette fonction renvoie une valeur positive si la fonction s’exécute correctement En cas de problème (erreur de syntaxe par exemple), le bloc

associé au else est exécuté Il affiche le message fourni par MySQL via la fonction

mysql_error()

echo " <b> E r r e u r d a n s l ’ e x é c u t i o n de l a r e q u ê t e < / b>< b r / > " ;

echo " <b> M e s s a g e de MySQL : < / b> " m y s q l _ e r r o r ( ) ;

Noter l’utilisation de balises HTML dans les chaỵnes de caractères, ainsi que l’utilisation de l’opérateur de concaténation de chaỵnes, « »

Trang 4

Affichage du résultat

Si la requête réussit, il ne reste plus qu’à récupérer le résultat Ici nous avons à résoudre un problème classique d’interaction entre une base de données et un langage

de programmation Le résultat est un ensemble, arbitrairement grand, de lignes dans une table, et le langage ne dispose pas de structure pratique pour représenter cet ensemble On peut penser à tout mettre dans un tableau à deux dimensions (c’est d’ailleurs possible avec PHP), mais se pose alors un problème d’occupation mémoire

si le résultat est vraiment volumineux (plusieurs mégaoctets par exemple).

La technique habituellement utilisée est de parcourir les lignes une à une avec

un curseur et d’appliquer le traitement à chaque ligne individuellement Cela évite

d’avoir à charger tout le résultat en même temps Ici, on utilise une des fonctions

fetch qui correspondent à l’implantation de cette notion de curseur dans MySQL.

$film = mysql_fetch_object ($resultat);

La fonction mysql_fetch_object() prend une ligne dans le résultat (initia-lement on commence avec la première ligne) et positionne le curseur sur la ligne suivante À chaque appel on progresse d’une étape dans le parcours du résultat Quand toutes les lignes ont été parcourues, la fonction renvoie 0

Avec cette fonction, chaque ligne est renvoyée sous la forme d’un objet, que nous

référençons avec la variable $film dans l’exemple Nous aurons l’occasion de revenir sur ce concept, pour l’instant il suffit de considérer qu’un objet est un groupe de valeurs, chacune étant identifiée par un nom

Dans notre cas ces noms sont naturellement les noms des attributs de la table

FilmSimple On accède à chaque attribut avec l’opérateur ’->’ Donc $film->titre est le titre du film, $film->annee l’année de réalisation, etc

L’opération d’affectation du résultat de mysql_fetch_object() à la variable

$film envoie elle-même une valeur, qui est 0 quand le résultat a été parcouru en totalité3 D’ó la boucle d’affichage des films :

w h i l e ( $ f i l m = m y s q l _ f e t c h _ o b j e c t ( $ r e s u l t a t ) ) {

echo " $ f i l m−>t i t r e , paru en $film −>annee , r é a l i s é "

" p a r $ f i l m−>p r e n o m _ r e a l i s a t e u r $film −>n o m _ r e a l i s a t e u r < br />\

n " ;

}

On peut remarquer, dans l’instruction echo ci-dessus, l’introduction de variables directement dans les chaỵnes de caractères Autre remarque importante : on utilise

deux commandes de retour à la ligne, <br/> et \n Elles n’ont pas du tout la même

fonction, et il est instructif de réfléchir au rơle de chacune

la balise <br/> indique au navigateur qu’un saut de ligne doit être effectué

après la présentation de chaque film ;

• le caractère \n indique qu’un saut de ligne doit être effectué dans le texte HTML, pas dans la présentation du document qu’en fait le navigateur Ce \n

3 Voir le chapitre 11 et la partie sur les expressions, page 426, pour plus d’explications.

Trang 5

n’a en fait aucun effet sur cette présentation puisque le format du texte HTML peut être quelconque En revanche, il permet de rendre ce texte, produit automatiquement, plus clair à lire si on doit y rechercher une erreur

Voici le texte HTML produit par le script, tel qu’on peut le consulter avec la

commande View source du navigateur Sans ce \n, tous les films seraient disposés sur

une seule ligne

Exemple 1.8 exemples/ResMYPHP1.html:Résultat (texte HTML) du script

< ? xml v e r s i o n = " 1 0 " e n c o d i n g = " i s o−8959−1 " ?>

< !DOCTYPE html PUBLIC "−//W3C/ / DTD XHTML 1 0 S t r i c t / / EN"

" h t t p : / / www w3 o r g / TR / xhtml1 /DTD/ xhtml1−s t r i c t dtd ">

<html xmlns= " h t t p : / / www w3 o r g / 1 9 9 9 / xhtml " xml : l a n g = " f r " >

<head>

< t i t l e >Connexion à MySQL< / t i t l e >

< l i n k r e l = ’ s t y l e s h e e t ’ h r e f = " f i l m s c s s " t y p e = " t e x t / c s s " / >

< / head>

<body>

<h1> I n t e r r o g a t i o n de l a t a b l e F i l m S i m p l e < / h1>

A lien , p a r u en 1 9 7 9 , r é a l i s é p a r R i d l e y S c o t t < b r / >

V e r t i g o , p a r u en 1 9 5 8 , r é a l i s é p a r A l f r e d H i t c h c o c k < b r / >

P s y c h o s e , p a r u en 1 9 6 0 , r é a l i s é p a r A l f r e d H i t c h c o c k < b r / >

Kagemusha , p a r u en 1 9 8 0 , r é a l i s é p a r A k i r a K u r o s a w a < b r / >

V o l t e−f a c e , paru en 1997 , r é a l i s é pa r John Woo < b r / >

T i t a n i c , p a r u en 1 9 9 7 , r é a l i s é p a r J a m e s Cameron < b r / >

S a c r i f i c e , p a r u en 1 9 8 6 , r é a l i s é p a r A n d r e i T a r k o v s k i < b r / >

< / body>

< / html>

1.4.2 Formulaires d’interrogation

Une des forces de PHP est son intégration naturelle avec les formulaires HTML Les valeurs saisies dans les champs du formulaire sont directement fournies dans le tableau $_POST ou $_GET selon le mode choisi, ainsi que dans le tableau $_REQUEST dans tous les cas L’utilisation de SQL donne des commandes plus simples et plus puissantes

Voici le formulaire d’interrogation :

Exemple 1.9 exemples/ExForm3.html:Formulaire d’interrogation

< ? xml v e r s i o n = " 1 0 " e n c o d i n g = " i s o−8959−1 " ?>

< !DOCTYPE html PUBLIC "−//W3C/ / DTD XHTML 1 0 S t r i c t / / EN"

" h t t p : / / www w3 o r g / TR / xhtml1 /DTD/ xhtml1−s t r i c t dtd ">

<html xmlns= " h t t p : / / www w3 o r g / 1 9 9 9 / xhtml " xml : l a n g = " f r " >

Ngày đăng: 06/07/2014, 00:20

TỪ KHÓA LIÊN QUAN