Apprendre à programmer

Récupérer des valeurs d’une base de données avec PHP


L’accès et la manipulation de données stockées dans une base de données sont des aspects cruciaux du développement web. PHP, en tant que langage de script côté serveur, offre de puissantes fonctionnalités pour interagir avec différentes bases de données, telles que MySQL, PostgreSQL, SQLite, etc. Dans cet article, nous allons explorer en détail comment récupérer des valeurs à partir d’une base de données en utilisant PHP.

Établir une connexion à la base de données

Avant de pouvoir récupérer des données, vous devez d’abord établir une connexion à la base de données. Cela peut être réalisé en utilisant la classe PDO (PHP Data Objects) ou les fonctions spécifiques à chaque base de données comme mysqli pour MySQL. Voici un exemple d’établissement de connexion avec PDO :

<?php
try {
    $pdo = new PDO('mysql:host=nom_hôte;dbname=nom_base_de_données', 'utilisateur', 'mot_de_passe');
} catch (PDOException $e) {
    echo "Erreur de connexion : " . $e->getMessage();
    exit();
}
?>

Assurez-vous de remplacer nom_hôte, nom_base_de_données, utilisateur et mot_de_passe par les valeurs appropriées pour votre configuration de base de données.

Récupérer des données avec PDO

Une fois la connexion établie, vous pouvez exécuter des requêtes SQL pour récupérer des données de la base de données. Voici un exemple de requête de sélection utilisant PDO :

<?php
$stmt = $pdo->query("SELECT * FROM ma_table");
while ($row = $stmt->fetch()) {
    echo $row['colonne1'] . "\t";
    echo $row['colonne2'] . "\n";
}
?>

Ce code récupère toutes les lignes de la table ma_table et affiche les valeurs des colonnes colonne1 et colonne2.

Récupérer des données avec mysqli

Si vous préférez utiliser mysqli, voici comment récupérer des données avec cette extension :

<?php
$conn = mysqli_connect("nom_hôte", "utilisateur", "mot_de_passe", "nom_base_de_données");
if (!$conn) {
    die("Connexion échouée: " . mysqli_connect_error());
}

$sql = "SELECT * FROM ma_table";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "Colonne1: " . $row["colonne1"] . ", Colonne2: " . $row["colonne2"] . "<br>";
    }
} else {
    echo "0 résultats";
}

mysqli_close($conn);
?>

Ce code réalise la même tâche que l’exemple PDO mais utilise les fonctions spécifiques à mysqli.

Voici quelques exemples pratiques illustrant l’utilisation de différentes méthodes pour supprimer un élément spécifique d’un tableau en PHP :

Exemple 1 : Supprimer un utilisateur d’une liste d’utilisateurs

Supposons que vous ayez un tableau contenant une liste d’utilisateurs et que vous vouliez supprimer un utilisateur spécifique de ce tableau. Vous pouvez utiliser la fonction unset() pour cela :

<?php
$users = array("John", "Alice", "Bob", "Eve");

$user_to_remove = "Bob";
$key = array_search($user_to_remove, $users);
if ($key !== false) {
    unset($users[$key]);
}

print_r($users);
?>

Dans cet exemple, nous supprimons l’utilisateur “Bob” du tableau $users.

Exemple 2 : Supprimer un produit du panier d’achat

Imaginons que vous développiez une fonctionnalité de panier d’achat pour un site de commerce électronique. Vous pouvez utiliser array_splice() pour supprimer un produit spécifique du panier :

<?php
$cart = array(
    array("product" => "iPhone", "price" => 999),
    array("product" => "Laptop", "price" => 1299),
    array("product" => "Headphones", "price" => 149)
);

$product_to_remove = "Laptop";
foreach ($cart as $key => $item) {
    if ($item['product'] === $product_to_remove) {
        array_splice($cart, $key, 1);
        break;
    }
}

print_r($cart);
?>

Dans ce cas, nous supprimons le produit “Laptop” du panier d’achat.

Exemple 3 : Supprimer des éléments d’un tableau basé sur des critères spécifiques

Supposons que vous ayez un tableau de nombres et que vous vouliez supprimer tous les nombres pairs du tableau. Vous pouvez utiliser array_diff() pour cela :

<?php
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

$odd_numbers = array_values(array_diff($numbers, array_filter($numbers, function ($num) {
    return $num % 2 == 0;
})));

print_r($odd_numbers);
?>

Dans cet exemple, nous supprimons tous les nombres pairs du tableau $numbers pour ne conserver que les nombres impairs.

