Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de...

15
Département INFormatique Applications php et postgresql

Transcript of Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de...

Page 1: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département

INFormatique

Applications php et postgresql

Page 2: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 2

Page 2

Plan du document

Interfacer les Bases de Données et le Web

• …

• Passerelle PHP

- Principe des passerelles PHP

- Architecture 3-tiers Web (dynamique) PHP

- Langage PHP

- PHP/postgresql

Page 3: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 3

Page 3

Principe des passerelles PHP

Version OpenSource de la technologie page active

Intégré à HTML

Dédié à la production de pages HTML dynamiques

Page active : programme s’exécutant côté serveur

Généralise et améliore les CGI

• "Mixé" avec HTML

• Valeurs des variables plus faciles à retrouver

• Exécution au sein du serveur (Apache) => pas 1 processus par appel

Suppose l’installation d’un interpréteur associé au serveur HTTP

BD/Web

Page 4: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 4

Page 4

Architecture 3-tiers Web (dynamique) PHP

Navigateur

BD

Base de

données

Requête HTTP

Fichier

correspondant

SQL

Résultat

Page HTML

dynamique

Serveur

Web

Interprète php

doc html

dynamique

Fichiers

(HTML)

Appel interprète

BD/Web

Page 5: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 5

Page 5

Plan du document

Interfacer les Bases de Données et le Web

• …

• Passerelle PHP

- Principe des passerelles PHP

- Architecture 3-tiers Web (dynamique) PHP

- Langage PHP (à lire seul)

– PHP et HTML

– Variable PHP et conditionnelle

– Itérations

– $_GET et $_POST

– Script serveur PHP - Exemple de gestion de formulaire

- PHP/postgreSQL

Page 6: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 6

Page 6

PHP et HTML

Script PHP : document HTML (par exemple), dans lequel est

incorporé du code PHP

Code PHP à l’intérieur d’une pseudo-balise <?php ... ?>

Exemple

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<html>

...

<body>

<h1>

<?php echo 2+2; ?>

</h1>

</body>

</html>

Page 7: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 7

Page 7

Variable PHP et conditionnelle

Affectation : $var=valeur

• Où valeur peut être

- un nombre entier ou réel ;

- une chaîne de caractères définie entre deux guillemets simples ( ’ ) ou

entre deux guillemets doubles ( " )

Conditionnelle

if (C) { T } else { E }

• Exemple

if ($sexe==’f’) {

echo ’Madame’;

} else {

echo ’Monsieur’;

}

Page 8: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 8

Page 8

Itérations

for (I;C;P) { B } où :

• I : affectation permettant d’initialiser la variable itérée,

• C : condition d’arrêt de la boucle,

• P est le pas de la boucle,

• B est le bloc d’instructions itéré

Exemples

for( $i=0; $i<10; $i=$i+1 ) {

echo ’Au secours!’;

}

$fact=1;

for( $i=13; $i>0; $i=$i-1 ) {

$fact = $fact*$i;

}

Page 9: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 9

Page 9

$_GET et $_POST

Paramètres HTTP peuvent être récupérés en PHP grâce au

tableaux associatifs $_GET et $_POST

<html>

<head><title>Supprimer un vin</title></head>

<body><h1>Supprimer un vin</h1>

<form action="delete.php" method="post">

<p>Identifiant du vin à supprimer :

<input name= "num" type ="text" size=4/></p>

<input value="Réinitialiser" type="reset" />

<input value="Supprimer" type="submit" />

</form>

</body>

</html>

<?php>

ouverture de la connexion

$query="DELETE FROM vins

WHERE num=".$_POST['num'].";";

echo "Requête suppression :".$query."</p>";

traitement de la requête

?>

delete.php

Page 10: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 10

Page 10

Script serveur PHP

Exemple de gestion de formulaire

<?php

echo "<h1 align=center>Premier programme PHP

d'utilisation de formulaires</h1>";

echo "<br><br><ul>";

echo "<li>Nom = ".$_POST["Nom"];

echo "<li>Pr&eacute;nom = ".$_POST["Prenom"];

echo "<li>Ville = ".$_POST["Ville"];

echo "<li>D&eacute;partement =

".$_POST["Departement"];

echo "</ul>";

?>

BD/Web

Écriture des

valeurs de

variables

Qui sont des

champs de

saisie dans

un

formulaire

Délimitation

PHP

Page 11: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 11

Page 11

Plan du document

Interfacer les Bases de Données et le Web

• …

• Passerelle PHP

- Principe des passerelles PHP

- Architecture 3-tiers Web (dynamique) PHP

- Langage PHP

- PHP/postgreSQL

Page 12: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 12

Page 12

Exemple de connexion

BD/Web

$server='157.159.110.17';

$database='NomDeLaBD';

$user='SonLogin';

$pass='SonPassword';

$chaine_cx="host=$server dbname=$database user=$user

password=$pass";

$dbconn=pg_connect($chaine_cx) or die (‘Connexion

impossible'.$chaine_cx.pg_last_error());

echo "<p>connexion etablie</p>";

Page 13: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 13

Page 13

Exemple de requête de mise à jour

Ouverture de la connexion avec $dbconn

$query= "insert into vins values (12,’Tavel’, 2001, 12.1); ";

echo "<p>Requête insertion :".$query."</p>" ;

$resultat=pg_query($dbconn,$query);

if(!$resultat){

echo pg_errormessage($dbconn);

} else {

echo "Nombre de tuples insérés : " . pg_affected_rows($resultat);

}

BD/Web

Page 14: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 14

Page 14

Exemple de requête d’interrogation

<?php

ouverture de la connexion

$query = "SELECT * FROM vins WHERE num= " .$_POST['num']. "; ";

echo "Requete select :".$query."</p>";

$resultat=pg_query($query) or die (‘Echec requête'.pg_last_error());;

if (!$resultat) {

echo "Erreur postgres :".pg_last_error()."</p>";

}else{

echo "Interrogation réussie</p>";

echo "<table border=1>" ;

echo "<tr><th>num</th><th>cru</th><th>annee</th><th>degre</th></tr>";

while ($ligne=pg_fetch_array($resultat, null, PGSQL_ASSOC)) {

echo "<tr>";

echo "<td>".$ligne[‘num']."</td>";

echo "<td>".$ligne[‘cru']."</td>";

echo "<td>".$ligne[‘annee']."</td>";

echo "<td>".$ligne[‘degre']."</td>";

echo "</tr>";

}

echo "</table>";

}

?>

BD/Web

Page 15: Introduction aux Bases de Données Relationnelles · 2013-08-26 · Introduction aux Bases de Données Relationnelles Created Date: 10/16/2012 11:18:51 AM ...

Département INFormatique 15

Page 15

Conclusion PHP-BD

Plusieurs APIs possibles

• APIs natives :

- efficaces

- mais du codage à faire pour changer de SGBD

• Interfaces abstraites :

- moins efficace,

- pas d’adaptation de code à faire,

- pas de standard pour PHP

Beaucoup de ressemblances entre les différentes approches

BD/Web