NoShade.net est en vente — Contactez nous si vous êtes intéressé
Le siteTutoriauxInterviews
icone RSS NoShade.net

Accueil » Tutoriaux » PHP » Chapitre 4.5 : Supprimer du contenu dans une BDD

Les tutoriaux Php

4.5 Supprimer du contenu dans une BDD


Supprimer une entrée dans la table



Dernier point essentiel à la création de notre petit logiciel de gestion de bouquins, il va s'agir de pouvoir supprimer la fiche d'un bouquin, si l'on à donné, vendu, ou jeté un bouquin par exemple, autant ne pas en laisser traîner sa fiche dans notre collection, non? ;)

Vous allez voir, c'est très simple, et ce chapitre va d'ailleurs être bien court! :D

Nous avions, dans la page "index.php", préparé ce chapitre, en placent un lien "Supprimer" à côté de chacune de nos fiches, ce lien pointant vers une page "gestion_supprimerlivre.php", avec, en prime, l'id de la fiche à supprimer dans une variable $_GET['supprimer'].

Le principe est simple, dans cette nouvelle page, nous allons commencer par vérifier si il y a bien une demande de suppression (si il y a une variable $_GET['supprimer'], c'est qu'on veut bien supprimer une fiche, et qu'on est pas là par hasard).
Si cette condition est passée, alors on envoie une requête MySQL demandant à supprimer l'entrée de la table "bouquins", dont l'id est le même que celui qui est dans la variable $_GET['supprimer'].
Simple, non? :)

Allez, voilà tout simplement le code de cette page, pas très compliqué à votre niveau! :)

<?php include('connexion.inc.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Mes bouquins - Supprimer un livre</title>
    </head>
    <body>
<h1>Supprimer un livre</h1>
<?php
    
if(isset($_GET['supprimer']))
{
        
mysql_query('DELETE FROM bouquins WHERE id=' . $_GET['supprimer'] . ' LIMIT 1');

        echo 
'<center><p>La fiche du livre a bien &eacute;t&eacute; supprim&eacute;e!</p>
                <p><a href="index.php">Retour &agrave; ma liste de bouquins</a></p></center>'
;

}
else
{
    echo 
'Aucune suppression effectu&eacute;e.';
}
?>
    </body>
</html>
<?php mysql_close?>


Voilà, c'est aussi simple que cela! :D

Alors, si vous essayez, vous allez peut-être trouver un peu "brusque" de supprimer immédiatement la fiche du livre, sans demander une confirmation... En effet, il peut arriver de cliquer par erreur sur le lien, et boom! Plus de fiche... Dommage, vraiment :(
Nous allons donc améliorer ce script, et ajouter une confirmation de suppression, avec en prime, un petit rappel du titre du livre que l'on veut (éventuellement) supprimer, pour être sûr!

C'est parti :

<?php include('connexion.inc.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Mes bouquins - Supprimer un livre</title>
    </head>
    <body>
<h1>Supprimer un livre</h1>
<?php
    
//========================
    // DEMANDE DE CONFIRMATION
    //========================

// Si on a une variable $_GET['supprimer']
// Et que la variable de confirmation n'est pas definie
if(isset($_GET['supprimer']) AND $_GET['confirmation'] == NULL)
{
    
// Alors on recupere le titre du livre, grace a son id
    
$demande = mysql_query('SELECT * FROM bouquins WHERE id=' . $_GET['supprimer']);
    while (
$donnees = mysql_fetch_array($demande))
    {
    
$titre $donnees['titre']; // Mise en variable simple du titre
    
}

// Demande de confirmation, avec rappel du titre dans la question
echo '<center><p>Voulez r&eacute;element supprimer le livre "' $titre '"?</p>';

// "Oui", le lien pointe vers cette meme page, avec en plus une seconde
// variable $_GET 'confirmation' que nous allons traiter plus bas
echo '<p><a href="gestion_supprimerlivre.php?supprimer=' . $_GET['supprimer'] . '&confirmation=oui">Oui</a>';

// Quelques espaces pour separer les liens Oui et Annuler
echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';

// En cas d'annulation, on revient tout simplement a la page index.php
echo '<a href="index.php">Annuler</a></p></center>';

}

    
//=======================
    // EN CAS DE CONFIRMATION
    //=======================

// Si il y a une variable $_GET['supprimer']
// Et que la variable $_GET['confirmation'] vaut "oui"
elseif(isset($_GET['supprimer']) AND $_GET['confirmation'] == 'oui')
{
// Alors on supprime l'entree correspondante
// On ajoute "LIMIT 1" a la fin de la requete, par securite, pour eviter,
// Si on a un petit bug, que toute la table bouquins soit effacee...
mysql_query('DELETE FROM bouquins WHERE id=' . $_GET['supprimer'] . ' LIMIT 1');

// Et on affiche un petit message habituel, comme quoi la fiche a bien ete supprimee
echo '<center><p>La fiche a bien &eacute;t&eacute; supprim&eacute;e.</p>';
echo
'<p><a href="index.php">Retour &agrave; ma liste de bouquins</a></p></center>';
}

    
//============================
    // SI IL N'Y A RIEN DE TOUT CA
    //============================

else
{ echo
'Aucune suppression effectu&eacute;e.'; }
?>
    </body>
</html>
<?php mysql_close?>


J'ai tenté de commenter un maximum mon code pour rentre tout cela plus facile à comprendre (en effet, il y a plus de commentaires qu'autre chose dans ton code là...).

Rien de bien nouveau, des conditions pour vérifier la présence ou le contenu de variables, et pas grand chose d'autre de nouveau dans cette page, si ce n'est que nous commençons à coder des scripts bien sympathiques... :)

Vous pouvez donc vous amusez avec votre nouveau "joujou" dès maintenant, tout est opérationnel! ;)


