Les formulaires - MySQL en action

Une des principales utilisations de PHP et raisons de son succès est la facilité qu’il procure au webmestre pour traiter les données envoyées par un formulaire. Le formulaire, comme le courriel, est un des vecteurs principaux de la communication entre les internautes et le webmestre du site.

  PHP gère les données du formulaire de manière transparente. Il crée automatiquement les variables à partir des noms utilisés pour qualifier les champs du formulaire. Il entrepose ces variables dans un tableau de portée globale. C’est-à-dire que ces variables peuvent être appelées directement depuis n’importe quelle partie de l’application.

  L’inscription au club

Dans une page d’accueil, vous ferez la promotion de votre club. Elle
contiendra un lien qui permettra de rejoindre la page d’inscription. Cette
dernière sera un formulaire.

Les visiteurs d’un site sont méfiants, à juste titre. Ils peuvent hésiter à
donner leurs coordonnées à quelqu’un qu’ils ne connaissent pas.
Rassurez-les sur la confidentialité de ces données et la possibilité pour eux
de supprimer leur profil, le cas échéant.

Le fichier de connexion à la base
Nous avons vu précédemment que pour accéder à la base de données, il
fallait un nom d’utilisateur et un mot de passe. Si vous avez besoin de cet
accès dans votre page, saisissez les lignes suivantes :


<?
$dbname = ’nom_base’;
$hostname = ’localhost’;
$username = ’nom_utilisateur’;
$password = ’mot_de_passe’;
if (!$id_link = mysql_connect($hostname, $username, $password)) {
echo ’Connexion impossible à mysql’;
exit;

}
if (!mysql_select_db($dbname, $id_link )) {
echo ’Sélection de base de données impossible’;
exit;
} ?>




Ces quelques lignes composent votre fichier de connexion. Sur votre site,
vous allez créer un répertoire nommé commun. Dans ce répertoire, vous
placerez tous vos programmes (fichiers inclus et fonctions). Ce fichier qui
est un fichier inclus dans toutes les pages demandant une connexion à la
base de données, s’appellera connexion.inc.php. inc est l’abréviation de
include. Ce type d’architecture est pratique car elle facilite la migration
d’une application d’un serveur vers un autre. Ainsi, il vous sera facile de
transporter votre application, de votre serveur de test sur votre machine
personnelle à celui de l’hébergeur, sans faire de changement majeur. Il
vous suffira de modifier ce fichier.


La fonction mysql_connect() renvoie l’identifiant de connexion MySQL
en cas de succès et FALSE si la connexion n’a pu se faire. Par les deux
conditions (if…), l’action est générée et si la fonction renvoie FALSE, le
bloc conditionnel est exécuté. Le message affiché en cas d’échec de la
connexion ou de la sélection de la base de données est minimal, il vous
appartient de le personnaliser et de l’agrémenter.






sauvegarde base de données - MySQL en action

sauvegarde base de données
Transportons maintenant la base de données de votre machine sur votre nouveau site.

programmationdebutant
sauvegarde base de données
Avec PHPmyAdmin, il est simple et pratique de sauvegarder la base. Il vous suffit d’aller dans la rubrique Affıcher le schéma de la base. Vous avez alors le choix de son contenu, soit uniquement la structure, la structure et les données, ou encore les données seulement. Ensuite, vous  avez la possibilité de d’enregistrer la base sur votre disque dur en fichier texte ou compressé. Faites une sauvegarde régulière. Sinon, en cas de problèmes, vous ne récupérerez peut-être pas les internautes inscrits depuis la dernière sauvegarde.

Les jointures de tables - MySQL en action



Pour afficher un résultat lisible, vous utilisez la requête SELECT en y incluant une jointure de table :

SELECT * from membres, pays where membres.pays=pays.code


Ici le signe * indique que tous les champs sont sélectionnés. Pour prendre en compte uniquement certains champs, il faut les nommer. Si les tables ont deux champs qui portent le même nom, il est nécessaire de nommer aussi les tables. Nous conseillons de le faire systématiquement, dans le cas des jointures, pour ne pas rencontrer de mauvaises surprises. Ainsi pour sélectionner tous les champs sauf la date de mise à jour, il faudrait écrire la requête suivante :

Les clés étrangères - MySQL en action


