Tutorial PHP/Mysql


Copyright 2001 Ken Le Prado- Utt Net Group




Table des matières

1.Introduction au PHP 2

2.Premiers Pas 3

Insertion du php dans une page : 3

Affichage d'un texte : 3

Comparateurs : 3

Structures de contrôle 3

Test logique 3

Boucle While 4

Boucle for 4

Tableaux 4

Inclure un fichier 4

Utilisation des formulaires 4

Utilisation des URL 5

3.Introduction Mysql 5

Création d'une table 5

Insertion d'enregistrement 6

Affichage des enregistrements 6

Modifier un enregistrement 6

Effacer un enregistrement 7

Effacer la table 7

4.Manipulation des tables Mysql avec php 7

Insérer un enregistrement : 7

Affichage des enregistrements 7

5.Exemple : Script de carnet d'adresse 8





  1. Introduction au PHP


Le php est un langage ressemblant au C, interprété non pas par le navigateur (comme le HTML), mais par le serveur. Pour que le serveur sache qu'il s'agit d'un fichier à interpréter, il faudra nommer votre fichier en : .php ou .php3 selon la configuration du serveur web.


  1. Premiers Pas

Insertion du php dans une page :

Le php offre des fonctions supplémentaires par rapport à un langage interprété par le navigateur. En effet, php permet de créer des images (ex : diagrammes) générer des pdf, flash, écriture dans des fichiers... et une interface avec les bases de données, en particulier Mysql, que l'on abordera.


<html>

<body>

<?

$pagetitle = “Mon premier script“; //Affectation d'une variable

echo $pagetitle ; //Affichage de la varible

?>

</body>

</html>


Ici, on a d'abord déclaré que l'on allait faire du php avec une balise : <? ?> équivalente à <?php ?> ou encore à <script language=“php“> </script>

Attention : le ; est obligatoire en fin de toutes les lignes. C'est le séparateur d'instruction.

Le signe $ permet de dire qu'il s'agit d'une variable. Il est également obligatoire.

Les commentaires, utiles pour débugger et pour se retrouver dans les scripts sont : // ou # pour commenter une ligne unique et /* */ pour un commentaire multiligne.


Affichage d'un texte :

$nom = “toto“;

echo “Hello $nom“; //Hello toto

echo 'Hello $nom'; //Hello $nom

echo 'Hello '.$nom; //Hello toto

Caractères spéciaux : \“ (Guillemets) \n (nouvelle ligne)


Comparateurs :

== Égalité

> Inférieur Strict

< Supérieur Strict

<= Inférieur ou Égal

>= Supérieur ou égal

!= Différent

$nom = “toto“

$toto == “tata“ //Renvoi false

$toto != “tata“ //Renvoi true


Structures de contrôle

Test logique :

if (condition)

{A faire si condition est vrai }

else

{ A faire sinon}


if ($toto == 'Bill')

{echo 'Salut Bill';}

else

{echo $toto .'je ne te connais pas';}

Boucle While

Forme

while (condition)

{A faire tant que la condition est vraie}


Exemple

while($a<5)

{echo “$a“;

$a = $a+1; //Equivalent à $a++

}


Boucle for

Forme

for (Valeur initiale;Test de fin; pas)

{A faire si on est pas arrivé à la fin}


Exemple (équivalent au précédent)

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

{echo $i;}


Tableaux

$row[0] = “Dédé“;

$row[1] = “Bill“;

$row[3] = “Paul“;

est équivalent au tableau suivant :

Dédé

Bill


Paul


Inclure un fichier

Utile pour la configuration et pour le graphisme.

Forme :

include(nom du fichier);

ou require(nom du fichier);



Exemple :

include('config.php');


Utilisation des formulaires


<form action=“arrivee.php“>

<input type=“text“ name=“toto“>

<input type=“submit“ name=“envoi“ value=“Envoyer“>

</form>


Suite au remplissage du formulaire précédent, les variables dans la page 'arrivee.php' seront initialement :

$toto = 'Ce qu'on a remplit dans le formulaire';

$envoi = 'Envoyer';


Utilisation des URL

Si on fait appel à la page 'arrivee.php' et que l'on veut transmettre les valeurs $toto='tata' et $envoi='Envoyer', on écrira les lien suivant :

<a href=“arrivee.php?toto=tata&envoi=envoyer“>Lien</a>

