• Aucun résultat trouvé

Programmation MySQL/PHP

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation MySQL/PHP"

Copied!
19
0
0

Texte intégral

(1)

Programmation MySQL/PHP

Programmation MySQL/PHP – p.1/19

(2)

CGI et bases de données

Principe : création de documents à partir d’une BD

MySQL se charge du stockage, de la protection des données, de l’interface SQL

PHP :

extrait des données et les met en forme reçoit des données et les stocke

Le navigateur fournit l’interface graphique Architecture à trois pôles, à la sauce Web

(3)

Architecture MySQL/PHP

de données Base Fichiers

PHP requêtes

Internet

document(s) HTML requêtes

programme serveur

Serveur mysqld SQL

données (navigateur)

Site web avec scripts PHP et MySQL Client HTTP

Prog. client

Programmation MySQL/PHP – p.3/19

(4)

Notre exemple

Script de création d’une table.

# Création d’une table ’FilmSimple’

CREATE TABLE FilmSimple

(titre VARCHAR (30),

annee INTEGER,

nomMES VARCHAR (30), prenomMES VARCHAR (30), anneeNaiss INTEGER

);

(5)

Les principales fonctions MySQL/PHP

mysql_pconnect (serveur, nom, passe)

établit une connexion. Si OK, renvoie un identifiant non nul cnx

mysql_select_db(base, cnx)

se place dans une base et renvoie vrai si OK mysql_query (requete, cnx)

exécute une requête et renvoie un identifiant mysql_fetch_object (resultat)

renvoie la ligne suivante sous forme d’objet

Programmation MySQL/PHP – p.5/19

(6)

La fonction

mysql_pconnect

Première fonction à appeler pour accéder à MySQL.

On lui passe le nom du serveur, le login utilisateur et le mot de passe;

⇒ la fonction essaie de se connecter au serveur.

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 y a un problème.

(7)

La fonction

mysql_select_db

Seconde fonction: elle sert à choisir la base sur laquelle on travaille.

On lui passe le nom de la base, et l’identifiant de connexion.

Le serveur place connecte dans la base choisie, sauf si l’utilisateur n’a pas les droits.

La fonction renvoie 0 si la connexion à la base échoue, ou un nombre non nul sinon.

Noter: connexion à MySQL en deux étapes, le serveur puis la base.

Programmation MySQL/PHP – p.7/19

(8)

Exemple de connexion

$cnx = mysql_pconnect ("localhost",

"rigaux", "toto");

if ($cnx == 0) {

echo "Connexion à localhost impossible";

exit;

}

if (mysql_select_db ("mabase", $cnx) == 0) {

echo "Accès à " . BASE . " impossible\n";

exit;

}

Mieux vaut isoler cette partie de code dans une fonction.

(9)

Fonction de connexion

function Connexion ($nom, $passe,

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

}

// On renvoie la variable de connexion return $cnx;

}

Programmation MySQL/PHP – p.9/19

(10)

La fonction mysql_query

Elle permet d’exécuter n’importe quelle commande SQL.

On lui passe le texte de la commande SQL, et l’identifiant de connexion.

Le serveur exécute la commande, et renvoie un identifiant de résultat.

La fonction renvoie 0 si la commande échoue.

Noter: la fonction mysql_error permet de récupérer le texte du message d’erreur au besoin.

(11)

La fonction

mysql_fetch_object

Elle ramène une ligne d’un résultat d’une interrogation SQL. Voici le principe (dit de « curseur »).

On exécute la requête SELECT avec mysql_query. On récupère l’identifiant de résultat.

Le premier appel à mysql_fetch_object: renvoie la première ligne du résultat sous forme d’objet.

Chaque nouvel appel renvoie la ligne suivante.

Si la fonction renvoie 0, c’est terminé.

On boucle jusqu’à ce que mysql_fecth_object renvoie 0.

Programmation MySQL/PHP – p.11/19

(12)

Application ( ExMyPHP1.php )

$resultat =

mysql_query ("SELECT * FROM FilmSimple",

$connexion);

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($connexion);

(13)

En association avec un formulaire

<FORM ACTION="ExMyPHP2.php" METHOD=POST>

Ce formulaire vous permet d’indiquer des 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>

Programmation MySQL/PHP – p.13/19

(14)

Le script PHP (1)