La meilleure façon de créer une homogénéité est de proposer des choix à travers des menus déroulants. Ainsi l’internaute ne tape rien. Il choisit et n’entraîne pas d’erreur.

Nous allons créer dans la base une deuxième table renfermant tous les pays du monde. Cette table est composée de deux colonnes. La première est un code de trois lettres, la seconde le nom du pays.


CREATE TABLE pays (
code char(3) NOT NULL default ’’,
nom varchar(100) NOT NULL default ’’,
PRIMARY KEY (code),
UNIQUE KEY code (code)
)


Vous trouverez les données pour créer une table sur le site www.microapp.com.

Modification d’une table - MySQL en action


En imaginant votre site, vous vous apercevez que vous aimeriez ajouter la date d’inscription de chaque membre.

Avec MySQL, deux options existent pour la date. Soit vous entrez une date, soit vous utilisez un format qui la crée automatiquement. Cette dernière option évite de créer une donnée pour l’insérer et économise du
code. Il s’agit du type TIMESTAMP. L’inconvénient majeur de ce format de colonne est que si vous modifiez une donnée dans la ligne, comme par exemple l’e-mail, le champ modifiera aussi la date. C’est pourquoi nous conseillons l’autre option de date.

Nous pouvons mettre les deux types de colonne. Ainsi, nous saurons si le membre du club a modifié ses données, donc s’il est actif dans le club.

Pour insérer ces deux champs, nous utiliserons la commande ALTER. Les champs s’appelleront date_inscription et date_misajour :

Création d’une table - MySQL en action


Sachez qu’il est intéressant dans une table de créer une clé unique qui identifie chaque nouvelle ligne. MySQL propose une fonction AUTO_INCREMENT qui permet de créer automatiquement une clé qui
s’incrémente de 1 à chaque nouvelle ligne. Chaque nom d’usage dans le club sera unique puisqu’il identifiera un membre, donc nom_usage peut servir de deuxième clé, de clé secondaire Pour créer la table, nous devons définir le type de chaque donnée et sa longueur.

Le nom d’usage est une chaîne de caractères dont nous pouvons limiter la
longueur à 25 caractères. Le mot de passe et le prénom sont de même type,
avec une longueur de 20 pour le mot de passe et de 25 pour le prénom.


Le code postal est constitué en France d’une série de cinq chiffres. Cette
donnée peut donc être de type numérique. Il vaut mieux lui donner un type
"chaîne de caractères" car des Québécois seront peut-être intéressés par
votre club (leur code postal est composé de lettres et de chiffres).
D’ailleurs, les neuf premiers départements français sont précédés d’un 0.
En règle générale, les codes postaux, les numéros de téléphone… sont de
type texte car ils ne sont pas des nombres mais des codes. Nous pourrions utiliser les accents pour les noms de champ MySQL. Nous les éviterons cependant pour préserver l’homogénéité des noms.

Conception de l’application du club - MySQL en action

Vous disposez d’une base de données MySQL vide. Une base de données
sert à classer les informations en vue de les retrouver facilement et
d’opérer des rapprochements entre elles afin d’avoir des statistiques.

Les données sont ce qu’il y a de plus important. Tout développeur commence
par là. Le site n’est ensuite là que pour présenter et traiter ces données.

La première information concerne l’identité des membres et leurs coordonnées:

* nom,
* prénom,

Le fichier face à la base de données - MySQL en action

Le fichier est fragile. Vous devez créer un double de votre fichier car tout
fichier peut être vidé par un accès simultané. Il faut donc en verrouiller
l’accès avec un verrou logiciel que le langage PHP fournit.

Votre séparateur doit être un signe que vous n’utilisez jamais, pour qu’on
ne le confonde pas avec un élément de votre texte.

La base de données est gratuite et proposée par tous les hébergeurs. Elle
est robuste (en particulier MySQL) et rapide. De plus, elle propose des
fonctions qui économisent des lignes de code. L’application de ce chapitre
vous permettra de mieux comprendre tout cela.

MySQL en action

MySQL en action

Nous allons bientôt pouvoir nous aventurer en ligne. Mais avant cela,
revenons à notre internaute qui souhaite créer son club des Bon Vivants.
Il va lui falloir mettre de l’ordre dans ses idées car avec MySQL, il passe
à la vitesse supérieure.

MySQL a été créée par Michael Widenius de la société TcX, en réaction à
certaines insuffisances de la base de données mSQL. La version 1.0 sort en
mai 1995. Son créateur décide de la distribuer gratuitement via Internet.