Le ? Indique un passage de variables et & les séparent.



  1. Introduction Mysql


Mysql est un type de base de données au même titre que Oracle, ... Pour pouvez vous créer des bases qui comporterons elle-mêmes plusieurs Tables qui comporteront les données. En règles générale, les hébergeurs ne vous laisseront pas de choix et vous n'aurez accès qu'à une seule base.


Connexion à Mysql par un environnement en ligne de commandes :

MYSQL> Mysql -u utilisateur -p base


Création d'une table

Une table est un sorte de tableau, que l'on remplira par la suite avec des données. Mais avant toutes chose, on doit savoir quel type de donnée on va y insérer. Par exemple pour la création d'un carnet de téléphone :


Champ

Type

Numéro de fiche

Entier

Nom

30 Caractères

Prenom

40 Caractères

Date de naisance

Date

Numero de téléphone

20 Caractères

Donc on va créer une table qui ressemblera à :


Champ

Type

id

Integer

nom

Varchar(30)

prenom

Varchar(40)

ddn

Date

tel

Varchar(20)


Varchar(20) : Suite de 20 carcatères (ex : abcdefghijklmnopqrs)


Pour créer la table que l'on va appeler 'adresse', il suffira de taper la requête suivante :

CREATE TABLE adresse

(

id INT not null AUTO_INCREMENT,

nom VARCHAR(30),

prenom VARCHAR(40)

ddn DATE,

tel VARCHAR(20),

UNIQUE(id)

);


id est le champs qui va permettre de différencier les fiches. Par conséquent, il est assé pratique d'avoir un champs qui s'incrémente automatiquement pour éviter d'avoir un même id, d'où l'option auto_incrément. De plus, il est nécessaire d'indiquer à mysql les champs qui ne peuvent être dupliqué (en double) en écrivant unique(nom_du_champ).


Où taper les commandes ? Soit l'hébergeur vous permet de taper vos commandes dans une interface UNIX soit il vous propose des applications du type PhpMyAdmin qui permet d'exécuter des requêtes très simplement.


Une fois la table créée, vous pouvez afficher sa structure avec :

DESCRIBE adresse ;


Insertion d'enregistrement

Une table vide ne servant à rien, on va maintenant y insérer des valeurs :

INSERT INTO adresse VALUES('0','Clinton','Bill','1950-09-30','12.3265.2954');


La valeur '0' pour l'id signifie que l'id doit s'auto-incrémenter. Donc son id au final sera certainement différent de 0, mais en s'en moque.


Affichage des enregistrements

SELECT * FROM adresse; // On affiche tous les champs de la base adresse


SELECT nom,prenom FROM adresse WHERE ddn<'1980-01-01' ORDER BY nom DESC

// On n'affiche que les champs nom et prenom de la base adresse où la date de naissance est inférieure au 1er Janvier 1980 et trié par nom décroissant.


Modifier un enregistrement

UPDATE adresse SET tel='0215435123' WHERE nom='toto';

On modifie le numéro de téléphone de tous les enregistrements de la table adresse dont le nom est toto.


On peut utiliser les tests de sélection suivants :

WHERE nom='toto' Contient exactement 'toto'

WHERE nom LIKE '%toto%' Contient 'toto' dedans

WHERE nom LIKE '%toto' Se finissant par 'toto'

WHERE nom LIKE '_toto%' Commencant par 'toto' avec un seul carcatère en premier



Effacer un enregistrement

DELETE FROM adresse WHERE ddn < '2000-01-01'; Efface tous les enregistrements avant le 01/01/2000


Effacer la table

DROP TABLE adresse Efface la table adresse


  1. Manipulation des tables Mysql avec php


<?

$serveur = “localhost“;

$login = “votre_login“;

$mdp = “le_mot_de_passe“:

$base = “nom_de_la_base“;


MYSQL_CONNECT($serveur,$login,mdp); //Connexion à Mysql

MYSQL_SELECT_DB($base); //Selection de la base

?>


On enregistre tout dans un fichier 'connexion.php' auquel on fera appel par la fonction include() ainsi, si vous changez d'hébergeur, vous n'aurez qu'à changer les variables de ce fichier.


Insérer un enregistrement :

<?

include('connexion.php'); //Connexion


$nom='toto'; //Définition des variables

$prenom='titi';

$ddn='2000-10-15';

$tel='01.30.92.15.15';

