Vous êtes sur la page 1sur 56

NTRODUCTION AUX SYSTÈMES D'INFORMATION,

RÉALISATION AVEC PHP ET MYSQL

Objectifs
• Comprendre la structure d'un système d'information sur le Web
• Connaître les bases de la programmation avec PHP et MySQL

Compléments nécessaires
• Un éditeur pour PHP et XHTML (HTML-Kit, Notepad++, etc.)
• Un serveur d'hébergement (ou EasyPHP sous Windows, MAMP sur Mac)
• Fichiers d'exemples disponibles sur le site de l'auteur *

Niveau de compétences en pré-requis


• Savoir-faire en écriture de pages et formulaires (documents sur le site *)
• Connaissance des principes des bases de données et des bases de SQL

Ce document d'enseignement est diffusé librement, pour usage individuel.


Il est librement téléchargeable sur le site de l'auteur *.

Michel Cartereau - Janvier 2011

AgroParisTech - UFR d'informatique - 16, rue Claude Bernard - F 75231 PARIS CEDEX 05
michel.cartereau à agroparistech.fr - Téléphone : +33 1 44 08 16 80
* http://www.agroparistech.fr/mmip/mc/
INTRODUCTION À PHP

Principe du script dans la page, du côté du serveur

Mélange de code PHP avec du code XHTML

Traitement des données issues d'un formulaire

Manipulations de dates

Tests

Fonctions

Tableaux

Itérations

Système d'information avec PHP et MySQL - Page 2


CAS D'ACCÈS À UNE BASE DE DONNÉES

programme
sur serveur
INSCRITS

ETAT • TARZAN,
• ZORRO,
• POPEYE
inscrits

page avec les


résultats incrustés

 RÉALISATION

 INSERTION DE SCRIPTS DANS UNE PAGE GÉNÉRIQUE


utilisation de langages spécialisés (PHP, ASP, ...)
 SCRIPTS EXÉCUTÉS SUR LE SERVEUR AVANT L'ENVOI AU NAVIGATEUR
le texte des scripts n'apparaît pas sur le poste de consultation

Système d'information avec PHP et MySQL - Page 3


EXEMPLE N°1 : IDENTIFICATION
IDENTIFICATION DU NAVIGATEUR, ET DU POSTE DE CONSULTATION

 OBJECTIF

Page avec les identifications incrustées

 PRINCIPE

1) Insertion de scripts pour chacun des textes d'identification


exécution du côté du serveur où doit résider la page 1
2) Utilisation de variables 2 d'information sur le navigateur et le poste
identification du navigateur : $_SERVER["HTTP_USER_AGENT"]
adresse en IP du poste : $_SERVER["REMOTE_ADDR"]
$ip = $_SERVER["REMOTE_ADDR"];
3) Détermination de l'adresse en clair du poste
fonction gethostbyaddr() à partir de l'adresse IP du poste,
renvoie un nom si existant ou sinon l'adresse IP
$nom = gethostbyaddr($ip);
4) Production de texte par le script en PHP pour affichage en XHTML
instruction echo ...;

ATTENTION !
LA PAGE DOIT RÉSIDER SUR UN SERVEUR D'HÉBERGEMENT EXÉCUTANT PHP
ET DE PLUS LE NOM DE SON FICHIER DOIT PORTER LE SUFFIXE « .php »

1 Accès à la page via un serveur d'hébergement sur le Web (avec PHP), ou installé sur son poste (cas
de easyPHP présenté à la fin du document).
2 En PHP, un nom de variable débute par le symbole « $ »

Système d'information avec PHP et MySQL - Page 4


SCRIPTS EN PHP D'IDENTIFICATION
INSERTION DE PETITS SCRIPTS DANS LE CODE EN XHTML

Utilisation d'une balise spécifique à PHP : <?php ?> 1

<p>Navigateur : <strong>
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
</strong></p>
<p>sur le poste : <strong>
<?php
// adresse IP et nom du poste
$ip = $_SERVER["REMOTE_ADDR"];
$nom = gethostbyaddr($ip);
echo "adresse IP ' . $ip . " (" . $nom . ")';
?>
</strong></p>

Texte du script placé au sein de la balise <?php ?>


Instructions terminées par un point-virgule : ;
Noms de variables préfixées par un dollar : $
Chaînes de texte notées entre guillemets 2 : " "
Collage de morceaux de texte (concaténation) : .
Affichage à l'aide de l'instruction echo
Texte de commentaire après // ou entre /* et */

ATTENTION ! SUFFIXE « .php » AU NOM DU FICHIER DE LA PAGE


EXEMPLE : identite.php

1 Une ancienne variante consistait à utiliser la balise <script> avec l'attribut language de
HTML 3.2, soit : <script language="php"></script> car certains serveurs ne
reconnaissaient pas la balise <?php>; cela est désormais déconseillé.
2 Une chaîne de texte peut aussi être notée entre apostrophes (« ' ») ; voir plus loin.

Système d'information avec PHP et MySQL - Page 5


AJOUT D'UN SCRIPT EN PHP AVEC HTMLKIT
CAS DE LA VERSION 1.0 "BUILD 292" DE HTML-KIT 1

 MISE EN PLACE

1) Positionner le curseur à l'endroit de l'insertion


2) Commande ACTIONS DOCUMENT PHP CODE BLOCK PHP CODE BLOCK

ou sur la barre d'outils ACTIONS BAR

3) Taper le code à l'intérieur de la balise

 BARRE SPÉCIALISÉE DES FONCTIONS DE PHP

MODULE D'EXTENSION HKPHP


si barre invisible, commande VIEW ACTIONS BAR

AUTRES ÉDITEURS GRATUITS : NOTEPAD++ 2, BLUEFISH 3

1 Outil gratuit pour usage personnel sous Windows, http://www.chami.com/html-kit/ ou dans la boîte à
outils de Gaia à AgroParisTech : https://gaia.agroparistech.fr/
2 Notepad++, logiciel libre pour Windows (et version portable), http://notepad-plus-plus.org/ ou dans la
boîte à outils de Gaia à AgroParisTech : https://gaia.agroparistech.fr/
3 Bluefish, logiciel libre pour Windows, Mac OS X ou Linux, http://bluefish.openoffice.nl/ ou dans la
boîte à outils de Gaia à AgroParisTech : https://gaia.agroparistech.fr/

Système d'information avec PHP et MySQL - Page 6


ADAPTATIONS DE HTMLKIT POUR PHP
CAS DE LA VERSION 1.0 "BUILD 292" DE HTML-KIT 1

 AIDE AVEC LA DOCUMENTATION EN FRANÇAIS


Documentation en français (php_manual_fr.chm 2)
à installer via la commande OUTILS INSTALLER INSTALLER AIDE
Module d'extension HKPHPCodeRef 3 avec un accès par mot-clef à la
documentation, via la commande ACTIONS HELP HKPHPCODEREF

Réglages via PRÉFÉRENCES :


choix de la version française
du manuel installé en local

 EXÉCUTION DU CODE PHP DANS L'APERÇU


Indication du logiciel
PHP installé 4 via le
réglage :
EDITION
PRÉFÉRENCES
ACTIONS
PHP INTERPRETER

Attention ! exécution incomplète (pas de données du côté du serveur)


(utile pour vérifier rapidement la syntaxe du script)

1 Outil gratuit pour usage personnel sous Windows, disponible en http://www.chami.com/html-kit/ ou


dans la boîte à outils de Gaia à AgroParisTech : https://gaia.agroparistech.fr/
2 Dernière version de la documention de référence de PHP en : http://www.php.net/download-docs.php
3 Module gratuit dédié à PHP, à installer par la commande TOOLS INSTALL PLUGIN dans Html-Kit :
http://www.chami.com/html-kit/plugins/
4 Cas d'installation d'EasyPHP sous Windows ; en cas de message d'erreur relatif à une extension
(fichier de suffixe « .dll »), recopier le fichier signalé dans le dossier php à partir de son sous-
dossier extensions
Système d'information avec PHP et MySQL - Page 7
DE PHP À XHTML
COMMENT S'IMBRIQUENT LES DEUX LANGAGES ?

 EXEMPLE PHP-HTML

1) CODE ORIGINEL ÉCRIT EN PHP


echo "<p>adresse IP <strong>" . $ip . "</strong></p>\n";
2) CODE XHTML SUR UNE LIGNE PRODUIT PAR PHP
<p>adresse IP <strong>193.54.111.114</strong></p>
remplacement de la variable $ip par sa valeur 193.54.111.114
et, à la fin de la ligne, passage à la la ligne suivante (\n 1)
3) TEXTE AFFICHÉ PAR LE NAVIGATEUR DANS UN PARAGRAPHE
adresse IP 193.54.111.114
paragraphe (<p>) et mise en gras partielle (<strong>)

 MÉCANISMES DE PHP POUR DU SCRIPT DANS UNE PAGE WEB

 PHP PRODUIT DU CODE XHTML


l'affichage réalisé par l'instruction echo est du code en XHTML

 AFFICHAGE DE LA VALEUR D'UNE VARIABLE AVEC echo


le nom de la variable y figure directement : echo $nom;
éventuellement collé 2 à une chaîne : echo "Nom : " . $nom;

 EXEMPLES
echo "\n"; // passage a la ligne suivante

echo '\n'; // affichage de \n

echo "<strong>" . $ip . "</strong>"; // equivalent a ci-dessous

echo '<strong>' . $ip . '</strong>'; // equivalent a ci-dessus

