MySQL et CSS- P4 - Pdf 76

}
session_register(tentative);
}
Ainsi quand l’internaute atteint la fin de la troisième tentative avec une
réponse fausse à la question, un nouvel écran lui demande d’envoyer un
courriel au webmestre.
L’ouverture d’une fenêtre avec une fonction
Javascript
Le formulaire oubli.php n’a pas besoin de tout l’écran pour s’afficher,
nous allons donc créer une nouvelle fenêtre avec une fonction Javascript
que nous appellerons ouvrir_vasistas() :
<SCRIPT LANGUAGE="JavaScript">
<!--
function ouvrir_vasistas(adresse, nom_fenêtre,caracteristiques) {
window.open(adresse, nom_fenêtre,caracteristiques);
}
</SCRIPT>
Quittez la page oubli.php et dans votre page d’accueil, ajoutez le lien :
Vous êtes déjà membre et vous avez peut-être
<a href="#"
onClick="ouvrir_vasistas(’oubli.php’,’vasistas’,’menubar=no,
scrollbars=no,statusbar=no, width=300,height=200’)">
oublié votre mot de passe</A>.
L’application est alors bouclée.
4.13
Récapitulation de la syntaxe
des requêtes
Au cours de ce chapitre, l’apprentissage de la syntaxe SQL et des
fonctions MySQL a été dispensé au fur et à mesure des applications.
Récapitulons-les.
Récapitulation de la syntaxe des requêtes

ORDER BY RAND ()
4
MySQL en action
152 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Voici un certain nombre de clauses SQL qui modulent le résultat :
WHERE
Détermine les données sur lesquelles s’appliquent les commandes SQL
DELETE, SELECT, UPDATE
Syntaxe :
WHERE nom_colonne=’valeur’
Options
AND, OR, NOT
Exemple
DELETE FROM nom_table where nom_colonne1=2 OR
nom_colonne1=5
Explication
AND : les deux expressions sont vraies, OR : une expression
est vraie, NOT : une expression est fausse. Ces trois
opérateurs peuvent se combiner avec des parenthèses
Prenons par exemple :
SELECT * from membres where (pays=’HTI’ OR pays=’DMA’)
AND date_misajour BETWEEN 20020401 AND 20020430.
Les parenthèses donnent des priorités, ainsi OR est traité avant AND.
DISTINCT
Regroupe les données identiques
Syntaxe :
DISTINCT nom_colonne
Options
sans