require ("Connect.php");

require ("Connexion.php");

// On récupère les paramètres

$titre=$_REQUEST[’titre’];

$anMin=$_REQUEST[’anMin’];

$anMax=$_REQUEST[’anMax’];

echo "Titre = $titre "

. " Annné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";

(15)

Le script PHP ( ExForm2.html )

// On se connecte

$connexion =

Connexion (NOM, PASSE, BASE, SERVEUR);

// On exécute la requête

$resultat =

mysql_query ($requete, $connexion);

while ($film =

mysql_fetch_object ($resultat)) {

echo "$film->titre, paru en $film->annee, "

. " réalisé par $film->prenomMES "

. " $film->nomMES.<BR>\n";

}

Programmation MySQL/PHP – p.15/19

(16)

Mise à jour de la base

On utilise un formulaire de saisie, et on déclenche:

Un ordre INSERT pour des insertions Un ordre UPDATE pour une modification Un ordre DELETE pour une destruction

Dans tous les cas la fonction mysql_query permet d’exécuter l’ordre.

(17)

Exemple : mise à jour de FilmSimple

<FORM ACTION="ExMyPHP3.php" METHOD=POST>

Titre : <INPUT TYPE=TEXT SIZE=20 NAME="titre"><BR>

Année : <INPUT TYPE=TEXT SIZE=4 MAXLENGTH=4 NAME="annee" VALUE="2000">

<P>

Nom : <INPUT TYPE=TEXT SIZE=20 NAME="prenom"><BR>

Prénom : <INPUT TYPE=TEXT SIZE=20 NAME="nom"><BR>

<H1>Votre choix</H1>

<INPUT TYPE=SUBMIT VALUE=’Insérer’

NAME=’inserer’ >

<INPUT TYPE=SUBMIT VALUE=’Modifier’

NAME=’modifier’ >

<INPUT TYPE=SUBMIT VALUE=’Détruire’

NAME=’detruire’ >

</FORM>

Programmation MySQL/PHP – p.17/19

(18)

Le script PHP (1)

<?php

require ("Connect.php");

// Test du type de mise à jour effectuée if (isset($inserer))

echo "Insertion du film $titre";

elseif (isset($modifier))

echo "Modification du film $titre";

elseif (isset($detruire))

echo "Destruction du film $titre";

(19)

Le script PHP ( ExForm3.html )

if (isset($inserer))

$requete =

"INSERT INTO FilmSimple (titre, annee, "

. "prenomMES, nomMES, anneeNaiss) "

. "VALUES (’$titre’, $annee, "

. "’$nom’, ’$prenom’, $anneeNaiss) ";

if (isset($modifier))

$requete =

"UPDATE FilmSimple SET annee=$annee, "

. "prenomMES = ’$prenom’, nomMES=’$nom’, "

. "anneeNaiss=$anneeNaiss WHERE titre = ’$titre’

if (isset($detruire))

$requete = "DELETE FROM FilmSimple "

. "WHERE titre=’$titre’";

$resultat = mysql_query ($requete, $connexion);

Programmation MySQL/PHP – p.19/19

Références

Documents relatifs

On souhaite faire l’affichage d’un tableau

Gestionnaires et informaticiens intéressés dans la création et le développement de pages Web dynamiques interfacées avec une base de données.. PRE-REQUIS Maîtrise du HTML

Cette formation PHH Objet vous permettra de maîtriser d'une manière opérationnelle le langage PHP dans le contexte d'un développement objet.. Il vous permettra aussi d'aborder

Partant d'entretiens semi-directifs réalisés avec des éducateurs et éducatrices, cet article questionne l'usage de la force physique par le personnel éducatif

Les articles portant sur le changement climatique et la résilience des réseaux routiers, la gestion des catastrophes, l’exploitation des réseaux routiers, les chaussées, les

Pour contribuer au renforcement des capacités des pays africains vis-à-vis de l’intégration de l’approche du nexus dans leurs politiques, programmes, stratégies et plans, le

Et c’est de cette fraternité dont nous avons à être et à devenir témoins, avec le Christ, en Lui et par Lui… D’une fraternité reçue à une fraternité vécue au sein

– pour les employeurs, des directeurs d’entreprises ou des organisations représentant les employeurs au niveau régional, national, européen, sectoriel ou intersectoriel. Dans le