1 Attention ! ne fonctionne que si noté entre guillemets (« " ») et non pas d'apostrophes (« ' »)
2 Le collage de chaînes (ou « concaténation ») se note à l'aide d'un point (« . »)
Système d'information avec PHP et MySQL - Page 8
EXEMPLE N° 2 : DESTINATAIRE DE FORMULAIRE
CRÉATION D'UNE PAGE EN PHP POUR AFFICHER LES DONNÉES
TRANSMISES À PARTIR D'UN FORMULAIRE

 PRINCIPE

1) Données envoyées, associées aux noms de zones du formulaire 1


notation : $_GET["nom de la zone"]
exemple : $_GET["znom"]

2) Vérification de l'existence de valeur pour une variable


fonction isset(variable) indique l'existence d'une valeur,
renvoie vrai (true) si la valeur existe, faux (false) sinon
exemple : if ( isset( $_GET["znom"] ) ) { ... }

3) Corrections par passage d'un texte en lettres majuscules


fonction strtoupper(variable) renvoie le texte en majuscules
exemple : strtoupper( $_GET["znom"] )

1 Ici, le formulaire est construit en XHTML avec la méthode d'envoi "get" (<form method="get" ...>)
Système d'information avec PHP et MySQL - Page 9
SCRIPT DU DESTINATAIRE DE FORMULAIRE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<title>Nouveau produit</title>
</head>

<body>
<h1>Nouveau produit</h1>
<hr />

<?php
// affichage suite a saisie d'un nouveau produit,
// donnees issues du formulaire : znom ztype zprix

// initialisation : valeur si pas de donnee dans le formulaire


$nom = "";
$type = "";
$prix = "";

// recuperation des donnees du formulaire


// avec nom et type convertis en lettres majuscules
if ( isset( $_GET["znom"] ) ) $nom = strtoupper( $_GET["znom"] );
if ( isset( $_GET["ztype"] ) ) $type = strtoupper( $_GET["ztype"] );
if ( isset( $_GET["zprix"] ) ) $prix = $_GET["zprix"];

// affichage
echo "<h2>Nouveau produit : " . $nom . ", de type " . $type .
", à " . $prix . " centimes</h2>\n";

?>

<hr />
<address>M. Cartereau - AgroParisTech - Janvier 2009</address>
</body>
</html>

Système d'information avec PHP et MySQL - Page 10


CONTRÔLES DE DONNÉES EN PHP
COMMENT EFFECTUER UN CONTRÔLE SUR LES DONNÉES ?

 INSTRUCTION DE TEST (IF)

SYNTAXES
if (condition) { instruction1; instruction2; ... } 1

ou
if (condition) { instruction1; instruction2; ... }
else { instruction3; instruction4; ... }

CONDITION
comparaisons : == (égal) != (différent) < <= > >=
combinaisons : ! (négation) and (et) or (ou) xor (ou exclusif)
valeurs : true (vrai) false (faux)

EXEMPLES
if ($nom == "") echo "<p>Nom vide !</p>\n";

if ($prix == "") { echo "<p>Prix vide !</p>\n"; }


else { echo "<p>Voici le prix : " . $prix . "</p>\n";}

 CONTRÔLES DANS L'EXEMPLE DU PRODUIT

if ( ($nom == "") or ($type == "") or ($prix == "") ) {


echo "<p>Information(s) manquante(s) ! </p>\n";
} else if ( ($type != "LEGUME") and ($type != "FRUIT") ) {
echo "<p>Type erroné (" . $type . ") ! </p>\n";
} else {
echo "<p>données correctes</p>\n";
}

1 Si la suite d'instructions se réduit à une seule, les accolades ne sont pas obligatoires ; par contre, il
n'est pas besoin de terminer par un point-virgule (« ; ») après l'accolade fermante (« } »).
Système d'information avec PHP et MySQL - Page 11
CONTRÔLES DE DONNÉES EN PHP (SUITE)
COMMENT VÉRIFIER QU'UNE DONNÉE EST BIEN UN NOMBRE ENTIER ?

 CAS DES VALEURS NUMÉRIQUES ENTIÈRES

FONCTIONS DE TEST
is_numeric(variable)..... vrai si variable est un nombre ou une chaîne
contenant un nombre (exemple : "12")
CONVERSION EN NOMBRE ENTIER
intval(variable) ............. valeur entière de variable (variable est un nombre
ou une chaîne contenant un nombre)
ou zéro (« 0 ») si chaîne non numérique
COMPARAISON ENTRE UNE CHAÎNE ET UN NOMBRE
possible car conversion automatique de la chaîne en nombre réel
EXEMPLES
Cas vrais : is_numeric("-8.95") is_numeric("12")
Cas faux : is_numeric("a1")
Conversions de chaîne en nombre : "12" → 12
"-1.5" → -1.5
"2e2" → 200
"a1" → 0
1.5 → 1.5
12 → 12
Comparaisons de chaîne et nombre : "12" == 12 (vrai)
"-1.5" == -1.5 (vrai)
"2e2" == 200 (vrai)

 EXEMPLE

if (! is_numeric($prix) ) {
echo "<p>Prix : valeur non numérique !"</p>\n";
} else if ( $prix != intval($prix) ) {
echo "<p>Prix : valeur non entière !</p>\n";
} else if ( (int) $prix > 0) {
echo "<p>Prix correct</p>\n";
}

LA CHAÎNE "125"PEUT DEVENIR UN NOMBRE EN PHP !

Système d'information avec PHP et MySQL - Page 12


FONCTION EN PHP
COMMENT CRÉER UNE FONCTION DE VÉRIFICATION ?

DÉFINITION DE LA FONCTION
Syntaxe
function nom de la fonction (liste des paramètres)
{
instructions
}
Liste des paramètres : $variable1, $variable2, ...
(peut être vide ou réduite à un seul paramètre)
Renvoi d'un résultat : return valeur;

UTILISATION DE LA FONCTION (« APPEL »)


Syntaxe
nom de la fonction (liste des valeurs);
Définition de la fonction placée avant le premier appel
(généralement au début du code en PHP)

EXEMPLE

function est_entier($valeur)
// renvoi vrai si $valeur est bien un nombre entier
{
$resultat = false;
if ( is_numeric($valeur) and ( $valeur == intval($valeur) ) ) {
$resultat = true;
}
return $resultat;
} // fonction

...
if ( ! est_entier($texte) ) {
echo "<p>Texte : pas de nombre entier !</p>\n";
} else {
// conversion de la chaîne en nombre entier
$nombre = (int) $texte;
}

Système d'information avec PHP et MySQL - Page 13


EXERCICE DU MESSAGE

CRÉER UNE PAGE EN PHP POUR AFFICHER LES DONNÉES

TRANSMISES À PARTIR DU FORMULAIRE SUIVANT

AJOUTER UN CONTRÔLE SUR L'EXISTENCE DES DONNÉES

Système d'information avec PHP et MySQL - Page 14


EXEMPLE N° 3 : CALENDRIER

LISTE DES JOURS DU MOIS COURANT

Indication par une couleur du jour courant

Système d'information avec PHP et MySQL - Page 15


DATES EN PHP
COMMENT OBTENIR JOUR, MOIS ET ANNÉE COURANTES ?

 FONCTION date()
Date du jour renvoyée selon paramètre :
date("j") .......................... numéro du jour dans le mois (1 à 31)
date("d") .......................... numéro du jour dans le mois (01 à 31)
date("w") .......................... numéro du jour dans la semaine
(de 0 pour dimanche, à 6 pour samedi)
date("n") .......................... numéro du mois (1 à 12)
date("m") .......................... numéro du mois (01 à 12)
date("Y") .......................... année (4 chiffres)
date("t") .......................... nombre de jours dans le mois
avec possibilité de paramètre combiné :
date("Y-m-d") .................. année-mois-jour, exemple : "2009-01-11"
et jour au choix avec un second paramètre supplémentaire :
date(format, mktime(0, 0, 0, mois, jour du mois, annee) )

 EXEMPLES

// date du jour (1ère version)


$jour_semaine = date("w");
$jour_mois = date("j");
$mois = date("n");
$annee = date("Y");
echo "<p>Aujourd'hui : " .
$jour_mois . " " . $mois . " " . $annee . "</p>\n";

// date du jour (2nde version)


echo "<p>Aujourd'hui : " . date("j m Y") . "</p>\n";

// jour de la semaine pour Noël de l'année en cours


$jour_noel =
date("w", mktime(0, 0, 0, 12, 25, date("Y") ) );

Système d'information avec PHP et MySQL - Page 16


TABLEAUX EN PHP
COMMENT AFFICHER LES NOMS DU JOUR ET DU MOIS EN CLAIR ?

 TABLEAU
ENSEMBLE D'ÉLÉMENTS INDICÉES (A PRIORI : 0, 1 ETC.)

CRÉATION D'UN TABLEAU


A partir d'une liste de valeurs : $tableau = array(liste des valeurs);
Création d'un tableau vide : $tableau = array();

ACCÈS À UN ÉLÉMENT
Nom du tableau indicé par le rang : $tableau[rang]

 EXEMPLE

// tableaux de noms
$noms_des_jours = array("dimanche", "lundi", "mardi",
"mercredi", "jeudi", "vendredi" , "samedi");
$noms_des_mois = array("janvier", "fevrier", "mars",
"avril", "mai", "juin", "juillet", "août", "septembre",
"octobre", "novembre", "décembre");
// date du jour
$jour_semaine = date("w"); // entre 0 et 6
$nom_jour = $noms_des_jours[$jour_semaine];
$jour_mois = date("j"); // entre 1 et 12
$mois = date("n");
$nom_mois = $noms_des_mois[$mois - 1];
$annee = date("Y");
echo "<p>Aujourd'hui : " . $nom_jour . " " .
$jour_mois . " " . $nom_mois . " " . $annee . "</p>\n";