Ces exemples illustrent différentes situations où vous pourriez avoir besoin de supprimer un élément spécifique d’un tableau en PHP, ainsi que les méthodes appropriées pour le faire.

Bien sûr ! Voici quelques exemples pratiques illustrant l’utilisation de différentes méthodes pour supprimer un élément spécifique d’un tableau en PHP :

Exemple 1 : Supprimer un utilisateur d’une liste d’utilisateurs

Supposons que vous ayez un tableau contenant une liste d’utilisateurs et que vous vouliez supprimer un utilisateur spécifique de ce tableau. Vous pouvez utiliser la fonction unset() pour cela :

<?php
$users = array("John", "Alice", "Bob", "Eve");

$user_to_remove = "Bob";
$key = array_search($user_to_remove, $users);
if ($key !== false) {
    unset($users[$key]);
}

print_r($users);
?>

Dans cet exemple, nous supprimons l’utilisateur “Bob” du tableau $users.

Exemple 2 : Supprimer un produit du panier d’achat

Imaginons que vous développiez une fonctionnalité de panier d’achat pour un site de commerce électronique. Vous pouvez utiliser array_splice() pour supprimer un produit spécifique du panier :

<?php
$cart = array(
    array("product" => "iPhone", "price" => 999),
    array("product" => "Laptop", "price" => 1299),
    array("product" => "Headphones", "price" => 149)
);

$product_to_remove = "Laptop";
foreach ($cart as $key => $item) {
    if ($item['product'] === $product_to_remove) {
        array_splice($cart, $key, 1);
        break;
    }
}

print_r($cart);
?>

Dans ce cas, nous supprimons le produit “Laptop” du panier d’achat.

Exemple 3 : Supprimer des éléments d’un tableau basé sur des critères spécifiques

Supposons que vous ayez un tableau de nombres et que vous vouliez supprimer tous les nombres pairs du tableau. Vous pouvez utiliser array_diff() pour cela :

<?php
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

$odd_numbers = array_values(array_diff($numbers, array_filter($numbers, function ($num) {
    return $num % 2 == 0;
})));

print_r($odd_numbers);
?>

Dans cet exemple, nous supprimons tous les nombres pairs du tableau $numbers pour ne conserver que les nombres impairs.

Ces exemples illustrent différentes situations où vous pourriez avoir besoin de supprimer un élément spécifique d’un tableau en PHP, ainsi que les méthodes appropriées pour le faire.

Bien sûr, voici quelques cas particuliers d’un point de vue technique lors de la récupération de données à partir d’une base de données avec PHP :

Utilisation de requêtes préparées pour éviter les injections SQL

L’une des pratiques de sécurité les plus importantes lors de l’interaction avec une base de données est l’utilisation de requêtes préparées pour éviter les injections SQL. Cela est particulièrement important lorsque vous avez des entrées utilisateur qui sont utilisées dans les requêtes SQL. Par exemple :

