Affecter des styles différents à de mêmes balises. Le concept des attributs: class et id....
Découvrez comment utiliser la clause WHERE en PHP MySQL pour filtrer et sélectionner des enregistrements spécifiques dans votre base de données. Suivez notre tutoriel pratique avec des exemples détaillés
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, nous allons aprendre une autre façon de récuperation et d'affichage des l'informations d'une la base de données.
Dans le chapitre précédent nous avons vu la commande SQL SELECT pour récupérer les données de la table MySQL.
Nous pouvons utiliser la clause conditionnelle appelé WHERE pour filtrer les résultats.La clause WHERE est employée pour filtrer des enregistrements.
Le mot clé WHERE est employée pour extraire uniquement des enregistrements qui remplissent un critère spécifique.
SELECT nom_colonne(s)FROM nom_table WHERE nom_colonne opérateur valeur
L'exemple suivant choisit les rangées à partir de la table "visiteurs" quand "id" est superieur à 5 inferieur à 10
Donc seuls les enregistrements dont le id est: 6, 7, 8, et 9 serons séléctionés
Exemple : Copier le code
<!DOCTYPE html> <html> <body> <?php echo "<table style='border: solid 1px black;border-collapse: collapse;'>"; echo "<tr><th style='width:70px;border:1px solid black;'>Id</th><th style='width:70px;border:1px solid black;'>Prénom</th><th style='width:70px;border:1px solid black;'>Nom</th></tr>"; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "mabase"; // Créer une connexion $conn = new mysqli($servername, $username, $password, $dbname); // Vérifier la connexion if ($conn->connect_error) { die("La Connexion a échoué:: " . $conn->connect_error); } $sql = "SELECT id, prenom, nom FROM visiteurs WHERE id<10 AND id>5"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "<tr><td style='width:70px;border:1px solid black;'> " . $row["id"]. " </td><td style='width:70px;border:1px solid black;'> " . $row["prenom"]. " </td><td style='width:70px;border:1px solid black;'> " . $row["nom"]. "</td></tr>"; } } else { echo "0 results"; } $conn->close(); echo "</table>"; ?> </body> </html> }?>
Explication des lignes de code à partir de l'exemple ci-dessus :
Tout d'abord, nous configurons la requête SQL qui sélectionne les colonnes id, nom et prenom de la table visiteurs où le id est compris entre 5 et 10. La ligne de code suivante exécute la requête et place les données résultantes dans une variable appelée $result.
Ensuite, la fonction num_rows() vérifie si le nombre de lignes retournées est supérieur à zéro.
Si le nombre de lignes retournées est supérieur à zéro, la fonction fetch_assoc() place tous les résultats dans un tableau associatif que nous pouvons parcourir en boucle. La boucle while() parcourt l'ensemble des résultats et affiche les données des colonnes id,nom et prenom dans une table html.
L'exemple suivant montre la même chose que l'exemple ci-dessus pour les id inferieur à 5 ou superieur à 10, de manière procédurale avec MySQLi :
Code php
<!DOCTYPE html> <html> <body> <?php echo "<table style='border: solid 1px black;border-collapse: collapse;'>"; echo "<tr><th style='width:70px;border:1px solid black;'>Id</th><th style='width:70px;border:1px solid black;'>Prénom</th><th style='width:70px;border:1px solid black;'>Nom</th></tr>"; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "mabase"; // Créer une connexion $conn = mysqli_connect($servername, $username, $password, $dbname); // Vérifier la connexion if (!$conn) { die("La Connexion a échoué: " . mysqli_connect_error()); } $sql = "SELECT id, prenom, nom FROM visiteurs WHERE id<5 OR id>10"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { echo "<tr><td style='width:70px;border:1px solid black;'> " . $row["id"]. " </td><td style='width:70px;border:1px solid black;'> " . $row["prenom"]. " </td><td style='width:70px;border:1px solid black;'> " . $row["nom"]. "</td></tr>"; } } else { echo "0 results"; } mysqli_close($conn); echo "</table>"; ?> </body> </html>
L'exemple suivant utilise les requêtes préparées. Il sélectionne les colonnes id, nom et prenom de la table visiteurs où l'age est inferieur à 30, et les affiche dans une table HTML :
Code php
<!DOCTYPE html> <html> <body> <?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th style='width:70px;border:1px solid black;'>Id</th><th style='width:70px;border:1px solid black;'>Prénom</th><th style='width:70px;border:1px solid black;'>Nom</th><th style='width:70px;border:1px solid black;'>Age</th></tr>"; class TableRows extends RecursiveIteratorIterator { function __construct($it) { parent::__construct($it, self::LEAVES_ONLY); } function current() { return "<td style='width:70px;border:1px solid black;'>" . parent::current(). "</td>"; } function beginChildren() { echo "<tr>"; } function endChildren() { echo "</tr>" . "\n"; } } $servername = "localhost"; $username = "root"; $password = ""; $dbname = "mabase"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, prenom, nom, age FROM visiteurs WHERE age<30"); $stmt->execute(); // set the resulting array to associative $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Erreur: " . $e->getMessage(); } $conn = null; echo "</table>"; ?> </body> </html>
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'.
Exemple : Copier 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'.
Exemple : Copier 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.
Exemple : Copier 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.
Exemple : Copier le code
SELECT * FROM Livres WHERE Prix BETWEEN 40 AND 50;
À 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.