LA NUMÉROTATION D'INDICE DANS UN TABLEAU COMMENCE À ZÉRO (0) !

Système d'information avec PHP et MySQL - Page 17


ITÉRATIONS EN PHP
COMMENT PARCOURIR TOUS LES JOURS DU MOIS ?

SCHÉMA GÉNÉRAL « itérer »


Forme générale d'itération

for (initialisation; condition d'itération; continuation) { instructions }


Exemple du parcours des jours du mois
$nb = date("t");
for ($j = 1; $j <= $nb; ++$j) { echo $j . " "; }
avec l'instruction d'incrémentation « ++ »
++$j équivalent à : $j = $j + 1;

SCHÉMA PARTICULIER « répéter jusqu'à »


Répétition des instructions jusqu'à ce que la condition soit fausse

initialisation ; do { instructions } while (condition d'itération);


Exemple du parcours des jours du mois
$nb = date("t");
$j = 1; do { echo $j . " "; ++$j; } while ($j <= $nb);

SCHÉMA PARTICULIER « tant que »


Tant que la condition est vérifiée, répétition des instructions

initialisation ; while (condition d'itération) { instructions };


Exemple du parcours des jours du mois
$nb = date("t");
$j = 1; while ($j <= $nb) { echo $j . " "; ++$j; }

Système d'information avec PHP et MySQL - Page 18


EXEMPLE D'ITÉRATION EN PHP
CALENDRIER

// tableau des noms


$noms_des_jours = array("dimanche", "lundi", "mardi",
"mercredi", "jeudi","vendredi" , "samedi");
$noms_des_mois = array("janvier", "fevrier", "mars", "avril",
"mai", "juin", "juillet", "août",
"septembre", "octobre", "novembre", "décembre");
// date du jour
$jour_semaine = date("w");
$jour_mois = date("j");
$nom_jour = $noms_des_jours[$jour_semaine];
$mois = date("n");
$nom_mois = $noms_des_mois[$mois - 1];
$annee = date("Y");
echo "<p>Aujourd'hui : " . $nom_jour . " " .
$jour_mois . " " . $nom_mois . " " . $annee . "</p>\n";
// calendrier du mois
$nb_jours_mois = date("t");
echo "<h2>" . $nom_mois . "</h2>\n<ul>";
for ($rang = 1; $rang <= $nb_jours_mois; ++$rang) {
$jour_semaine_rang =
date("w", mktime(0, 0, 0, $mois, $rang, $annee) );
$effet = '';
if ($rang == $jour_mois) $effet = ' class="signal"';
echo "<li" . $effet. ">" .
$noms_des_jours[ $jour_semaine_rang ] . " " . $rang .
"</li>\n";
} // for
echo "</ul>\n";

avec la classe de style « signal » définie :


.signal {color: red;}

Système d'information avec PHP et MySQL - Page 19


EXERCICE DE LA LISTE DYNAMIQUE

CRÉATION DYNAMIQUE D'UNE ZONE DE LISTE D'UN FORMULAIRE

Liste sur une période de 5 ans à compter de l'année en cours

Système d'information avec PHP et MySQL - Page 20


PHP ET MYSQL

Bases de données avec MySQL

Squelette de script

Principales fonctions

Système d'information avec PHP et MySQL - Page 21


MYSQL ET PHP
MYSQL EST UN GESTIONNAIRE DE BASES DE DONNÉES RELATIONNELLES

 PROCÉDURE D'ACCÈS À UNE BASE AVEC MYSQL

1) CONNEXION À UN SERVEUR MYSQL


paramètres : adresse du serveur 1, nom de compte et mot de passe,
en retour : un code d'accès ou une valeur fausse en cas d'anomalie
$acces = mysql_connect("serveur", "compte", "mot-de-passe");
2) OUVERTURE DE LA BASE SUR LE SERVEUR
paramètres : nom de la base et le code d'accès,
renvoie une valeur fausse en cas d'anomalie
mysql_select_db(base)
3) OPÉRATIONS DANS LA BASE
paramètre : formulation de l'opération en SQL (« requête »),
renvoie une valeur fausse en cas d'anomalie
$resultat = mysql_query(requête);
4) SUPPRESSION DE L'ACCÈS AU SERVEUR
mysql_close();
EN CAS D'ANOMALIE, MESSAGE D'EXPLICATION
mysql_error()
souvent associé à l'instruction die(texte) : arrêt de l'exécution et
affichage du texte donnéen paramètre

1 Si le serveur de base de données est identique au serveur de pages Web (cas général), dans ce cas
on utilise la notation localhost, sinon son adresse dans l'Internet ; exemple : sql.ici.fr
Système d'information avec PHP et MySQL - Page 22
SQUELETTE DE SCRIPT EN PHP POUR MYSQL
PREMIÈRE VERSION POUR L'ACCÈS A LA BASE « coop »
AVEC MYSQL SUR LE POSTE DE TRAVAIL 1

<?php

// 1) connexion au serveur mysql


$acces = mysql_connect (serveur, utilisateur, passe);
if (! $acces ) { // anomalie
die("<p>Erreur de MySql : " . mysql_error() . "</p>");
}

// 2) ouverture de la base
if (! mysql_select_db("coop") ) { // anomalie
die("<p>Erreur de MySql: ' . mysql_error() . "</p>");
}

// 3) operation dans la base


$sql = "requête";
$resultat = mysql_query($sql);
if (! $resultat) { // anomalie
die("<p>Erreur de MySql : " . mysql_error() . "</p>");
}
... traitement des données ...

// 4) fermeture de l'acces au serveur


mysql_close();

?>

1 Le poste de travail local est identifié dans l'Internet par « localhost » ou « 127.0.0.1 ».
Système d'information avec PHP et MySQL - Page 23
SQUELETTE AVEC FONCTIONS
SECONDE VERSION POUR L'ACCÈS A LA BASE

RÉÉCRITURE DU SQUELETTE D'ACCÈS À UNE BASE MYSQL


// insertion de fonction 1
require_once("base.php");

function traiter_donnees()
// traitement des donnees dans la base ouverte
{
$sql = " ... ";
$resultat = mysql_query($sql);
if (! $resultat) {
// anomalie
die("<p>MySql : " . mysql_error() . " (" . $sql . ")</p>";
}
... traitement des données ...
} // function

// 1) connexion au serveur et 2) ouverture de la base


ouvrir_base("coop");

// 3) operation dans la base


traiter_donnees();

// 4) fermeture de l'acces au serveur


mysql_close();

UTILISATION DE FONCTION
ouvrir_base("coop");
Ouverture de la base de nom "coop" de MySQL,
avec les identifications du serveur et de l'utilisateur fixées ;
en cas d'anomalie, arrêt avec message explicatif

INSERTION DU TEXTE DES FONCTIONS


require_once($fichier);
insertion du texte à partir du fichier dans la page, si pas déjà fait

1 Le fichier contenant le texte de la fonction écrite en PHP (avec la balise <?php ?>) doit être placé
dans le même dossier que la page courante contenant le script.
Système d'information avec PHP et MySQL - Page 24
FONCTION POUR LA BASE

DÉFINITION EXTERNE DE FONCTION DANS LE FICHIER base.php 1


<?php
// base.php - Michel CARTEREAU - 9 XI 2009 - PHP > 4.1

function ouvrir_base($base)
// ouverture de la base de nom $base de MySQL, avec
// les identifications du serveur et de l'utilisateur fixees
// renvoi de la valeur pour acceder a la base,
// ou sinon en cas d'anomalie, arret avec message explicatif
{
// parametrage de la connexion
$serveur = "serveur";
$utilisateur = "utilisateur";
$passe = "passe";
// acces au serveur MySQL
$acces = mysql_connect($serveur, $utilisateur, $passe);
if (! $acces ) { // erreur en acces au serveur
die("Refus du serveur MySQL : " . mysql_error() );
}
if (! mysql_select_db($base) ) { // erreur en acces a la base
mysql_close();
die("Ouverture impossible de " . $base . " : " . mysql_error() );
}
// base ouverte
return $acces;
} // function

?>

1 Le fichier base.php doit résider ici dans le même dossier que la page y faisant appel
Système d'information avec PHP et MySQL - Page 25
CAS DE LA BASE DE DONNÉE DE LA COOPÉRATIVE

EXEMPLE ÉTUDIÉ DANS LE COURS SUR LES BASES DE DONNÉES 1

 BASE DE DONNÉES coop AVEC NOTAMMENT LA TABLE : produit

Produit décrit par 4 champs

produit
numero nom type prix
1 CAROTTE LEGUME 100
2 BROCOLIS LEGUME 200
3 PANAIS LEGUME 300
5 KIWI FRUIT 220

 SCHÉMA DE LA TABLE produit

1) numero
clef attribuée automatiquement à la création 2

2) nom
obligatoire, en majuscules, d'au-plus 40 lettres

3) type
soit LEGUME, soit FRUIT

4) prix
obligatoire, nombre entier

1 Voir le document de formation « Introduction aux systèmes d'information et aux bases de données »
2 Lors de la création avec MySQL, il est en fait donné par convention la valeur zéro pour cette clef
Système d'information avec PHP et MySQL - Page 26
EXEMPLE N°4 : CONSULTATION EN MYSQL

