|
La premère chose à faire avant de pouvoir interroger une base de données est de créer un certain nombre de tables.
Pour celà, 2 possiblités : soit se servir de PHPMyAdmin, soit écrire un petit fichier PHP qui s'en chargera.
Après avoir réflechi à la structure de cette table voici comment la créer en PHP.
Listing qui créé la table "matable":
Dans ce début de listing, il faut déclarer les éléments nécessaires à la connexion au serveur MySql. Free ne permet d'avoir qu'une seule base de données
qui contiendra vos tables dont le nom est votre login chez free (login qui compose également votre URL http://monnom.free.fr). La quatrième ligne
ne doit pas être modifiée elle correspond à l'adresse du serveur MySql chez Free.
Listing qui créé la Table "mabase" (suite):
Quelques explications : on utilise la fonction mysql_connect() pour se connecter au serveur, on lui passe en argument
3 chaines, SERVEUR, NOM et PASSE définis plus haut. Si la connexion est réussie mysql_connect() renvoie un identifieur de lien
que l'on stocke dans la variable $link.
On test la variable $link et on affiche un message de succès ou d'echec de connexion suivi du message d'erreur en utilisant
mysql_error().
Avec la fonction mysql_select_db() nous allons choisir la base de données à laquelle nous voulons nous connecter. (chez free nous n'avons
pas le choix, elle est unique et définie dans BASE). On va donc passer en argument à cette fonction le nom de la base de données ainsi que l'identificateur de lien
$link récupéré lors de la connection au serveur.
Nous pouvons enfin envoyer notre requête de création de la table grâce à mysql_query(), on lui passe en argument la variable $requete qui
contient la structure de la table et l'identificateur de lien $link.
Détails de la requête : on va définir les champs, leur type et leur contrainte. On utilise l'instruction CREATE TABLE
suivi du nom que l'on veut lui donner. Ensuit on donne un nom au premier champs (par ex:NOM) puis son type et sa longueur (par ex:VARCHAR(20))
et sa contrainte (par ex:NOT NULL). Ainsi de suite pour tous les champs de la table.
Les principaux types de champs :
CHAR chaine de caractères de longueur fixe indiquée.
VARCHAR chaine de caractères de longueur variable inférieur ou égale au max indiqué.
INT Nombre entier.
FLOAT Nombre réel en virgule flottante.
DOUBLE Nombre réel en virgule flottante double précision.
DATE Date sous la forme AAAA-MM-JJ.
TIME Heure sous la forme HH:MM:SS.
BLOB Objet binaire de grosse taille comme image ou audio.
Les principales contraintes :
NOT NULL Le champ doit toujours avoir une valeur.
AUTO_INCREMENT ne s'applique qu'aux champs de type INT et signifie que si le champ ne contient pas de valeur, il recevra un nombre automatiquement incrémenté a chaque nouvelle entrée.
Un seul champs par table peut être auto-incrémenté.
PRIMARY KEY le champ sera utilisé comme clé primaire, unique dans une table.
(par ex:PRIMARY KEY(nom_du_champ))
FOREIGN KEY signifie que le champ fait référence au champ d'une autre table.
(par ex:FOREIGN KEY (nom_du_champ) REFERENCES autre_table)
|
|
Maintenant que la table est créée, on va pouvoir y insérer des enregistrements. La table que l'on vient de créer
contient les champs NOM, PRENOM, DATE et NOTE, on va supposer qu'elle contiendra les résultats d'un examen entrés par
le professeur. On ne tiendra pas compte du champ DATE.
Listing qui insère un enregistrement dans la table "matable":
Et bien oui celà débute toujours de la même façon, on définit les paramètres de connection,
on se connecte au serveur puis à la base.
Listing qui insère un enregistrement dans la table "matable" (suite):
Et voilà en trois lignes c'est fait!
Autre solution:
Cette fois on utilise INSERT INTO suivi du nom de la table où l'on va insérer l'enregistrement puis SET du nom du champ et du contenu
qu'on veut lui donner (par ex:nom="DUBOSC"). Dans notre cas il y a trois champs à remplir, on les sépare par une virgule.
Il serait intéressant de remplir les champs par l'intermédiaire d'une page contenant un formulaire pour plus de facilité.
|
|
On sait maintenant créer une table, insérer des éléments dans cette dernière mais jusque là rien de très parlant
en ce qui concerne la visualisation et l'exploitation de cette table.
Il est temps maintenant d'aller lire les champs de la table et de les afficher.
Listing qui lit et affiche les champs de la table "matable" :
C'est la commande SELECT qui s'occupe de récupérer les champs voulus. Ici on l'utilise dans sa plus simple expression,
l'étoile (*) signifie que l'on veut tous les champs d'un enregistrement. Si on ne veut sortir que quelques champs il suffit de remplacer l'etoile par
le nom du champ (par ex: SELECT NOM FROM matable). Le FROM sert à indiquer dans quelle table va être faite la requête.
L'instruction mysql_fetch_array() reçoit en argument la variable $result contenant le résultat de la recherche et renvoie
un tableau associatif contenant la valeur des champs repérés par des clés égales au nom de chacun des champs.
On utilise une boucle while pour parcourir le tableau obtenu et en afficher le contenu.
Le second argument définit le type de tableau renvoyé:
MYSQL_ASSOC Tableau associatif.
MYSQL_NUM Tableau indexé numérique.
MYSQL_BOTH Tableau indexé des 2 façons.
|