$query=“INSERT INTO adresse VALUES('0','$nom','$prenom','$ddn','$tel')“;

//Écriture de la requête

MYSQL_QUERY($query);

//Exécution de la requête

?>


Affichage des enregistrements

<?

include('connexion.php');


$query = “SELECT * FROM adresse ORDER BY nom,prenom ASC“; //Requête

$result = MYSQL_QUERY($query); //exécution de la requête

$num = MYSQL_NUM_ROWS($result); //Nombre d'enregistrements

echo “Il y a $num personnes<br>“;


while ($row = MYSQL_FETCH_ARRAY($result))

//Tant qu'il y a un enregistrement, on boucle de plus, on explose l'enregistrement dans un tableau associatif.

{

echo “nom : $row[nom] prenom : $prenom ...“;

}


?>


Maintenant que vous connaissez les rudiments, vous êtes capables de suivre le script de carnet d'adresse suivant :


  1. Exemple : Script de carnet d'adresse


<html>

<body>

<H1>Carnet d'adresses</H1><br>

<a href=index.php>[Refresh/Home]</a> |

<a href=index.php?action=form_ajout>[Ajouter]</a><hr>

<?


/* Formes de la table :


CREATE TABLE adresse

(

id INT not null AUTO_INCREMENT,

nom VARCHAR(20),

prenom VARCHAR(20),

ddn DATE,

UNIQUE (id)

)



*/


//Variables de connexion

$serveur = "localhost";

$user = "root";

$pass = "";

$base = "test";


//Connexion, on quitte si elle ne marche pas

if (!mysql_connect($serveur,$user,$pass)) {die("Problème à la connexion");}

if (!mysql_select_db($base)) {die("Problème à la base");}


//A chaque fois, on regarde si $action est définie et correspond à quelque chose



//Action d'ajout

if ($action=="ajouter")

{

if (mysql_query("INSERT INTO adresse VALUES ('0','$nom','$prenom','$ddn')"))

{echo"Ajouté!<br>";}

else

{echo mysql_error();} //Affiche l'erreur retrounée par mysq


}


//Action d'effacer

if ($action=="effacer")

{

if (mysql_query("DELETE FROM adresse WHERE id=$id"))

{echo"éffacé!<br>";}

else

{echo mysql_error();}


}


//Formulaire d'ajout

if ($action=="form_ajout")

{

echo"<form action=index.php?action=ajouter method=post>

Nom : <input type=text name=nom><br>

Prenom : <input type=text name=prenom><br>

Date de naissance : <input type=text name=ddn><br>

<input type=submit value=\"Ajouter\">

</form><hr>

";

}


//Formulaire de modification

if ($action=="form_modif")

{

$result=mysql_query("SELECT * FROM adresse WHERE id='$id'");

$row=mysql_fetch_array($result);


echo"<form action=index.php?action=modif&id=$id method=post>

Nom : <input type=text name=nom value=\"$row[nom]\"><br>

Prenom : <input type=text name=prenom value=\"$row[prenom]\"><br>

Date de naissance : <input type=text name=ddn value=\"$row[ddn]\"><br>

<input type=submit value=\"Modifer\">

</form><hr>

";

}

//Action de modifier

if ($action=="modif")

{

if (mysql_query("UPDATE adresse SET nom='$nom',prenom='$prenom',ddn='$ddn' WHERE id=$id"))

{echo"modifié!<br>";}

else

{echo mysql_error();}


}


//Affichage des personnes existantes


$result=mysql_query("SELECT * FROM adresse ORDER BY nom ASC");

$row=mysql_num_rows($result); //Nombre d'enregistrements

if ($row>0)

{

//On les passe tous les enregistrements en revue s'il y en a au moins un

echo"<table border=1 align=center cellspacing=0>

<tr><td>Nom</td><td>Prenom</td><td>Date</td><td>Action</td></tr>";

while($row=mysql_fetch_array($result))

{

echo"<tr><td>$row[nom]</td><td>$row[prenom]</td><td>$row[ddn]</td><td>

<a href=index.php?action=form_modif&id=$row[id]>Modifier</a>

<a href=index.php?action=effacer&id=$row[id]>Effacer</a></td></tr>";

}

echo "</table>";

}

else

{echo"Il n'y a pas encore d'enregistrement<br>";}


mysql_close(); //fermeture de la connexion


?>

<hr>

</body>

</html>

/8