PHP et MySQL

« Dynamiser le Web »

Jeudi 17 février – Jean-Marie Favreau et Thomas Petazzoni

Pourquoi du dynamique ?

Inclure des éléments communs à plusieurs pages dans différentes pages (menus, entêtes, pieds de page ...)

Sauvegarder ou afficher des informations entrées par l'utilisateur

Réaliser une application accessible sur le Web, donc utilisable depuis n'importe quel système d'exploitation

PHP : principe

Langage de programmation

variables

boucles

fonctions

Exécuté sur le serveur Web

Le navigateur Web du client ne voit toujours que du XHTML/CSS

PHP : principe

Serveur

Serveur Web Apache

Interpréteur PHP

Fichiers PHP

Fichiers XHTML

Navigateur Web

Client

Apache et PHP : configuration

apt-get install apache

http://localhost/

http://localhost/~gulliver/

apt-get install libapache-mod-php4

/etc/apache/httpd.conf

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

/etc/apache/modules.conf

LoadModule php4_module /usr/.../libphp4.so

/etc/init.d/apache restart

Démo !

PHP : premier exemple

<?php

echo “Bonjour”;

?>

<?

echo “Bonjour”;

?>

« Short tags »

Démo !

PHP : variables

Wikipédia : « Dans un langage de programmation, une variable associe un nom à une valeur qui peut éventuellement varier au cours du temps »

$c = 12; // 'c' prend la valeur

echo $c; // 12

$c = $c + 3; // 'c' est incrémentée

echo $c; // de 3

$c = 7; // 'c' prend la valeur

echo $c; // 7

Démo !

PHP : typage

En C, C++, Java, les variables sont typées : entier, décimal, chaîne de caractère.

En PHP, Python, Perl, les variables ne sont pas typées.

int c;

c = 5;

char *str = “Toto”;

$c = 5;

$str = “Toto”;

Langage C

Langage PHP

PHP : condition

Une condition permet de tester la valeur d'une proposition : «vraie» ou «fausse».

$i = 5;

if ($i == 6)

{

echo “VRAI”;

}

else

{

echo “FAUX”;

}

$i = 6;

if ($i == 6)

{

echo “VRAI”;

}

else

{

echo “FAUX”;

}

Démo !

PHP : boucles

Portion de code accompagnée de sa structure de contrôle destinée à être exécutée plusieurs fois (la structure de contrôle relançant l'exécution du code depuis le début tant qu'une condition n'est pas remplie). Les mos-clés associés les plus classiques sont for et while.

for ($i = 0 ; $i < 5 ; $i++)

echo $i;

$i = 0;

while($i < 5) {

echo $i;

$i++;

}

Démo !

PHP : tableaux

$tab = array ( “Thomas”, “Jean-Marie”, “Claire” );

$tab = array ( “Thomas” => 21,

“Jean-Marie” => 23,

“Claire” => 20);

Déclaration d'un tableau:

Déclaration d'un tableau associatif:

Démo !

PHP : fonctions

Ensemble d'ordres (pouvant être un seul ordre) accomplissant une tâche particulière. Une fonction peut prendre des arguments, et en général, elle renvoie un résultat.

function toto($a, $b)

{

return ($a + $b);

}

echo toto(2, 3);

toto

prend 2 arguments,

retourne une valeur.

Démo !

PHP : fonctions internes

L'interpréteur PHP propose d'office de nombreuses fonctions : tableaux, chaînes de caractères, dates, bases de données ...

$str = “Pouet”;

echo srtlen($str);

echo (date("l dS of F Y h:i:s A"));

Documentation sur http://www.php.net

Démo !

PHP : exemple de page

<?php

echo “<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>”;

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

<head>

<title>Le Logiciel Libre</title>

<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />

</head>

<body>

<?php

echo “Liste des titres XHTML<br/>\n”;

for ($i = 1 ; $i <= 6 ; $i++)

echo “<h$i>Titre de niveau $i</h$i>\n”;

?>

</body>

</html>

Démo !

PHP : utilisation

Factorisation :

Entête

fonction header($title)

Menu

fonction menu($id)

Pied de page

fonction footer()

Dans un fichier include/defs.php commun à toutes les pages.

Démo !

PHP : $HTTP_GET_VARS

Variables passées dans l'URL accessibles dans le dictionnaire $HTTP_GET_VARS

http://localhost/script.php?var1=12&toto=pouet

echo $HTTP_GET_VARS['var1']; => 12

echo $HTTP_GET_VARS['toto']; => pouet

Démo !

PHP : $HTTP_POST_VARS

Variables passées par formulaire accessibles par le dictionnaire $HTTP_POST_VARS.

<form action=”a.php” method=”post”>

<input type=”text” name=”nom”/>

<input type=”submit”/>

</form>

echo $HTTP_POST_VARS['nom'];

Page avec formulaire

Page chargée après validation : a.php

Démo !

Web et base de données : principe

Serveur

Serveur Web Apache

Interpréteur PHP

Fichiers PHP

Fichiers XHTML

Navigateur Web

BDD

Requêtes

Données

Client

Structure d'un serveur de données

BDD

Base

Base

Base

Bases de données, table

Exemple de table:

Requêtes SQL

Structured query language (SQL) est un langage informatique destiné à interroger ou piloter (modifier contenu et structure) une base de données.

Insérer une ligne : INSERT

Consulter des lignes : SELECT

Modifier des lignes : UPDATE

...

MySQL : installation

apt-get install mysql-server

mysql-client

php4-mysql phpmyadmin

Éditer /etc/php4/apache/php.ini:

extension=mysql.so

mysql-server: Serveur de données

mysql-client: Client en mode texte

php4-mysql: Fonctions PHP pour MySQL

phpmyadmin: Administration web de la base

Démo !

Configuration avec phpmyadmin

Connexion avec l'utilisateur root

Modification du mot de passe

Redémarrage du serveur

Créer un utilisateur

Créer une base de données

Créer une table

Créer les champs

Insérer des données dans la table

Démo !

Connexion depuis PHP

<?php

$bdd = mysql_connect("localhost", "jm", "toto");

if($bdd == FALSE)

{

echo "Erreur de connexion à la base";

exit;

}

echo "Connexion à la base de données réussie";

?>

Fonction mysql_connect()

Démo !

Affichage des données

mysql_select_db("base", $bdd);

Sélection de la base

Requête

Utilisation des résultats

$result = mysql_query("SELECT * FROM table", $bdd);

while ($row = mysql_fetch_assoc ($result)) {

echo $row["nom"];

}

Démo !

Insertion des données

Deuxième page d'un formulaire : utilisation de mysql_query pour une requête d'insertion.

INSERT INTO table (champ1, champ2)

VALUES (“val1”, “val2”)

Démo !

Plus ...

Possibilités du langage SQL (conditions, groupements, jointures ...)

Problème de sécurité : vérification des valeurs

Possibilités en PHP : génération d'images, de PDF, utilisation de XML/XSLT, envoyer des mails ...

Développement Web dans d'autres langages : Python, Perl, Java, ASP

2004-05-01T20:10:48