EDITION DU CONTENU DE LA TABLE « produit » DE LA BASE « coop » 1

 SCRIPT EN PHP

<?php

require_once("base.php");

function traiter_donnees()
// traitement des donnees dans la base ouverte
{
// interrogation de la base
$sql = "select * from produit order by nom";
$resultat = mysql_query($sql);
if (! $resultat) { // anomalie : message et retour
echo("<p>MySql : " . mysql_error() . " (" . $sql . ")</p>");
return;
}
// recuperation du nombre d'enregistrements trouves
$taille = mysql_num_rows($resultat);
if ($taille < 1) {
echo "<h2>Vide !<h2>\n";
} else { // liste
echo "<h2>Il y a " . $taille . " produits</h2>\n";
echo "<ul>\n";
while ( $ligne = mysql_fetch_array($resultat) ) {
// informations sur un enregistrement
echo "<li>" . $ligne["numero"] . " : <strong>".
$ligne["nom"] . "</strong>, " . $ligne["type"] . ", " .
$ligne["prix"] . " centimes/Kg </li>\n";
} // while
echo "</ul>\n";
} // else
} // function

// acces au serveur mysql et ouverture de la base


ouvrir_base("coop");
// traitement des donnees
traiter_donnees();
// fin d'utilisation de la base
mysql_close();
?>

1 Script à insérer dans une page en XHTML


Système d'information avec PHP et MySQL - Page 27
EXEMPLE N°4 : RÉSULTATS

 EXEMPLE DE RÉSULTAT

 CODE XHTML PRODUIT 1

<h2>Il y a 7 produits</h2>

<ul>

<li>2 : <strong>BROCOLIS</strong>, LEGUME, 200 centimes/Kg </li>

<li>1 : <strong>CAROTTE</strong>, LEGUME, 100 centimes/Kg </li>

<li>5 : <strong>CHOU DE CHINE</strong>, LEGUME, 250 centimes/Kg</li>

<li>7 : <strong>CHOUX FLEUR</strong>, LEGUME, 250 centimes/Kg </li>

<li>4 : <strong>KIWI</strong>, FRUIT, 220 centimes/Kg </li>

<li>3 : <strong>PANAIS</strong>, LEGUME, 300 centimes/Kg </li>

<li>6 : <strong>POMME</strong>, FRUIT, 100 centimes/Kg </li>

</ul>

1 La répartition sur plusieurs lignes du code produit en XHTML provient de l'affichage de retour-à-la-
ligne effectué dans les instructions echo de PHP à l'aide de la notation \n ; si cela n'avait pas été
programmé, tout le code XHTML produit serait sur une seule ligne de texte !
Système d'information avec PHP et MySQL - Page 28
PRINCIPALES OPÉRATIONS EN MYSQL
PRÉSENTATION SIMPLIFIÉE DES OPÉRATIONS MINIMALES

 LISTE DE RÉSULTATS

1) INTERROGATION EN SQL
$sql = " select ...";
$resultat = mysql_query($sql)
2) RÉCUPÉRATION DU NOMBRE D'ENREGISTREMENTS EN RÉSULTAT
$nb = mysql_num_rows($resultat)
3) ITÉRATION DE LECTURE DES ENREGISTREMENTS EN RÉSULTAT 1
while ( $ligne = mysql_fetch_array($resultat) ) {
...
}
UN CHAMP EST ACCESSIBLE SELON SON NOM DANS LA LIGNE DE RÉSULTAT :
numero nom type prix
$ligne["numero"] $ligne["nom"] $ligne["type"] $ligne["prix"]

EXEMPLE : LISTE DES PRODUITS


// interrogation de la base
$sql = "select * from produit";
$resultat = mysql_query($sql);
if (! $resultat) { // anomalie : message et abandon
die("<p>Erreur de MySql : " . mysql_error() . "</p>\n");
}
// recuperation du nombre d'enregistrements trouves
$taille = mysql_num_rows($resultat);
if ($taille < 1) {
echo "<h2>Vide !<h2>\n";
} else { // liste
echo "<h2>Il y a " . $taille . " produits</h2>\n";
echo "<ul>\n";
while ( $ligne = mysql_fetch_array($resultat) ) {
// informations sur un enregistrement
echo "<li>" . $ligne["numero"] . " : <strong>".
$ligne["nom"] . "</strong>, " . $ligne["type"] . ", " .
$ligne["prix"] . " centimes/Kg </li>\n";
} // while
echo "</ul>\n";
} // else

1 Il existe une fonction similaire, mysql_fetch_row(), mais les champs sont alors accessibles selon
leur rang dans l'enregistrement : $ligne[0] ( numero), $ligne[1] (nom) etc.
Système d'information avec PHP et MySQL - Page 29
PRINCIPALES OPÉRATIONS EN MYSQL (fin)

 AJOUT D'UN ENREGISTREMENT

$valeurs = " valeur1 , valeur2 ... ";


$sql = "insert into table(champ1,...) values(" .
$valeurs . ")";
$resultat = mysql_query($sql);

afin d'éviter une anomalie avec la présence d'une apostrophe dans


une donnée de texte (exemple : 'rue d'Issy'), il faut insérer avant
l'apostrophe interne le symbole « \ » ('rue d\'Issy') ; cela peut
être fait à l'aide de la fonction mysql_real_escape_string()
dans le cas d'une clef gérée par MySQL (auto_increment),
la valeur à donner est alors zéro, et la valeur de la clef créée
s'obtient par mysql_insert_id()

 SUPPRESSION D'ENREGISTREMENT

$sql = "delete from table where ... " ;


$resultat = mysql_query($sql);
$nb_suppressions = mysql_affected_rows();

nombre d'enregistrements supprimés : mysql_affected_rows()


(retourne 0 en cas de suppression de tous les enregistrements)

 MODIFICATION D'UN(D') ENREGISTREMENT(S)

$modification = " champ1 = valeur1 , champ2 = valeur2 ... ";


$sql = "update table set " . $modification .
" where ... " ;
$resultat = mysql_query($sql);
$nb_modifications = mysql_affected_rows();

nombre d'enregistrements modifiés : mysql_affected_rows()

EN SQL, CHAÎNE DE CARACTÈRES NOTÉE ENTRE APOSTROPHES (« ' ») ;


EXEMPLE : 'CAROTTE'

Système d'information avec PHP et MySQL - Page 30


EXEMPLES D'OPÉRATIONS EN MYSQL
 AJOUT

// AJOUT D'UN PRODUIT


$valeurs = " 0 , 'POMME D\'ADAM' , 'FRUIT', 990 ";
$sql = "insert into produit ".
" (numero, nom, type, prix) values (" . $valeurs . ") ";
$resultat = mysql_query ($sql);
if (! $resultat) {
die("<p>Impossible de modifier la table (' .
mysql_error() . ") !</p>");
}
echo "<p>Ajout fait, n° : " . mysql_insert_id() . "</p>";

 SUPPRESSION

// SUPPRESSION(S) DE PRODUIT(S)
$sql = "delete from produit where nom = 'SOJA' ";
$resultat = mysql_query($sql);
if (! $resultat) {
die("<p>Impossible de modifier la table (" .
mysql_error() . ") !</p>");
}
echo "<p>" . mysql_affected_rows() .
" produit(s) supprimé(s)</p>";

 MISE À JOUR

// AUGMENTATION GENERALE DU PRIX DE 10 %


$sql = "update produit set prix = prix * 1.1 ";
$resultat = mysql_query($sql);
if (! $resultat) {
die("<p>Impossible de modifier la table (" .
mysql_error() . ") !</p>");
}
$nb_modifications = mysql_affected_rows();
if ($nb_modifications < 1)
$message = "Aucune modification !";
} else {
$message = $nb_modifications . " modification(s)";
}
echo "<p>" . $message . "</p>";

Système d'information avec PHP et MySQL - Page 31


DE PHP À XHTML VIA MYSQL
COMMENT S'IMBRIQUENT LES DIFFÉRENTS LANGAGES ?

 EXEMPLE PHP-XHTML

1) CODE ORIGINEL ÉCRIT EN PHP

echo "<li>" . $ligne["nom"] . "</li>\n";

2) CODE XHTML SUIVI DE RETOUR-LA-LIGNE (\n), PRODUIT PAR PHP

<li>CAROTTE</li>

3) TEXTE AFFICHÉ PAR LE NAVIGATEUR DANS UNE LISTE (<li>)

• CAROTTE

 EXEMPLE PHP-MYSQL

1) CODE ORIGINEL ÉCRIT EN PHP

$nom = "'" . mysql_real_escape_string($nom) . "'";


$type = "'" . mysql_real_escape_string($type) . "'";
$valeurs = "0, " . $nom . ", " . $type . ", " . $prix;
$sql = "insert into produit (numero, nom, type, prix)" .
" values (" . $valeurs . ") ";
mysql_query ($sql);

2) CODE SQL PRODUIT PAR PHP

on suppose que les variables $nom, $type et $prix ont pour


valeur "POMME D'ADAM", "FRUIT" et 100

insert into produit (numero, nom, type, prix)


values (0, 'POMME D\'ADAM', 'FRUIT', 100)

Système d'information avec PHP et MySQL - Page 32


EXERCICE DE L'AJOUT D'UN PRODUIT

RÉALISER L'ENREGISTREMENT D'UN NOUVEAU PRODUIT

Système d'information avec PHP et MySQL - Page 33


COMPLÉMENTS SUR PHP

Mélange PHP et XHTML