<?php
// Utilisation de requête préparée avec PDO
$stmt = $pdo->prepare("SELECT * FROM utilisateurs WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch();
?>

Dans cet exemple, $email est une variable contenant une valeur fournie par l’utilisateur. Utiliser une requête préparée avec PDO::prepare() garantit que cette valeur est correctement échappée et sécurisée contre les injections SQL.

Gestion des résultats volumineux avec la pagination

Lorsque vous avez une grande quantité de données à récupérer de la base de données, il est judicieux d’utiliser la pagination pour limiter le nombre de résultats affichés à la fois. Cela améliore les performances et l’expérience utilisateur en évitant le chargement de toutes les données en une seule fois. Vous pouvez utiliser des clauses LIMIT et OFFSET dans vos requêtes SQL pour paginer les résultats.

<?php
// Paramètres de pagination
$page = $_GET['page']; // Numéro de la page actuelle
$limit = 10; // Nombre de résultats par page
$offset = ($page - 1) * $limit; // Calcul de l'offset

// Requête SQL avec pagination
$stmt = $pdo->prepare("SELECT * FROM articles LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll();
?>

Dans cet exemple, $page est le numéro de la page actuelle et $limit est le nombre de résultats par page. Nous calculons ensuite l’offset en fonction de ces paramètres et utilisons les paramètres nommés avec bindParam() pour éviter les erreurs liées à la pagination.

Utilisation de jointures pour récupérer des données de plusieurs tables

Dans de nombreux cas, les données que vous souhaitez récupérer sont réparties sur plusieurs tables de la base de données. Vous pouvez utiliser des jointures SQL pour récupérer ces données de manière efficace. Par exemple, si vous avez une table utilisateurs et une table commandes, et que vous souhaitez afficher les commandes pour chaque utilisateur, vous pouvez utiliser une jointure comme ceci :

<?php
// Requête SQL avec jointure
$stmt = $pdo->query("
    SELECT utilisateurs.nom AS nom_utilisateur, commandes.* 
    FROM utilisateurs 
    INNER JOIN commandes ON utilisateurs.id = commandes.id_utilisateur
");
$donnees = $stmt->fetchAll();
?>

Cette requête récupère les noms des utilisateurs et toutes les données des commandes correspondant à chaque utilisateur en utilisant une jointure interne entre les tables utilisateurs et commandes.

Voici quelques cas particuliers d’un point de vue technique lors de la récupération de données à partir d’une base de données avec PHP :

Utilisation de requêtes préparées pour éviter les injections SQL

L’une des pratiques de sécurité les plus importantes lors de l’interaction avec une base de données est l’utilisation de requêtes préparées pour éviter les injections SQL. Cela est particulièrement important lorsque vous avez des entrées utilisateur qui sont utilisées dans les requêtes SQL. Par exemple :

<?php
// Utilisation de requête préparée avec PDO
$stmt = $pdo->prepare("SELECT * FROM utilisateurs WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch();
?>

Dans cet exemple, $email est une variable contenant une valeur fournie par l’utilisateur. Utiliser une requête préparée avec PDO::prepare() garantit que cette valeur est correctement échappée et sécurisée contre les injections SQL.

Gestion des résultats volumineux avec la pagination

Lorsque vous avez une grande quantité de données à récupérer de la base de données, il est judicieux d’utiliser la pagination pour limiter le nombre de résultats affichés à la fois. Cela améliore les performances et l’expérience utilisateur en évitant le chargement de toutes les données en une seule fois. Vous pouvez utiliser des clauses LIMIT et OFFSET dans vos requêtes SQL pour paginer les résultats.

<?php
// Paramètres de pagination
$page = $_GET['page']; // Numéro de la page actuelle
$limit = 10; // Nombre de résultats par page
$offset = ($page - 1) * $limit; // Calcul de l'offset

// Requête SQL avec pagination
$stmt = $pdo->prepare("SELECT * FROM articles LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll();
?>

Dans cet exemple, $page est le numéro de la page actuelle et $limit est le nombre de résultats par page. Nous calculons ensuite l’offset en fonction de ces paramètres et utilisons les paramètres nommés avec bindParam() pour éviter les erreurs liées à la pagination.

Utilisation de jointures pour récupérer des données de plusieurs tables

Dans de nombreux cas, les données que vous souhaitez récupérer sont réparties sur plusieurs tables de la base de données. Vous pouvez utiliser des jointures SQL pour récupérer ces données de manière efficace. Par exemple, si vous avez une table utilisateurs et une table commandes, et que vous souhaitez afficher les commandes pour chaque utilisateur, vous pouvez utiliser une jointure comme ceci :

<?php
// Requête SQL avec jointure
$stmt = $pdo->query("
    SELECT utilisateurs.nom AS nom_utilisateur, commandes.* 
    FROM utilisateurs 
    INNER JOIN commandes ON utilisateurs.id = commandes.id_utilisateur
");
$donnees = $stmt->fetchAll();
?>

Cette requête récupère les noms des utilisateurs et toutes les données des commandes correspondant à chaque utilisateur en utilisant une jointure interne entre les tables utilisateurs et commandes.

En conclusion, en comprenant et en utilisant ces cas particuliers techniques, vous pouvez améliorer la sécurité, la performance et la flexibilité de votre code lors de la récupération de données à partir d’une base de données avec PHP.

Conclusion

Récupérer des valeurs à partir d’une base de données avec PHP est une opération fondamentale dans le développement web. Que vous utilisiez PDO ou mysqli, l’approche reste similaire. Assurez-vous toujours de sécuriser vos requêtes en utilisant des requêtes préparées avec PDO ou en échappant correctement les valeurs avec mysqli_real_escape_string pour éviter les attaques par injection SQL. Avec ces connaissances, vous êtes maintenant prêt à récupérer efficacement des données à partir de bases de données dans vos projets PHP.

Autres articles

Les Fonctions en PHP : Comprendre et...
Le langage PHP (Hypertext Preprocessor) est un langage de script...
Read more
QCM en programmation - Exemple PDF
La programmation est devenue une compétence incontournable dans le monde...
Read more
Introduction à la Programmation Orientée Objet (POO)
Cet article vise à :Comprendre les concepts fondamentaux de la...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *