PHP MySQL la clause Where

Jusqu’à présent dans ce didacticiel, vous avez appris comment créer une base de données et la table, insérer les informations et afficher les informations de la base de données.Dans cette partie, je vais vous montrer autres façons d'affichage et de sortie des l'informations dans la base de données.

PHP cours tutorial

Filtrage des données La clause where

Nous avons vu la commande SQL SELECT pour récupérer les données de la table MySQL.Nous pouvons utiliser une clause conditionnelle appelé WHERE pour filtrer les résultats.La clause Where est employée pour filtrer des enregistrements.

La clause Where


Sélection directe


Le mot clé Where est employée pour extraire uniquement des enregistrements qui remplissent un critère spécifique.



Syntaxe
	SELECT nom_colonne(s)
	FROM nom_table
	WHERE nom_colonne opérateur valeur
 

Exemple
L'exemple suivant choisit les rangées à partir de la table "visiteurs" quand "age" est superieur à 25 


Sélectionner le code


	<?PHP
	$con = mysql_connect (" server "," user", " passe") ;
	if (!$con)
	  {
	  die('connexion impossible' .mysql_error());
	  }
	mysql_select_db (" maBase ", $con) ;

	$result = mysql_query("SELECT * FROM visiteurs 	WHERE age < 25");

	while($row = mysql_fetch_array($result))
	  {
	  echo $row['nom'] ." " .$row['prenom'];
	  echo " <br> ";
	  }?> 

 


Note :
Il faut savoir que le mot clé WHERE peut être utilisé avec les requêtes SELECT, DELETE et UPDATE (son utilisation est cumulative grâce aux opérateurs AND ou OR).
Exemple: Sélectionner le code


SELECT * FROM Livres WHERE Prix >50 AND Prix < 70;

 
 

Dans l'exemple on selectionne dans la table livre tous les enregistrements dont le prix est superieur à 50 et inferieur à 70.


Le mot clé LIKE


Le mot clé LIKE utilisé avec le WHERE va vous permettre de faire une sélection "approximative" dans vos tables, par exemple ici vous voulez tous les livres dont le titre commence par 'bo' ou par 'b'.

Sélectionner le code



SELECT * FROM Livres WHERE Titre LIKE 'bo%';
 


Ou encors par exemple ici vous voulez tous les livres dont le titre commence par 'b'.

Sélectionner le code


SELECT * FROM Livres WHERE titre LIKE 'b_';
 

Pour placer un seul caractère dans un LIKE il faut utiliser _, pour remplacer une chaîne de caractère il faut utiliser %. Le LIKE ne respecte pas la casse (minuscule - majuscule) contrairement à égal.

Sélection selon une liste de valeur



Ici nous allons voir un mot clé permettant de faire la sélection à partir d'une liste de valeur.Le WHERE est ici utilisé avec un IN.

Sélectionner le code


SELECT * FROM Livres WHERE Prix IN (40, 50, 60);
 

Le mot clé IN permet de sélectionner les enregistrements dans la table Livres où le prix est de 40, 50 ou 60.

Sélection selon une plage de valeurs


Nous allons utiliser le WHERE et le BETWEEN...AND qui permet de faire une sélection en précisant une plage de données,
ce mot clé n'est utilisé qu'avec des valeurs "numériques" (integer, date...).

Sélectionner le code

	
SELECT * FROM Livres WHERE Prix BETWEEN 40 AND 50;
 

Jointures


Suposons que nous avons deux tables différentes un champs en commun, on dit que les deux tables sont jointes par le dit champs.
Ce système permet de joindre les deux tables différentes qui ont un champ en relation,
ici la table Livres et la table categorie ont le champ idCat en commun, ces deux tables peuvent donc être jointes grâce au WHERE.
Sélectionner le code


SELECT * FROM Livres, categorie WHERE Livres.idCat = categorie.idCat;	
 

Pour joindre deux tables il faut indiquer leur nom dans FROM et utiliser la syntaxe avec le nom, le point et le champ de jointure.

Mise en forme de sortie

Dans le dernier chapitre du tutorial nous avons affiché une liste de toutes les personnes enregistrées dans la base de données.Cela nous a donné juste une sortie très basique, mais qui n'est pas particulièrement utile pour un site de travail.Au lieu de cela, il serait mieux si nous pourrions formater cette liste et l'afficher dans une table.

Cette mise en forme n'est pas particulièrement compliquée.Tout ce que vous devez faire est d'utiliser PHP pour afficher du HTML et inclure vos variables dans les espaces correctes comme le montre le code qui suit :

Sélectionner le code

<html lang="fr">
<head>
	<meta charset="UTF-8">
	<title></title>
	<link rel="stylesheet" href="styles.css" media="all">
</head>
<body>
<?php
$username="nom utilisateur";
$password="mot de passe";
$database="votre base de donnée";
mysql_connect("localhost",$username,$password);
@mysql_select_db($database) or die( "Imposiple de sélectinner la base de données");
$demande="SELECT * FROM contacts";
$resultat=mysql_query($demande);
$num=mysql_numrows($resultat);
mysql_close();
?>
 <table>
<tr>
<th>  Nom complet  </th>
<th>  Téléphone  </th>
<th>  Mobile  </th>
<th>  Fax  </th>
<th>  E-mail  </th>
<th>  site Web  </th>
</tr>

<?php
$i = 0 ;
while($i < $num) {}

$prenom=mysql_result($result,$i,'prenom') ;
$nom=mysql_result($result,$i,'nom') ;
$phone=mysql_result($result,$i,'telephone') ;
$mobile=mysql_result($result,$i,'mobile') ;
$fax=mysql_result($result,$i,'fax') ;
$email=mysql_result($result,$i,'email') ;
$web=mysql_result($result,$i,'web') ;

echo '<tr><td>'.$prenom.' '.$nom.'</td>
<td>'.$phone.'</td>
<td>'.$mobile.'</td>
<td>'.$fax.'</td>
<td> <a href = "mailto : '.$email.' "> E-mail </a></td>
<td> <a href = "'.$web.'"> site Web </a></td>
<td><a href="modifier.php?id='.$id.'">Modifier</a></td><td><a href="supprimer.php?id='.$id.'">Supprimer </a></td>
</tr>';
$i++;
}
?>
 </table> 
</body>
</html>

 

Ce code va imprimer des en-têtes de tableau, puis ajouter une ligne supplémentaire pour chaque enregistrement dans la base de données.

Si vous maîtrisez PHP et HTML, le code est probablement assez explicite mais je ferai juste remarquer l’avant dernière ligne de la table, par exemple :

<a href="modifier.php?id='.$id.'">Modifier</a></td><td><a href="suprimer.php?id='.$id.'">Suprimer </a></td>

Cela montre une des fonctionnalités utiles à utiliser en PHP. Dans cette ligne nous avons créé un lien qui pointe vers une page avec envoie d'une donnée qui est l'id de l'enregistrement lequel est stocké dans la variable $id. nous aurons besoin de ce lien plus tard dans le chapitre sur la mise à jour de la base de données pour suprimer un contact de la base de données.

Sélection d'éléments de données

Ainsi que l'affichage de la base de données toute entière, PHP peut être utilisé pour sélectionner des enregistrements individuels, ou seulement des enregistrements qui correspondent à certains critères.Pour ce faire, vous devez utiliser une variante de la requête SELECT.Pour afficher l'ensemble de la table, nous avons utilisé la requête :

SELECT * FROM contacts

Si nous voulions simplement sélectionner ceux qui avait le prénom « John » vous utilisez la variante suivante de la requête:

SELECT * FROM contacts WHERE prenom = " Jean "

sections sur la requête.

Bien que je ne vais pas interpréter en profondeur ce sujet dans cette section, vous pouvez également utiliser des variables pour donner les critères de base de données.Par exemple, si vous aviez un formulaire de recherche, vous pourriez obtenir le nom de famille que les gens voulaient chercher et le stockez dans une variable appelée par exemple $search.Ensuite, vous pouvez exécuter le morceau de code suivant :

$query = "SELECT * FROM contacts WHERE nom = '$search'" ;
$result=mysql_query($query) ;

Veuillez noter qu'à la fin de la première ligne il y a un ' suivie d'un " avant le point-virgule.

Sécurité

À ce stade il est à noter que vous devez faire très attention en utilisant la technique ci-dessus.Sans mesures de sécurité correcte, il serait très facile pour une personne à accéder aux données sur votre serveur, ou même apporter des modifications à la base de données.Cela peut se produire si l'utilisateur définit la variable à une valeur qui modifie la chaîne SQL générée de manière à ce qu'il peut être utilisé pour leurs propres fins.Je n'entrerai pas dans tous les détails ici.

Par carabde 20 Aout 2014