L’emploi d’une base de données est lié à l’utilisation des formulaires et à
la nécessité de classer les informations données par l’internaute. Il est bien
sûr possible d’employer un simple fichier texte avec un séparateur entre
les champs mais cette solution comporte plusieurs inconvénients.



Récapitulatif pour votre application - Les clefs du PHP

Vous avez créé un fichier fonctions.inc.php dans lequel vous avez inséré
votre fonction majuscules(). Maintenant, vous allez si vous le désirez y
insérer les fonctions date_nombre(), nombre_date(), affiche_date
_locale(), affiche_mois() et affiche_jour(). Nous vous encourageons
à les modifier comme bon vous semble, pour les adapter dans leur forme d’affichage ou leur contenu. Si vous vivez à Montréal et que votre serveur est sur un autre fuseau horaire, votre décalage avec l’heure GMT
sera plutôt -5 en hiver que +1, etc.

Nous verrons dans le chapitre 4 comment insérer ces fonctions dans les
fichiers de votre application avec une seule ligne de code. Après la clôture
de ce chapitre, nous étudierons le traitement des formulaires et leur
vérification.

Afficher vos date et heure locales - Les clefs du PHP

Le programme proposé ici est l’occasion de revoir des fonctions imbriquées
ainsi que d’autres notions telles que les dates, les tableaux et
l’opérateur de contrôle d’erreur.

Pour afficher le jour de la semaine en français, nous créons un tableau car
le jour est un nombre de 0 à 6 en partant du dimanche. Le paramètre
envoyé $moment est un timestamp que nous calculons avant l’appel.

Nous tenons compte du décalage avec l’heure GMT pendant l’heure
d’hiver. L’heure d’hiver commence le dernier dimanche d’octobre à 1h
GMT et finit le dernier dimanche de mars à 1h GMT.

Les fonctions récursives - Les clefs du PHP

Une fonction peut s’appeler elle-même, de façon récursive. Nous allons le
voir avec une suite de Fibonacci. Pour la petite histoire, Leonardo
Fibonacci
était un moine italien qui vivait 250 ans avant Léonard de Vinci.

Il avait remarqué que les végétaux respectaient une suite dans leur
croissance. Ainsi, les pétales de fleurs ou les feuilles sur les arbres
observaient une sorte de règle. Il en fit une fonction mathématique. Cette
fonction génère un nombre en faisant la somme des deux précédents. Les
deux premiers sont 0 et 1 puis 0+1=1; 1+1=2; 2+1=3 ; 3+2=5… Si vous
continuez, vous parviendrez rapidement à des nombres vertigineux.
Voici la fonction :

Les fonctions imbriquées - Les clefs du PHP

Il est intéressant, parfois, de créer une fonction pour appeler plusieurs
fonctions. Ainsi, lorsque vous relirez votre programme, vous obtiendrez
une sorte de hiérarchie de fonctions.

Nous pourrions avoir, par exemple :

function verif_id ($login, $motdepasse, $table){
connexion_base();
recherche_dans_table($table, $login, $motdepasse);
}

La portée d’une variable dans une fonction - Les clefs du PHP

Une variable à l’extérieur d’une fonction possède une portée limitée à la
périphérie de la fonction, c’est-à-dire que la variable n’existe pas dans ce
périmètre. Seuls un ou plusieurs paramètres seront envoyés dans la
fonction par l’intermédiaire des parenthèses, mais le nom de la variable
n’a aucune importance. C’est d’ailleurs ce qui fait son intérêt.

Parfois cependant, il est intéressant de récupérer une variable qui existe
dans la même page en dehors de la fonction. Pour cela, il est possible
d’utiliser le mot-clé global afin que la portée de la variable se situant à
l’extérieur de la fonction soit étendue à toute la page.

Dans l’exemple cité précédemment, il est possible de mettre les séparateurs
avant la fonction pour une meilleure visibilité :

Les fonctions - Les clefs du PHP

La fonction est une unité de programme enfermée à l’intérieur d’accolades
avec comme entrée, des parenthèses. Nous verrons cependant qu’une
variable déclarée global peut agir à l’intérieur de la fonction.