capitale, bas de casse…)
LIMIT
Limite le résultat de la requête à un certain nombre de lignes
Syntaxe :
LIMIT nombre_de_lignes
Options
LIMIT [ligne_de_début,] nombre_de_lignes
Exemple
SELECT * FROM nom_table where nom_colonne1=2 LIMIT
2, 30
Explication
Les lignes sont numérotées à partir de 0
Voici encore quelques clauses :
Tab. 4.11 : Quelques clauses
Clause Description
AS Désigne une donnée par un alias.
LIKE Permet une recherche sur une partie de la valeur du
champ avec des caractères génériques comme % ou _.
RLIKE Permet une recherche avec des expressions
rationnelles.
4
MySQL en action
154 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
$sql="select COUNT(*) as compte, pays.nom as nation from membres,
pays where pays.code=membres.pays GROUP BY nation";
$resultat=@mysql_query($sql,$id_link);
while($rang=@mysql_fetch_array($resultat)){
$nation=$rang[’nation’];
$compte=$rang[’compte’];

Les procédures stockées
Avec sa version 5, MySQL propose l’utilisation de procédures stockées.
Ce type de fonctionnalité économise du code PHP et rend les requêtes
réutilisables. Cela crée une sorte d’interface entre la base de données et le
script. La commande est compilée sur le serveur et est alors disponible
pour des requêtes. L’application PHP appelle la procédure en lui envoyant
de nouveaux paramètres, celle-ci s’exécute en une fois et renvoie un
résultat. L’opération est plus rapide qu’une requête envoyée simplement
par une fonction PHP car la requête n’a besoin d’être analysée qu’une
seule fois. Cette version répondra à la norme SQL 2003.
4.15
SQLite
SQLite est proposée avec la version 5 de PHP. C’est une base de données
sans serveur. Elle se sert de fichiers pour stocker ses données, ce qui la
rend très rapide et très simple à mettre en place. Le fichier est verrouillé
pour toute requête pendant un accès en écriture, ce qui rend SQLite
impropre à une utilisation comportant de nombreux accès écriture.
Une des particularités de SQLite est que vous pouvez créer une base dans
la mémoire pour faire une opération pendant la durée de votre script.
$db = sqlite_open(’:memory:’);
Imaginons que vous désirez proposer les codes postaux français sur votre
site.
$commune=$_POST[’commune’];
if ($commune){
$db = sqlite_open(’codesPostaux.db’);
// cette fonction ouvre une base existante ou en crée
// une si elle n’existe pas
$sql = "SELECT commune, codepostal from liste where commune LIKE
’%$commune%’";
$resultat = sqlite_query($db, $sql );

AND collection.nom = ’e-poche’
Un autre des traits de SQLite est la possibilité d’y enregistrer des
fonctions PHP. Par exemple, vous pouvez décider, pour continuer l’exem-
ple précédent de glisser une espace dans le code postal pour mettre en
valeur le numéro de département comme par exemple 35 270
function formater_codepostal($codepostal) {
return substr_replace($codepostal, ’ ’, 2, 0);
}
sqlite_create_function($db, ’format_code’, ’ formater_codepostal’, 1);
$rangs = sqlite_array_query($db, ’SELECT format_code(’codepostal’)
from ’codePostaux.db’);
Cette présentation succincte sert d’introduction à cette base de données
qui propose avec simplicité un certain nombre de fonctionnalités très
utiles tout en ayant une capacité de 2 téraoctets. Elle est adéquate pour
tout site web moyen, c’est-à-dire la grande majorité des sites.
SQLite
Double Poche PHP & MySQL • 157
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
5
Le PHP
et l’approche
objet
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Le langage PHP, rappelez-vous, est un langage procédural, c’est-à-dire
que l’application parcourt le fichier PHP ligne à ligne, de droite à gauche,
lisant les instructions au fur et à mesure d’une manière linéaire. PHP 4 a
intégré la programmation objet d’une façon hybride, c’est-à-dire sans en
intégrer toutes les implications. En PHP 4, on peut éviter d’utiliser la
programmation objet et programmer ce que l’on veut. Si maintenant vous

m
Figure 5.2 : Langage à objets
Qu’est-ce que l’objet ?
Double Poche PHP & MySQL • 161
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
Pour créer une classe, il faut d’abord modéliser un objet, c’est-à-dire
distinguer et choisir les différentes propriétés et méthodes dont vous avez
besoin pour le générer.
Prenons l’objet deux-roues ; nous allons énumérer les différentes proprié-
tés qui le distinguent d’un autre deux-roues :
¶ la couleur ;
¶ la taille ;
¶ l’état.
Examinons la liste. La dernière propriété est de moins en moins
pertinente, nous l’enlèverons donc de notre liste.
On peut déjà créer une classe deux_roues
class deux_roues {
var $couleur;
var $taille=’adulte’;
var $etat="est arrêté";
function deux_roues ($couleur, $taille, $etat){
$this-> couleur = $couleur;
$this-> taille = $taille;
$this-> etat = $etat;
}
function affiche (){
echo "mon deux-roues ".$this->couleur." ". $this->etat. ". Il est
de taille " . $this->taille. " et de type " . $this->type. "
avec ".$this->nbreVitesses. " vitesses.";
}

Dans le cas du PHP 4, le programme crée une copie de l’objet. Cette
opération est consommatrice de ressources, ce qui ralentit l’opération. Le
second problème est que vous agissez non pas sur l’objet lui-même mais
sur sa copie.
5.2
L’héritage
Dans la catégorie, il existe plusieurs types d’objets comme vélo, moto.
Ces objets sont dérivés de l’objet deux-roues. La classe deux-roues est la
classe parente de la classe vélo, qui est une classe dérivée.
Avec le PHP 4, une classe ne peut hériter que d’une seule classe parente.
Les héritages se font avec le mot clé ’ extends ’. La classe dérivée hérite
des propriétés et des méthodes de la classe parente tout en ayant la
possibilité d’ajouter les siennes.
class velo extends deux_roues{
var $nbreVitesses=18;
var $type="VTT";
function velo ($nbreVitesses, $type){
$this-> nbreVitesses = $nbreVitesses;
$this-> type = $type;
$this-> etat = $etat;
L’héritage
Double Poche PHP & MySQL • 163
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
}
}
Pour appeler cette classe dérivée :
include("deux_roues_class.php");
include("velo_class.php");
$monvelo=new velo ();
$monvelo->etat = "roule";

var $puissance=750;
var $type="routière";
var $marque="Honda";
function velomoteur ($puissance, $type, $marque){
5
Le PHP et l’approche objet
164 • Double Poche PHP & MySQL
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
$this-> puissance = $puissance;
$this-> type = $type;
$this-> marque = $marque;
$this-> identite="ma moto ";
}
function affiche (){
echo $this->identite.$this->couleur." "
.$this->etat.". Il est de taille "
.$this->taille." et de type ".$this->type." avec "
.$this->nbreVitesses." vitesses.";
}
}
Cela va devenir plus difficile de s’y retrouver, et nous allons donc utiliser
un ersatz de surcharge avec une sorte d’interface.
5.3
Surcharger une méthode
Surcharger une méthode ou une propriété consiste, dans la programmation
objet, à donner le même nom à deux propriétés ou à deux méthodes ou
plus. Cette commodité est exploitée dans des langages typés dans la
mesure où ces différentes méthodes utilisent des données de type différent,
ou un nombre différent de paramètres, ce qui n’est pas possible en PHP 4
mais le devient en PHP 5. Pour les propriétés de même nom, il faut

$this-> puissance = $puissance;
$this-> type = $type;
$this-> marque = $marque;
$this-> identite="ma moto ";
}
function velo ($nbreVitesses, $type){
$this-> nbreVitesses = $nbreVitesses;
$this-> type = $type;
$this-> etat = $etat;
$this-> identite="mon velo ";
}}
/* ensuite vous appelez la classe vehicule pour créer un objet
véhicule avec la méthode velo().*/
$monvelo=new vehicule("18", "VTT");
Ce type de procédé rend la classe plus simple à utiliser.
5.4
Le polymorphisme
Le polymorphisme se définit comme la possibilité pour un objet de
déterminer la méthode à invoquer selon l’objet passé comme argument.
Cette action est gérée au vol, en temps réel.
Dans les exemples précédents, nous avons la classe velo et la classe
velomoteur ainsi que la classe parente deux_roues avec pour chacune la
méthode affiche() . Le polymorphisme nous évite de choisir, le
programme le fait pour nous.
$obj1=new velo(18, "VTT");
$obj2=new velomoteur (750, "trial", "Suzuki");
$deux_roues ->affiche($obj1);
$deux_roues ->affiche($obj2);
5
Le PHP et l’approche objet

