Trier (Classer) toute la base :
Si on veut présenter maintenant la table
triée par ordre de nom, alors il suffit juste de rajouter à la requête SQL de
base un ORDER by nomchamps ASC
Le détail de
la requête SQL (cf page 128) donne:
SELECT
* FROM $table ORDER by chptable ASC|DESC
$table
: représente la variable contenant le nom
de la table concernée
chptable
: représente le champ de la table sur
lequel on désire faire le tri
ASC|DESC
: représente l'ordre croissant ou
décroissant
/*** On cherche
tous les enregistrements ***/
$query =
"SELECT * FROM $table ORDER by nom ASC";
et si l'on
souhaite avoir uniquement les informations du type genre – nom – adresse mail,
il suffira de ne pas traiter tous les éléments du tableau renvoyé par mysql_fetch_row()…
while($row =
mysql_fetch_row($result))
{
/** on affiche le genre, le
nom, l'email **/
echo "
<p>\n
<b>$row[4] $row[2]
$row[3]</b>\n
<p>\n
";
}
Maintenant que l'on sait créer une base
MySQL et que l'on a vu le principe d'écriture d'une requête SQL à travers la
primitive php mysql_query, essayons de traiter un exemple plus complet que le
simple affichage du nombre d'enregistrements existants dans une table.
Afficher toute la base dans un
tableau (1° variante):
Pour présenter
mieux le résultat on utilise un tableau HTML
<?
Include("connection.php3");
/*** On cherche tous les
enregistrements ***/
$query = "SELECT * FROM
$table";
/*** envoi de la requête à la
base ***/
$result =
mysql_query($query);
echo
"<Table>";
while($row = mysql_fetch_row($result))
{
$id=$row[0];
$nom=$row[1];
$prenom=$row[2];
$email=$row[3];
$genre=$row[4];
echo "<tr>
<td
width=22%>$id</td>
<td
width=22%>$genre</td>
<td
width=22%>$nom</td>
<td
width=22%>$prenom</td>
<td
width=34%>$email</td>
</tr>";
}
echo
"</Table>";
/*** on ferme la connexion
***/
mysql_close();
?>
Afficher toute la base dans un
tableau (2° variante):
Pour encore
mieux présenter le résultat on utilise un tableau HTML avec des couleurs
alternées automatiquement pour chaque ligne, ce qui s'obtient relativement
facilement à l'aide de variables statiques, c'est à dire gardant leur valeur
d'un appel à l'autre...
On avait déjà
vu cet effet dans le cours sur les variables statiques (page 47 ), il n'y a
donc pas grand chose à dire de plus...
function couleur()
{
static $couleur;
if ($couleur ==
"#dddeee")
{
$couleur =
"#add8e6";
}
else
{
$couleur =
"#dddeee";
}
return ($couleur);
}
puis
dans le code
while($row =
mysql_fetch_row($result))
{
$couleuractive = couleur();
$id=$row[0];
$nom=$row[1];
$prenom=$row[2];
$email=$row[3];
$genre=$row[4];
/** on affiche le id,
legenre, le nom, le prenom, l'email **/
echo "<tr
BGcolor=$couleuractive>
<td
width=22%>$id</td>
<td
width=22%>$genre</td>
<td
width=22%>$nom</td>
<td
width=22%>$prenom</td>
<td
width=34%>$email</td>
</tr>";
}
il faut déclarer la fonction couleur() faire un appel à chaque itération et se servir de la couleur
pour la ligne du tableau HTML
Rechercher un enregistrement :
On veut proposer à l'utilisateur la
recherche d'un enregistrement qui contient une certaine valeur soit dans le
champ nom soit dans le
champ prenom...
Il faut créer un formulaire permettant la
saisie du nom ou prénom à rechercher
Supprimer un enregistrement :
On veut
proposer à l'utilisateur la suppression d'un enregistrement qui correspond à
une valeur du champ identificateur...
Il faut créer
un formulaire permettant la saisie du n° de l'enregistrement à supprimer
La création du
formulaire HTML se passant sans problème (en
form_supprime.htm). Il faut créer un script permettant la
suppression de l'enregistrement correspondant au numéro saisi Par rapport à un
script de sélection classique quelques modifications du code apparaissent.
La
requête sql : DELETE
Le détail de la requête SQL donne:
DELETE FROM
$table WHERE chptable = $identifiant
$table : représente la variable contenant le nom de la
table concernée
chptable : représente le champ de la table sur lequel on
désire faire la recherche
$identifiant : représente la variable contenant le mot
recherché.
![](http://4.bp.blogspot.com/-Hy0OIezFNGw/UqmNEYTiRzI/AAAAAAAAAck/4qX2eaEaLUE/s1600/zzz.JPG)
Le
détail de la requête SQL donne:
UPDATE $table SET chptable =
$identifiant, WHERE chptable1 = $identifiant1
$table : représente la variable contenant le nom de
la table concernée
chptable : représente le champ de la table que l'on
souhaite modifier
$identifiant : représente la variable contenant la
valeur à utiliser
chptable : représente le champ de la table que l'on
souhaite modifier
UPDATE : met à jour une ligne existante dans une
table. La clause SET indique quelles colonnes modifier, et
quelles valeurs mettre dans ces colonnes. La condition WHERE permet de choisir quelles lignes sont à
mettre à jour. Sinon, toutes les lignes sont mises à jour
Compléments SELECT -
Filtrer une base :
Maintenant que l'on a vu un
certain nombre de manipulation de la base mysql, on peut décider de filtrer un
peu les renseignements obtenus. Cela se fait bien sur à l'aide de l'instruction
SELECT (cf page 128) que nous connaissons déjà…
Mais nous pouvons aussi
introduire ici une nouvelle fonction php permettant de compter le nombre
d'enregistrements dans un résultat de requête. Il s'agit de la fonction php :
mysql_numrows() (voir page 125)
Comme dans l'exemple ci-dessous
$query="SELECT * from $table
";
$result = mysql_query($query);
$nbenreg=mysql_numrows($result);
Dans les extraits de script ci dessus, une requête est
envoyée grâce à l'instruction mysql_query et le résultat de cette requête est
stocké dans la variable $result. mysql_numrows permet de compter le nombre
d'enregistrements sélectionnés. Essayez les !
Exemple 1 :
Sélection de tous les enregistrements de la table
$query="SELECT
* from $table ";
$result
= mysql_query($query);
$nbenreg=mysql_numrows($result);
Exemple 2 :
Sélection de tous les enregistrements de la table dans lesquels nom=Blier
$query="SELECT
* from $table where nom='Blier' ";
$result
= mysql_query($query);
Exemple 3 :
Sélection de tous les enregistrements de la table dans lesquels nom
commence par Du…
$query="SELECT
* FROM $table where typevel like 'Du%'";
$result
= mysql_query($query);
Exemple 4 :
Sélection de tous les enregistrements de la table dans lesquels nom
commence par Du… et dont le genre est Madame
$query="SELECT
* FROM $table where ((nom like 'Du%') AND
(genre='Madame'))";
$result
= mysql_query($query);
Exemple 5 :
Sélection de tous les enregistrements de la table dans lesquels les ventes
sont comprises entre 5000 et 7000
$query="SELECT
* FROM $table where (ventes BETWEEN 5000 AND 7000)";
$result
= mysql_query($query);
Exemple 6 :
Sélection de tous les enregistrements de la table dans lesquels figurent
Mathieu et Boully
$query="SELECT
* FROM $table where nom IN ('Blier', 'Durand')";
$result
= mysql_query($query);
Exemple 7 :
Sélection de tous les enregistrements de la table dans lesquels
commercial=Mathieu mais récupération uniquement de la valeur des ventes
et des régions concernées
$query="SELECT vente,region FROM $table Where nom='Blier' ";
$result = mysql_query($query);
www.2rattrapage.blogspot.com