Système d'information avec PHP et MySQL - Page 34


MÉLANGER DU CODE PHP AVEC DU CODE XHTML
COMMENT FAIRE COHABITER AU MIEUX PHP ET XHTML ?

 INSERTION DE SCRIPT PHP DANS LA PAGE EN XHTML

 STRUCTURE XHTML PRÉDOMINANTE SUR LE SCRIPT


cas de script de taille réduite à une ou quelques lignes,
ou produisant un contenu bien délimité de la page en XHTML
 EXEMPLE
<strong><?php echo $_SERVER["HTTP_USER_AGENT"]; ?></strong>

 CODE HTML PRODUIT PAR UN SCRIPT EN PHP

 APPLICATION PRÉDOMINANTE SUR LA STRUCTURE DE LA PAGE EN XHTML


cas d'un contenu fortement dynamique piloté par une application,
avec des composants, comme par exemple une partie de page
 COMPOSANTS LÉGERS : BLOC DE CODE XHTML MIS DANS UNE VARIABLE
possibilité de noter une chaîne de caractères sur plusieurs lignes
 EXEMPLE DE BLOC EN XHTML DANS UNE VARIABLE
$fin_page =
'<hr /><address>Michel CARTEREAU - 10 I 2009</address>
</body>
</html>';
 COMPOSANTS ÉLABORÉS : UTILISATION DU MÉCANISME D'INCLUSION
instruction d'insertion du texte issu d'un fichier : include(fichier);
où le texte inséré est considéré comme étant du code XHTML
 EXEMPLE D'INCLUSION DE COMPOSANT
a) Partie de la fin de page définie dans un fichier (finpage.php),
paramètrée avec nom d'auteur ($auteurpage) et date ($datepage)
<!-- fin de la page -->
<hr />
<address><?php echo $auteurpage . " - " . $datepage ?></address>
</body>
</html>
b) Utilisation de ce composant de la fin de page
$auteurpage = 'M. CARTEREAU';
$datepage = '10 I 2009';
include('finpage.php');

VEILLER À BIEN RÉFLÉCHIR À L'ENVERGURE DU SITE AVANT CODAGE EN PHP !

Système d'information avec PHP et MySQL - Page 35


PAGE D'IDENTIFICATION PILOTEE PAR PHP

DEUXIÈME VERSION : identite-bis.php


<?php
// code HTML du debut de la page
$debut_page =
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<title>PHP : identification du navigateur</title>
</head>
<body>
<h1>PHP : identification du navigateur</h1>
<hr />
';
// code HTML de la fin de la page
$fin_page =
'<hr /><address>Michel CARTEREAU - 10 I 2009</address>
</body>
</html>
';
// production du debut de la page
echo $debut_page;
// identification du navigateur
echo "<p>Navigateur : <strong>" .
$_SERVER["HTTP_USER_AGENT"] . "</strong></p>\n";
// et du poste
echo "<p>sur le poste : <strong>";
$ip = $_SERVER["REMOTE_ADDR"];
$nom = gethostbyaddr($ip);
echo "adresse IP " . $ip . " (" . $nom . ")";
echo "</strong></p>\n";
// production de la fin de la page
echo $fin_page;
?>

COMPOSANTS LÉGERS AVEC DES BLOCS EN XHTML

Système d'information avec PHP et MySQL - Page 36


PAGE D'IDENTIFICATION AVEC COMPOSANTS
TROISIÈME VERSION DE LA PAGE PRINCIPALE : identite-ter.php
<?php
// variables globales
$datepage = "10 I 2009";
$auteurpage = "Michel CARTEREAU";
$titrepage = "PHP : identification du navigateur";
// production du debut de la page
include("debutpage.php");
// identification du navigateur
echo "<p>Navigateur : <strong>" . $_SERVER["HTTP_USER_AGENT"] .
"</strong></p>\n";
// et du poste
echo "<p>sur le poste : <strong>";
$ip = $_SERVER["REMOTE_ADDR"];
$nom = gethostbyaddr($ip);
echo "adresse IP " . $ip . " (" . $nom . ")";
echo "</strong></p>\n";
// production de la fin de la page
include("finpage.php");
?>

COMPOSANT DU DÉBUT DE PAGE : DEBUTPAGE.PHP


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<title><?php echo $titrepage ?></title>
</head>
<body>
<h1><?php echo $titrepage ?></h1>
<hr />
<!-- suite de la page -->

COMPOSANT DE LA FIN DE PAGE : FINPAGE.PHP


<!-- fin de la page -->
<hr />
<address><?php echo $auteurpage . " - " . $datepage ?></address>
</body>
</html>

MARQUAGE DU TEXTE DE CHAQUE COMPOSANT PAR UN COMMENTAIRE XHTML


AFIN DE FACILITER LA MISE AU POINT PAR EXAMEN DE LA PAGE FINALE

Système d'information avec PHP et MySQL - Page 37


PRÉSENTATION DU LANGAGE PHP

Principales caractéristiques du langage PHP

Système d'information avec PHP et MySQL - Page 38


APERÇU SUR PHP

ON PRÉSENTE ICI (SUCCINCTEMENT) LA VERSION 4 DU LANGAGE PHP 1

 INSERTION DANS LE TEXTE EN HTML

 SOIT UNE BALISE SPÉCIFIQUE À PHP


cas général conseillé
<?php code en PHP ?>

 SOIT UNE BALISE DE SCRIPT


ancienne notation devenue obsolète
<script language="php"> 2
texte en PHP
</script>

 CAS PARTICULIERS DÉCONSEILLÉS


non fiables, car dépendant de réglage sur le serveur
<? code en PHP ?> pour <?php code en PHP ?>
<?= chaîne en PHP =?> pour <?php echo chaîne en PHP ?>

 EXECUTION

 CONTRAINTES SUR LE FICHIER CONTENANT LA PAGE


suffixe spécifique au nom de fichier (« .php » )

 LA PAGE DOIT RÉSIDER SUR UN SERVEUR EXÉCUTANT PHP 3


sinon pas de prise en charge des instructions en PHP !

SITE D'INFORMATION EN FRANÇAIS : http://fr.php.net/,


MANUEL : http://fr.php.net/manual/fr/

1 Plus précisément, à partir de la version 4.1 jusqu'à la version actuelle (5).


2 Déconseillé, car ne suit pas la norme HTML 4 où l'attribut language est remplacé par type
3 Possibilité d'installer un serveur gratuit : EasyPHP sur Windows ou MAMP sur Mac (cf. page Erreur !
Signet non défini.).
Système d'information avec PHP et MySQL - Page 39
SYNTAXE GÉNÉRALE
PHP EST PROCHE DU LANGAGE C

 IDENTIFICATEUR (de fonction, constante ou dans un nom de variable)


composé de lettres 1, chiffres, ou trait de souligné (« _ »),
le premier caractère ne peut pas être un chiffre,
minuscules et MAJUSCULES différenciées (zut, Zut, ZUT distincts)
exemples : indice liste_pays pi314 Pi314

 NOMS DE VARIABLE
dollar ($) suivi d'un identificateur
exemples : $zut $a2000 $en_2001

 INSTRUCTIONS
a priori terminées par un point-virgule (« ; »)
exemples : $i = 27;

 INSERTION D'UN TEXTE 2 À PARTIR D'UN FICHIER 3