Améliorations générales



Nous pourrions facilement le rendre beaucoup mieux! Voici quelques exemples, si vous voulez vous amuser un peu! :)

- Améliorer la mise en page (oui, je sais, c'est vraiment pas beau pour l'instant),
- Eviter d'avoir à cliquer 50 fois pour rien, là, j'ai voulu vous présenter les pages de manière à ce que tout soit très "basique", très simple à comprendre, que l'on sache ce que l'on fait, mais à la longue, cela risque d'être ennuyeux, et vous direz vite "roh, c'est long d'ajouter des livres"...
Vous pourriez donc, pour améliorer tout ça :
Dans la page de modification, par exemple, une fois la modification apportée, après la requête MySQL dans le code, utiliser une fonction header() pour nous ramener en page index.php, avec une variable $_GET['action'] qui vaudrait "modification_ok" par exemple.
Dans la page index, nous aurions alors un script qui dirait "Si il y a une variable $_GET['action'] qui vaut "modification_ok", alors on affiche "Modification effectuée".
Il en va de même pour la suppression d'une fiche, après avoir confirmé la suppression, on supprime la fiche, et, toujours avec la fonction header(), on revient sur la page index.php avec une variable $_GET['action'] qui vaudrait "suppression_ok".
On afficherait alors "Suppression effectuée" si cette variable est présente.

Ce sont des choses assez simples, et qui rendent l'utilisation beaucoup plus sympathique, vous le verrez par vous-même. :)

A vous de trouver d'autres améliorations à apporter à ce petit "logiciel", selon vos envies.

Dans le chapitre suivant, nous allons créer une page de statistiques, pour voir combien de BD, Livres de formation, Mangas et romans nous avons, et en déduire un pourcentage pour chacun d'entre eux.

Par : Legibe, le 29 septembre 2006

Sommaire du cours PHP

» Sommaire
» 1.1 Avant propos
» 1.2 Que faut'il pour faire du php?
» 2.1 Écrire du texte en PHP
» 2.2 Les commentaires, les variables et les calculs
» 2.3 Les conditions
» 2.4 La concaténation + Évaluation
» 3.1 Transmission de données
» 3.2 Les fonctions + Dates et heures
» 3.3 Les Arrays (tableaux) + les boucles
» 4.1 Les bases de données
» 4.2 Lecture dans une BDD
» 4.3 Enregistrer dans une BDD
» 4.4 Modifier le contenu d'une table
» 4.5 Supprimer du contenu dans une BDD
» 4.6 Statistiques
» 5.1 Les sessions et cookies
» 5.2 Exercice : Un système de login multi-membres