function convertir_dollar_vers_euro ($prix) {
$prix=(float)$prix;
$prix*=0.8;
$prix .= $prix.’5’;
}
$phrase= ’Cet article vaut ’;
$prix=’15$’;
convertir_dollar_vers_euro ($prix);
$phrase.= $prix;
Passer un argument par référence
Double Poche PHP & MySQL • 167
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
echo $phrase; // résultat ’’Cet article vaut 15$"
/*il n’a pas été converti, c’est sa copie interne à la fonction qui a
été convertie */
convertir_dollar_vers_euro (&$prix);
echo $phrase; // résultat ’’Cet article vaut 125"
5.6
PHP 5 et l’objet
PHP 5 rejoint Java comme langage objet en s’enrichissant des fonction-
nalités d’un vrai langage objet, le rendant ainsi plus rigoureux, reproduc-
tible et plus propre.
Le pointeur
PHP 5 n’utilise plus la copie de l’argument comme PHP 4 mais se sert
d’un pointeur (handle) du type de celui utilisé pour les fichiers. Pour
continuer à utiliser les objets comme dans PHP 4, vous disposez de la
méthode induite _clone().
Les privilèges
Les privilèges d’accès aux méthodes et aux propriétés sont de trois types :
¶ private conditionne l’accès à la méthode ou à la propriété pour les


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status