Le rôle de la fonction
En PHP, vous pouvez utiliser des fonctions c’est-à-dire de petits programmes
dédiés à une tâche. Une fonction est autonome, elle reçoit ou non des
paramètres et exécute son code, puis retourne le résultat à l’expression qui
l’a appelée.

L’intérêt de ces programmes est que vous n’avez pas besoin de faire à
chaque fois un couper/coller dans vos applications pour récupérer ces
petits morceaux de programme, il vous suffit de les appeler. Ainsi, vos
programmes sont plus lisibles. Quand vous traitez une variable dans une
fonction, vous n’avez pas besoin de connaître le nom de la variable
utilisée par la fonction.

Mathématiques - Les fonctions de PHP - Les clefs du PHP

La valeur PI

Valeurs mathématiques



Constante ou fonction
Valeur
Description
M_PI
3.1415926535898
Constante avec une valeur approximative en 14 décimales
pi()
3.1415926535898
Fonction identique


Les nombres pseudo-aléatoires

Ces nombres sont qualifiés de pseudo-aléatoires car ils sont générés par
une simulation, à partir d’un algorithme mathématique. Ces fonctions
génèrent des séquences temporelles de chiffres.

Variables - Les fonctions de PHP - Les clefs du PHP

Les variables servent souvent de témoins dans vos applications et décident, selon leur existence ou leur valeur, de l’exécution d’un bloc de code.

Les variables



Fonction
Description
empty()
Évalue si la variable est non initialisée ou égale à 0.
isset()
Évalue si la variable est initialisée.
unset()
Désaffecte la variable.
gettype()
Retourne le type de la variable.
is_array()
Évalue si la variable est de type tableau.


Chaînes de caractères - Les fonctions de PHP

Vous avez ici le catalogue des fonctions les plus courantes de PHP. Pour
les autres, vous pourrez consulter le manuel en ligne (voir annexe). Le but
n’est pas de reproduire la documentation du langage PHP mais de vous
proposer les fonctions les plus utiles.

Chaînes de caractères
Comme le type string est le type principal en PHP, vous serez souvent
amené à utiliser les fonctions qui manipulent les chaînes de caractères. En
voici quelques unes :

Les boucles - Les clefs du PHP

Qu’est-ce qui identifie un langage comme langage de programmation ? La
boutade est de répondre que ce sont les boucles et nous ne sommes pas
loin de la vérité. Vous êtes sûr de les utiliser dans vos programmes et bien
souvent, elles seront au coeur de vos algorithmes.

Les boucles permettent d’exécuter un bloc d’instructions autant de fois
qu’il est nécessaire. On utilise un index initialisé qui s’incrémente à
chaque boucle. Dans l’intitulé, on insère une condition de sortie de boucle.

La boucle while
while (expression est vrai){
Bloc instruction
}

Vous pouvez utiliser une expression déjà initialisée ou en créer une avec
une nouvelle variable numérique (en général, on l’appelle i comme

Les structures de contrôle - Les clefs du PHP

Les structures de contrôle sont caractérisées par des parenthèses parfois
accompagnées d’accolades. Elles évaluent la validité d’une expression et
décident de l’exécution ou non d’une partie du programme.

Les tests
Les tests sont déclenchés par l’expression if ou switch.

If

if est un aiguillage. Le moteur PHP, comme un train, suit la ligne du
programme jusqu’à l’aiguillage qui teste sa variable et en fonction de sa
réponse, le fait bifurquer dans telle ou telle direction.

Voici la forme commune d’un if :

2 - Les opérateurs - Les clefs du PHP

Les opérateurs de contrôle d’erreur
En PHP, les erreurs sont signalées sur la page directement avec le nom du
fichier et le numéro de ligne d’où l’erreur provient. Nous verrons dans le
chapitre Mettre de l’ordre que le numéro de la ligne ou le nom du fichier
peuvent être différents de celui qui est indiqué pour des raisons que nous
éclaircirons, mais en général il est assez précis. Par contre, nous n’avons
pas forcément intérêt à ce qu’un visiteur y accède. C’est pourquoi avant
de mettre en ligne vos pages, vous ferez des tests approfondis puis
utiliserez l’opérateur @. Il est collé devant une fonction.

Nous l’utilisons surtout pour les fonctions de connexion avec les bases de
données. Voici par exemple une fonction que nous verrons dans le chapitre
suivant :

$resultat=@mysql_db_query($dbname,$sql,$id_link);