Vous êtes sur la page 1sur 14

Bases de données et Sites Web.

Li345
Le langage PHP – 4ème partie

 Lien avec MySQL

1
Rappel d’architecture

Principe : création de documents à partir


d’une BD
MySQL : stockage, protection des données,
interface SQL
PHP:
extrait des données et les met en forme
reçoit des données et les stocke
Navigateur: fournit l’interface graphique
2
Exemple

Script de création d’une table.


CREATE TABLE FilmSimple
(titre VARCHAR (30),
annee INTEGER,
réalisateur
nomMES VARCHAR (30),
prenomMES VARCHAR (30),
anneeNaiss INTEGER
);

3
Les principales fonctions
MySQL/PHP
 mysql_pconnect (serveur, nom, passe)
tente connexion. Si OK, renvoie identifiant non nul cnx
 mysql_select_db(base, cnx)
Sélectionne une des bases du serveur, renvoie vrai si OK
 mysql_query (requete, cnx)
exécute une requête et renvoie un identifiant résultat
 mysql_fetch_object (resultat)
renvoie la ligne suivante sous forme de tableau

4
mysql_pconnect(serveur, nom, passe)

Première fonction à appeler pour accéder à


MySQL.
 Paramètres : nom du serveur, login utilisateur
et mot de passe;
 Si la connexion réussit: un identifiant de
connexion est renvoyé; sinon la fonction
renvoie 0;
 L’identifiant doit ensuite être utilisé pour tous
les appels à MySQL
 Essentiel: bien tester la valeur retournée. Si
elle vaut 0, il ya un problème.

5
mysql_select_db(base, cnx)

sert à choisir la base sur laquelle travailler


 Paramètres: nom de la base et identifiant
de connexion.
 La fonction renvoie 0 si la connexion à la
base échoue (base inexistante,
utilisateur n’a pas les droits..), un
nombre non nul sinon
connexion à MySQL en deux étapes : le serveur puis
la base.
6
Exemple de connexion
$cnx = mysql_pconnect("localhost",
"Toto", "PasswdToto");
if ($cnx == 0) {
echo "Connexion à localhost échoue";
exit;
}
if (mysql_select_db("baseToto",$cnx) == 0)
{
echo "Accès à baseToto échoue\n";
exit;
}
Mieux vaut isoler cette partie de code dans une fonction.

7
Fonction de connexion
function Connexion($nom,$pass,$base,$serveur)
{
// Connexion au serveur
$cnx= mysql_pconnect ($serveur,$nom,$passe);
if ($cnx == 0) {
echo "Connexion à $serveur impossible\n";
exit;}
// Connexion à la base
if (mysql_select_db ($base, $cnx) == 0) {
echo "Accès à $base impossible\n";
echo mysql_error($cnx);
exit;}
return $cnx;}

8
mysql_query(requete,cnx)
Exécuter une commande SQL.
 Paramètres : texte requête SQL, identifiant de
connexion.
 Le serveur exécute la requête, et renvoie un
identifiant de résultat, 0 si échec
 Note:
 la fonction mysql_error permet de récupérer le
texte du message d’erreur au besoin.
 requête peut être select, insert, update,
delete

9
mysql_fetch_object(idresultat)
Renvoie une ligne d’un résultat d’une
interrogation SQL (« curseur »)
 Paramètre : identifiant de résultat (obtenu par
mysql_query )
 Le premier appel à mysql_fetch_object:
renvoie la première ligne du résultat sous
forme d’un tableau associatif (clé=nom
attribut)
 Chaque nouvel appel renvoie la ligne suivante.
 Si la fonction renvoie 0, c’est terminé.
En principe, on boucle jusqu’à ce que mysql_fetch_object renvoie 0.
10
Exemple fixe
$resultat =
mysql_query("select * from FilmSimple", $cnx);
if ($resultat != 0) {
while($film =
mysql_fetch_object ($resultat))
{
echo "$film->titre, "
. "paru en $film->annee, "
. "réalisé par $film->nomMES.<BR>";
}
} else
echo "Erreur rencontrée:". mysql_error($cnx);

11
Exemple paramétré : formulaire
<FORM ACTION="ExMyPHP2.php" METHOD=POST>
Donnez les paramètres pour la recherche de films :
<P>
Titre : <INPUT TYPE=TEXT SIZE=20 NAME=’titre’
VALUE=’%’><BR>
<P>
Année début :
<INPUT TYPE=TEXT SIZE=4 NAME=’anMin’ VALUE=1900>
Année fin :
<INPUT TYPE=TEXT SIZE=4 NAME=’anMax’ VALUE=2100>
<P>
<INPUT TYPE=SUBMIT VALUE=’Rechercher’>
</FORM>

12
Exemple paramétré : script (1/2)
require ("Connect.php"); /*constantes de connexion
require ("Connexion.php"); /*fonction connexion
// On récupère les paramètres
$titre=$_REQUEST[’titre’];
$anMin=$_REQUEST[’anMin’];
$anMax=$_REQUEST[’anMax’]; ExMyPHP2.php
echo "Titre = $titre "
. " Année début = $anMin "
. "Année fin=$anMax<HR>";
// On crée la requête
$requete = "SELECT * FROM FilmSimple "
. "WHERE titre LIKE ’$titre’ "
. "AND annee BETWEEN $anMin and
$anMax";

13
Exemple paramétré : script (2/2)
// On se connecte
$cnx =Connexion(NOM, PASSE, BASE, SERVEUR);
// On exécute la requête
$resu = mysql_query($requete, $cnx);
while ($film = mysql_fetch_object($resu))
{
echo "$film->titre, paru en $film->annee, "
. " réalisé par $film->prenomMES "
. " $film->nomMES.<BR>\n";
}

14

Vous aimerez peut-être aussi