include(fichier); ou require(fichier); 4
(en cas d'anomalie, arrêt de l'exécution seulement si require)
ou aussi require_once(fichier) et include_once(fichier)
(pas d'insertion si déjà inclus avant dans le traitement de la page)
exemple : include('ouvrir.inc');

 COMMENTAIRES
soit texte débutant par « // » ou par « # », jusqu'en fin de ligne,
soit texte entre « /* » et « */ », éventuellement sur plusieurs lignes
exemples :
/*
Michel CARTEREAU - JANVIER 2003
*/
$an = 2000; # INITIALISATION
// VERIFICATION DU RESULTAT DE L'OPERATION

ATTENTION À LA DIFFERENTIATION minuscules - MAJUSCULES !

1 Attention ! les lettres accentuées sont très fortement déconseillées !


2 Attention ! le texte inséré est considéré comme du code HTML, il faut donc y ajouter les balises pour
PHP ; par ailleurs, éviter d'y placer des lignes vides car, dans certains cas (placement avant un
entête d'HTTP), risque de problème d'affichage sur le navigateur.
3 Le fichier doit résider dans un dossier déclaré accessible dans les réglages du serveur ; a priori, il
peut s'agir du dossier courant où se situe la page en cours.
4 Cas particulier d'instruction où les parenthèses ne sont pas nécessaires mais conseillées.

Système d'information avec PHP et MySQL - Page 40


NOTATIONS DE VALEURS
 NOMBRES
nombres entiers avec signe,
notation hexadécimale préfixée par « 0x », octale avec « 0 »
nombres réels, notation scientifique possible (avec « e » ou « E »)
exemples :
1 1234567890 6.55957 2.1e5
0xFF (hexadécimal) 007 (octal)

 CHAÎNES DE CARACTÈRES
notation a priori entre apostrophes (') ou guillemets ("),
remplacement de variable seulement au sein des guillemets,
avec possibilité d'étalement sur plusieurs lignes
autre possibilité pour un texte sur plusieurs lignes :
ligne avant : <<<borne (ATTENTION ! pas d'espace après borne)
ligne après : borne (ATTENTION ! commencer en début de ligne)
exemples :
'mardi'
"c'est extra !"
"valeur : $x" '$25'
'ce texte s'étale sur
deux lignes'
<<<FIN
ce texte s'étale sur
deux lignes
FIN

 CARACTÈRES SPÉCIAUX
préfixage par « \ » :
\n (nouvelle-ligne, ASCII 10) \t (tabulation, ASCII 9)
\\ (véritable \) \' (') \" (") \$ ($)
\xHH (code hexadécimal HH)
dans une chaîne à apostrophes (') : seuls \\ et \' sont décodés
exemples :
echo "Compte : $compte\n";
echo '<option value="0">' . $a . '</option>' . "\n";

Système d'information avec PHP et MySQL - Page 41


VALEURS PARTICULIÈRES ET TYPES
 TYPES
types définis :
entier : int ou integer
réel : float ou real ou double
logique : bool
chaîne : string
tableau : array
objet : object
classe : class
possibilité de tester le type à l'aide de fonctions :
is_int()
is_float()
is_numeric() (correspond à un nombre, entier ou réel)
is_bool()
is_string()
is_array()
is_object()

 CONVERSIONS DE TYPES
entier et réel dans une opération numérique : conversion en réel
chaîne dans une opération numérique : conversion en nombre mais
seulement si entier en début de la chaîne ou
si réel dans toute la chaîne, sinon valeur nulle ;
conversion de type manuelle : (nom du type) valeur
exemples de conversion vers une valeur numérique :
'3 roses' → 3
'0.314e1' → 0.314e1
'2.1' → 2.1
'2.1cm' → 2
'port 27' → 0
(integer) '2003' → 2003

Système d'information avec PHP et MySQL - Page 42


CONSTANTES ET VARIABLES

 VALEUR INDÉFINIE
constante null ou NULL ou Null (insensible à la casse 1)
test via la fonction is_null()

 VALEURS LOGIQUES
constantes true et false, insensibles à la casse
autres valeurs vraies :
nombre non nul, chaîne non vide et ≠ '0' et ≠ '0.0',
objet ou tableau avec au-moins un élément
et autres valeurs fausses :
0 (zéro), '' (vide), '0' (zéro), '0.0', null,
objet ou tableau vide (sans élément)

 POSSIBILITÉ DE DÉFINIR DES CONSTANTES 2


define('NOM 3 sans $', valeur);
possibilité de tester l'existence d'une constante avec defined(NOM)
exemples :
define('TAUX', 0.196);
if ( ! defined(EURFRF) ) {
define('EURFRF', 6.55957);
}
$prix = ($prix * TAUX) / EURFRF;

 VARIABLES : NON TYPÉES ET À DÉCLARATION AUTOMATIQUE


variable créée lors de sa première utilisation (pas de déclaration)
peut contenir successivement des valeurs de types différents,
possibilité de tester la définition d'une variable avec isset(variable)
et aussi de supprimer une variable : unset(variable)
exemples :
$pot = 13;
$pot = 'terre';
if ( ! isset($nom) ) { $nom = ''; }

1 Exemple : les notations NULL, null, Null correspondent toutes à la valeur indéfinie.
2 La constante possède alors une portée globale (valide dans tout le script)
3 Le nom de constante est un identificateur, qui par convention, se note en lettres MAJUSCULES.

Système d'information avec PHP et MySQL - Page 43


PRINCIPALES EXPRESSIONS

 CALCULS ÉLÉMENTAIRES
. (concaténation de chaînes)
+ - / * % (modulo)
intval(expression) (partie entière)
&& ou and (et 1) || ou or (ou 2) xor (ou exclusif) ! (négation)
+ (union de tableaux)
exemples :
($nb * 10) + 100.25
intval($mesure)
$vide or ( ! $plein)
'http://' . $adressepage

 COMPARAISONS
< <= > >= == (égalité) != ou <> (différence)
=== (identité de valeur et de type) !== (différence de valeur ou de type)
comparaison de nombre et chaîne : conversion en nombre
tableaux égaux si même clefs et si valeurs de chaque clef égales,
identiques si, de plus, dans le même ordre et de même type
exemples :
($taille >= 10) && ($taille <= $plafond)
'zorro' == $nom 3

 EXPRESSION CONDITIONNELLE
condition ? valeur si vérifiée : valeur sinon
exemple : ('F' == $sexe) ? 'femme' : 'homme'

 CONTRÔLE D'ERREUR
suppression d'éventuel message d'erreur 4 : @expression
exemple :
if ( ! @readfile('prologue.txt') ) {
echo "Impossible de lire le prologue !";
}

1 Veiller à ne pas taper par erreur & au lieu de && car c'est une autre opération (manipulation de bits)
2 Veiller à ne pas taper par erreur | au lieu de || car c'est une autre opération (manipulation de bits)
3 Afin d'éviter la non détection de l'utilisation malencontreuse d'une affectation (« = ») à la place de
l'égalité (« == ») , une bonne pratique consiste à placer une constante à gauche de la comparaison.
4 A utiliser avec beaucoup de précaution car peut masquer le signalement d'une erreur de syntaxe.

Système d'information avec PHP et MySQL - Page 44


PRINCIPALES INSTRUCTIONS
 AFFECTATIONS
affectation d'une valeur à une variable : variable = valeur ;
Incrémentation, décrémentation : ++variable -- variable
cas d'opération sur le résultat : variable opération= valeur ;
équivalent à : variable = variable opération valeur ;
(valable pour : + - * / % & | ^ . >> << )
exemples :
$nom = 'carabosse';
++$nb; identique à $nb = $nb + 1;
$val *= 6.56; identique à $val = $val * 6.56;

 BLOC
suite d'instructions entre accolades (« { } »), non suivie de « ; »
exemple : { $texte= "zut !\n"; alerter($texte); }

 AFFICHAGES
echo(chaîne); ou echo chaîne; ou print(chaîne);
forme brute pour variable à plusieurs valeurs : print_r(variable);
exemples : echo("<p>Nom</p>\n"); print_r(tablenoms);

 TESTS
if (expression) { instruction; } 1
if (expression) { instruction1; } else { instruction2; }
if (expression1) { instruction1; }
elseif (expression2) { instruction2; }
(avec possibilité d'aligner plusieurs elseif et de finir par else)
exemples :
if (0 == $nb) { $i = 0; }
else {
$i = 1; $k = 0;
}
if (0 == $n) { $f = 1; }
elseif (1 == $n) { $f = 1; }
else { $f = fact($f - 1); }

 ARRÊT DE L'EXÉCUTION
abandon de l'exécution du script : exit();
ou aussi, avec l'affichage d 'un message : die(chaîne);

Système d'information avec PHP et MySQL - Page 45


PRINCIPALES INSTRUCTIONS (suite)
 CHOIX MULTIPLE
switch (expression) {
case valeur1 : instruction1; break;
case valeur2 : instruction2; break;
...
default: instruction;
}
le cas par défaut (default) n'est pas obligatoire mais conseillé,
possibilité de grouper plusieurs cas ensemble, exemple :
switch ($code) {
case 'ba' : case 'si' : case 'hr' : case 'mk' :
$pays = 'ex-Yougoslavie'; break;
default: $pays = 'inconnu';
}

 ITÉRATIONS
for (initialisation; condition d'itération; continuation) {
instruction(s);
}
do {
instruction(s);
} while (condition d'itération) ;
while (condition d'itération) {
instruction(s);
}
sortie par break, passage à l'itération suivante par continue
exemples :
// nombre d'iteration fixe (schema "pour de a faire")
for ($i = 0; $i < 10; ++$i) {
$ligne .= "*";
}
// iteration conditionnelle (schema "tantque faire")
while ($nb < $plafond) {
$nb *= 2;
}
// iteration à sortie centrale (schema "iterer sortirsi")
$i = 0; $liste = ""; for (;;) {
$liste .= $noms[i];
if ("fin" == $noms[i]) { break ; }
$liste .= ", ";
++$i ;
}

1 Il est conseillé d'utiliser systématique un bloc (« { } ») même en cas d'instruction unique afin
d'éviter des pièges de programmation.
Système d'information avec PHP et MySQL - Page 46
TABLEAUX

 CARACTÉRISTIQUES GÉNÉRALES
indiçage possible par un entier (à partir de 0 a priori),
ni déclaration ni taille fixe a priori, plusieurs dimensions possibles,
indice noté entre crochets (« [ ] »)
exemples : $jours[2] $mat[20][5]

 CRÉATION D'UN TABLEAU


soit lors de la première affectation d'une valeur,
soit avec une liste de valeurs initiales avec
un indiçage entier automatique à partir de zéro :
tableau = array (valeur1, valeur2, ...)
ou un indiçage explicite :
tableau = array (indice1=>valeur1, indice2=>valeur2, ...)
soit un tableau vide noté : array()
exemples :
$messages[1] = 'bravo';
$liste = array();
$t = array (31, 27, 31, 30);
$codes = array (0=>'F', 5=>'I');

 OPÉRATIONS SPÉCIFIQUES
taille d'un tableau : count(tableau) ou sizeof(tableau)
ajout d'un élément à la fin : tableau[] = valeur;
présence d'une valeur dans un tableau : in_array(valeur, tableau)
(renvoie un indicateur logique de la présence)
parcours des valeurs d'un tableau :
foreach (tableau as variable) { instruction(s); }
tri des valeurs d'un tableau : sort(tableau); (ordre croissant)
ou rsort(tableau); (ordre décroissant)
exemples :
echo("Taille : ".count($codes)." \n");
$codes[] = 'IRE';
sort($codes);
if (! in_array('D', $codes ) {
$codes[] = 'D';
}
foreach ($codes as $uncode) {
echo "<li>" . $uncode . "</li>\n";
}

Système d'information avec PHP et MySQL - Page 47


CAS DES TABLEAUX ASSOCIATIFS

 CARACTÉRISTIQUES GÉNÉRALES
indiçage par une chaîne, comme pour un indice numérique de rang
exemples : $table['fr']

 CRÉATION D'UN TABLEAU ASSOCIATIF


soit lors de la première affectation d'une valeur,
soit avec une liste de valeurs initiales avec
tableau = array (indice1=>valeur1, indice2=>valeur2, ...)
exemples :
$adresse['ville'] = 'PARIS';
$adresse['rue'] = 'rue Claude Bernard';
$codes = array ('fr'=>'F', 'ie'=>'IRL');

 OPÉRATIONS SPÉCIFIQUES
parcours des paires (clef, valeur) d'un tableau :
foreach (tableau as clef=>variable) {
instruction(s);
}
ou, une ancienne forme :
while ( list(clef, valeur) = each(tableau) ) {
instruction(s);
}
présence d'une clef : array_key_exists(clef, tableau)
(renvoi un indicateur logique de la présence)
recherche de la clef d'une valeur : array_search(valeur, tableau)
(renvoi la clef si trouvée, faux sinon)
liste des clefs d'un tableau : array_keys(tableau)
tri des clefs d'un tableau : ksort(tableau);
exemples :
foreach ($codes as $nom=>$valeur) {
echo "<li>code " . $nom . " : " . $valeur . "</li>\n";
}
if (! array_key_exists('ville', $adresse) ) {
$adresse['ville'] = '';
}

Système d'information avec PHP et MySQL - Page 48


FONCTIONS

 DÉFINITION GÉNÉRALE D'UNE FONCTION


function nom-de-fonction(liste de paramètres1) {
instructions
}
la liste de paramètres peut être vide ou réduite à un seul paramètre
résultat renvoyé par : return résultat ; ou return(résultat);
possibilité de ne pas indiquer tous les paramètres à l'appel :
tout paramètre manquant est considéré comme indéfini
possibilité d'initialiser un paramètre si non défini à l'appel,
en le notant dans l'entête de la fonction : paramètre = valeur
exemples :
function anomalie_mysql()
// affiche le message d'anomalie DE MySQL
{
echo "ERREUR DE MySQL : " . mysql_error() . "\n";
} // function

function puissance($valeur, $exposant = 2)


// renvoie $valeur a la puissance $exposant
// de valeur 2 si non precise a l'appel
{
return pow($valeur, $exposant);
} // function

 VARIABLE DÉFINIE DANS OU EN DEHORS DE LA FONCTION


dans une fonction, toute variable utilisée est a priori locale 2
une variable globale 3 s'accède via la déclaration spéciale global
exemple :
function nomposte()
// renvoie le nom dans l'internet du poste d'adresse
// placée dans la variable globale $numeroip
{
global $numeroip;
// nom si defini, numero IP sinon
$nom = gethostbyaddr($numeroip);
// renvoi du nom
return $nom;
} // function

1 Le passage de paramètre s'effectue par valeur, ou par référence si nom préfixé par & dans l'en-tête.
2 Une variable locale n'existe pas en dehors de la fonction où elle y apparaît.
3 Une variable globale existe en dehors de la fonction, dans le script en entier.

Système d'information avec PHP et MySQL - Page 49


CHAÎNES DE CARACTÈRES
 GUILLEMETS OU APOSTROPHES ?
soit entre guillemets (")
avec remplacement de(s) variable(s) par leur valeur
exemple : echo("Salut $id\n"); (avec $id à "Carotte")
affiche Salut Carotte suivi d'un retour-à-la-ligne
soit entre apostrophes (')
sans remplacement de variable présente dans la chaîne,
exemple : echo('Salut $id\n');
affiche Salut $id\n

 QUELQUES MANIPULATIONS DE CHAÎNES DE CARACTÈRE


• concaténation de chaînes : chaîne1 . chaîne2
• affichage d'une chaîne : echo(chaîne) ou print(chaîne)
on peut aussi utiliser echo sans parenthèses : echo chaîne
• renvoie une valeur sous la forme d'une chaîne : strval(valeur)
• renvoie la taille d'une chaîne : strlen(chaîne)
• renvoie une copie en lettres majuscules : strtoupper(chaîne)
• renvoie une copie en lettres minuscules : strtolower(chaîne)
• renvoie une copie sans espace en début et en fin : trim(chaîne)
• découpage selon un séparateur : explode(séparateur, chaîne)
avec renvoi d'un tableau des sous-chaînes extraites
ou, si séparateur introuvable, de la chaîne entière
exemple : explode(' ', 'Carotte du Jardin')
renvoie le tableau array('Carotte', 'du', 'Jardin')
• recherche d'une sous-chaîne : strstr(chaîne, motif)
avec renvoi de la sous chaîne débutant par la 1ère occurence de motif
ou d'une une valeur fausse si motif est introuvable
exemple : strstr('du', 'Carotte du Jardin')
renvoie 'du Jardin'
• extrait d'une chaîne : substr(chaîne, rang, taille)
avec renvoi de la sous chaîne débutant au rang (à partir de 0) et
de longueur maximale taille (ou jusqu'à la fin si taille absent)
exemple : substr('Carotte du Jardin', 8, 2)
renvoie 'du'
• remplacements : str_replace(motif, valeur, chaîne)
avec renvoi de chaîne avec toutes les occurence de motif
remplacées par valeur
exemple : str_replace('a', 'i', 'Ouh la la !')
renvoie 'Ouh li li !'

Système d'information avec PHP et MySQL - Page 50


CAS PARTICULIERS DE CHAÎNES
QUELQUES MANIPULATIONS LIÉES À HTML ET À MYSQL
 CAS PARTICULIERS
Certains caractères sont malvenus dans des données
éviter les apostrophes dans une donnée pour SQL
Elimination de balises pour éviter des effets imprévus
cas de transformations automatiques à l'affichage, comme un
exemple noté en HTML dans un texte à afficher tel que

 FONCTIONS DE TRANSFORMATION DE TEXTE 1


htmlspecialchars(texte)
renvoie texte avec le codage en HTML respectivement
de « & < > " » par &amp; &lt; &gt; &quot;
exemple : & dé <br> en &amp; dé &lt;br&gt;
htmlentities(texte)
renvoie texte avec le codage en HTML respectivement
de « & < > " » par &amp; &lt; &gt; &quot;
et de tout caractère du code ISO 8859-1 (hors ASCII de base)
exemple : & dé <br> en &amp; d&eacute; &lt;br&gt;
addslashes(texte)
renvoie texte avec ajout de « \ » devant ' \ "
exemple : c'est extra en c\'est extra
stripslashes(texte)
renvoie texte avec la suppression des codages avec « \ »
exemple : c\'est extra en c'est extra
quotemeta(texte)
renvoie texte avec ajout de « \ » devant . \ + * ? [ ^ ] ( $ )
exemple : $n = 1.4 * TAUX; en \$n = 1\.4 \* TAUX;
strip_tags(texte)
renvoie texte avec la suppression des balises d'HTML ou PHP
exemple : <p>Section</p> en Section
urlencode(texte)
renvoie texte avec codage pour envoi dans une URL
exemple : z1=Zo Ro&z2=été en z1=Zo+Ro&z2=%E9t%E9
urldecode(texte)
renvoie texte avec décodage après envoi dans une URL
exemple : z1=Zo+Ro&z2=%E9t%E9 en z1=Zo Ro&z2=été

1 Présentation simplifiée dans le cas de l'alphabet ISO 8859-1


Système d'information avec PHP et MySQL - Page 51
INFORMATIONS FOURNIES PAR LE SERVEUR
INFORMATIONS LIÉES À L'ENVIRONNEMENT DU SCRIPT 1

 INFORMATIONS ISSUES D'UN APPEL (CGI) 2

donnée envoyée par la méthode GET : $_GET['nom de donnée']


donnée envoyée par la méthode POST : $_POST['nom de donnée']
information transmise via CGI : $_SERVER['nom de variable']
exemples :
$nom = $_GET['znom'];
$resume = $_POST['zresume'];
$adresse_client = $_SERVER['REMOTE_ADDR'];
$navigateur = $_SERVER['HTTP_USER_AGENT'];
$adresse_serveur = $_SERVER['SERVER_ADDR'];
$methode_envoi = $_SERVER['REQUEST_METHOD'];

 INFORMATIONS SUR LA SESSION EN COURS


activation initiale du mécanisme de session : session_start()
donnée conservée pour la session : $_SESSION['nom de donnée']
exemples :
session_start(); $etat = $_SESSION['etat'];

 INFORMATIONS DIVERSES
URL relative de la page en cours : $_SERVER['PHP_SELF']
exemple : /cgi-bin/mouchard.pl
chemin réel du fichier de la page : $_SERVER['SCRIPT_FILENAME']
exemple : /usr/lib/cgi-bin/mouchard.pl
variable dans l'environnement d'exécution : $_ENV[nom]
exemples :
$url_relative_page = $_SERVER['PHP_SELF'];
$chemin_fichier_page = $_SERVER['SCRIPT_FILENAME'];
$code_langue = $_ENV['LANG'] ? $_ENV['LANG'] : 'fr_FR';

1 Variables disponibles à tout niveau de codage, appelées « super-globales » car ne nécessitant pas
l'utilisation de la déclaration global au sein d'une fonction.
2 Il existe aussi $_REQUEST, un tableau associatif cumulant les informations de $_GET, $_POST et
$_COOKIE, mais son usage est déconseillé car source d'ambiguïté et de risques de piratage.
Système d'information avec PHP et MySQL - Page 52
MANIPULATIONS DE DATE ET HEURE
 HORODATE
temps écoulé en secondes depuis le 1er janvier 1970 : time()
horodate pour une heure et-ou date particulière :
mktime(heure, minutes, secondes, mois, jour, année)
détails (tableau associatif) d'une horodate : getdate(horodate)
ou pour les date et heure courantes : getdate()
avec comme champs disponibles dans le tableau associatif :
• "hours" : heure (0 à 23)
• "minutes" : minutes (0 à 59)
• "seconds" : secondes (0 à 59)
• "mday" : jour dans le mois (1 à 31)
• "wday" : jour dans la semaine (0 - dimanche, à 6 - samedi)
• "weekday" : nom du jour ("Sunday" à "Saturday")
• "yday" : jour dans l'année (compté à partir de 0 : 0 à 365)
• "mon" : mois dans l'année (1 à 12)
• "month" : nom du mois ("January" à "December")
• "year" : année (sur 4 chiffres)
exemple :
$horodate_depart = mktime(0, 0, 0, 9, 1, 2009);
$temps = getdate( $horodate_depart - time() );
$nb_mn = ($temps["hours"] * 60) + $temps["minutes"];
echo "Temps écoulé depuis 1er IX 2009 : " . $nb_mn . "mn";

 DATE ET HEURE EN CLAIR


date et-ou heure en clair courantes : date(format)
ou pour une horodate donnée : date(format, horodate)
avec format une chaîne pouvant notamment comprendre :
• H ou G : heure universelle ('00' à '23', ou '0' à '23')
• h ou g : heure à l'anglo-saxonne ('01' à '12', ou '1' à '12')
• i : minutes ('00' à '59)
• s : secondes ('00' à '59)
• w : jour de la semaine (de '0' dimanche, à '6' samedi)
• d ou j : jour du mois ('01' à '31', ou '1' à '31')
• m ou n : mois ('01' à '12', ou'1' à '12')
• y ou Y : année, à 2 ('01') ou 4 chiffres ('2001')
• symbole autre qu'une lettre : affiché tel que
exemple : echo( date('H:i:s') . ' le ' . date('d-m-Y') );

Système d'information avec PHP et MySQL - Page 53


INDEX
bool, 42
--, 45 [, 51 break, 46
[], 47
', 30, 41, 50, 51 case, 46
\n, 8, 28, 41 CGI, 52
!, 44 chaîne de caractère, 50
!=, 44 ], 51 chaîne, concaténation, 50
!==, 44 chaîne, taille, 50
^, 51 choix multiple, 46
", 41, 50, 51 class, 42
", 41 {}, 45 combinaison, 11
", 51 commentaires, 40
"", 43 |, 44 comparaison, 11
||, 44 composant, 35
#, 40 concaténation, 8
+, 51 constantes, 43
$, 40, 51 ++, 45 continue, 46
$_ENV, 52 conversion, 12
$_GET, 9, 52 <, 11, 44, 51 conversions de type, 42
$_POST, 52 <?, 39 count, 47, 48
$_REQUEST, 52 <?=, 39
$_SERVER, 52 <?php, 5, 39 date, 16, 51, 53
$_SESSION, 52 <<<, 41 déclaration, 43
<=, 11, 44 décrémentation, 45
%, 44 <>, 44 default, 46
<script>, 39 define, 43
&, 44, 51 defined, 43
&&, 44 =, 45 delete, 30
&amp;, 51 ==, 11, 44 die, 45
&gt;, 51 ===, 44 différent, 11
&lt;, 51 =>, 47, 48 do, 46
&quot;, 51 do while, 18
>, 11, 44, 51 double, 42
(, 51 >=, 11, 44
e, 41
), 51 0x, 41 each, 48
echo, 8, 45, 50
*, 51 addslashes, 51 égal, 11
affichage, 45 else, 11, 45
., 44 and, 44 elseif, 45
apostrophe, 30, 41, 50 erreur, contrôle, 44
/* */, 40 appel, 13 et, 11
//, 40 array, 42, 47 exit, 45
array_key_exists, 48 explode, 50
:, 44 array_keys, 48 expression conditionnelle,
array_search, 48 44
;, 40 auto_increment, 30
false, 43
?, 44, 51 balise, 51 faux, 11, 43
bloc, 45 float, 42
@, 44 Bluefish, 6 fonction, 13, 49
Système d'information avec PHP et MySQL - Page 54
for, 18, 46 MySQL, ajout, 30 SQL, chaîne, 30
foreach, 47, 48 MySQL, modification, 30 SQL, interrogation, 29
function, 13, 49 MySQL, suppression, 30 SQL, select, 29
mysql_affected_rows, 30 squelette, 23, 24
GET, 52 mysql_close, 22 str_replace, 50
getdate, 53 mysql_connect, 22 string, 42
gethostbyaddr, 4 mysql_error, 22 strip_tags, 51
global, 49, 52 mysql_fetch_array, 29 stripslashes, 51
guillemets, 41, 50 mysql_fetch_row, 29 strlen, 50
mysql_insert_id, 30, 31 strstr, 50
heure, 53 mysql_num_rows, 29 strtolower, 50
hexadécimal, 41 mysql_query, 22, 29 strtoupper, 9, 50
horodate, 53 mysql_select_db, 22 strval, 50
HTML, 51 substr, 50
htmlentities, 51 négation, 11 super-globales, 52
HTML-Kit, 6, 7 noms de variable, 40 switch, 46
htmlspecialchars, 51 Notepad++, 6
HTTP_USER_AGENT, 4 null, 43 tableau, 17, 47
tableau associatif, 48
identificateur, 40 object, 42 tableau, ajout, 47
identité, 44 octal, 41 tableau, création, 47
if, 11, 45 or, 11, 44 tableau, égalité, 44
in_array, 47 ou, 11 tableau, taille, 47
include, 35, 40 ou exclusif, 11 tableau, tri, 47, 48
include_once, 40 tableau, union, 44
Incrémentation, 45 paramètre, 13, 49 tant que, 18
indice, 17 php, 39 test, 11
insert, 30 PHP_SELF, 52 time, 53
int, 42 portée, 43 trim, 50
integer, 42 POST, 52 true, 43
is_array, 42 pour, 18 types, 42
is_bool, 42 print, 45, 50
is_float, 42 print_r, 45 unset, 43
is_int, 42 update, 30
is_null, 43 quotemeta, 51 URL, 51
is_numeric, 12 urldecode, 51
is_string, 42 real, 42 urlencode, 51
ISO 8859-1, 51 REMOTE_ADDR, 4
isset, 9, 43 répéter jusqu'à, 18 valeurs logiques, 43
itération, 46 require, 40 variable, 43
require_once, 24, 40 variable globale, 49
ksort, 48 return, 13, 49 variable locale, 49
rsort, 47 vrai, 11, 43
language, 5
ligne vide, 40 script, 5 while, 18, 46
list, 48 SCRIPT_FILENAME, 52
session, 52 xor, 11, 44
mktime, 53 session_start, 52
MySQL, 22 sort, 47

Système d'information avec PHP et MySQL - Page 55


Sommaire

Principales opérations en MySQL ...................29


INTRODUCTION À PHP ...........................................2
Principales opérations en MySQL (fin) ............30
Cas d'accès à une base de données ................3
Exemples d'opérations en MySQL ..................31
Exemple n°1 : identification....................... ........4
De PHP à XHTML via MySQL.........................32
Scripts en PHP d'identification ..........................5
Exercice de l'ajout d'un produit........................33
Ajout d'un script en PHP avec HTMLKit............6

Adaptations de HTMLKit pour PHP...................7 COMPLÉMENTS SUR PHP .....................................34

De PHP à XHTML .............................................8 Mélanger du code PHP avec du code XHTML35

Exemple n° 2 : destinataire de formulaire .........9 Page d'identification pilotee par PHP ..............36

Script du destinataire de formulaire ................10 Page d'identification avec composants ...........37

Contrôles de données en PHP........................11


PRÉSENTATION DU LANGAGE PHP........................38
Contrôles de données en PHP (suite).............12
Aperçu sur PHP...............................................39
Fonction en PHP .............................................13
Syntaxe générale.............................................40
Exercice du message......................................14
Notations de valeurs........................................41
Exemple n° 3 : calendrier .......................... ......15
Valeurs particulières et types ..........................42
Dates en PHP .................................................16
Constantes et variables ...................................43
Tableaux en PHP ............................................17
Principales expressions...................................44
Itérations en PHP ............................................18
Principales instructions....................................45
Exemple d'itération en PHP ............................19
Principales instructions (suite).........................46
Exercice de la liste dynamique........................20
Tableaux..........................................................47

PHP ET MYSQL..................................................21 Cas des tableaux associatifs...........................48

MySQL et PHP ................................................22 Fonctions .........................................................49

Squelette de script en PHP pour MYSQL .......23 Chaînes de caractères ....................................50

Squelette avec fonctions .................................24 Cas particuliers de chaînes .............................51

Fonction pour la base......................................25 Informations fournies par le serveur................52

Cas de la base de donnée de la coopérative..26 Manipulations de date et heure .......................53

Exemple n°4 : consultation en MySQL............27 Index................................................................54

Exemple n°4 : résultats ............................ .......28

Système d'information avec PHP et MySQL - Page 56

Vous aimerez peut-être aussi