IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Suppression d'une ligne d'une base de données (PHP/Mysql) [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut Suppression d'une ligne d'une base de données (PHP/Mysql)
    bonjour,
    je sais pas si c'est le bon emplacement
    bref, je suis en train de créer un petit site web et j'ai un problème quant à la supression de lignes d'un tableau
    j'ai crée une page php contenant un tableau qui s'alimente dynamiquement à partir de la base de données
    la première colonne contient des images jouant le rôle de liens de suppression de la ligne devant laquelle elles sont mises
    je veux qu'on cliquant sur l'image, la ligne correspondante se supprime de la base
    voila mes deux bout de code
    clavier.php ( elle affiche tous les claviers contenue dans la table materiels)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
     $query = "SELECT * from materiel where typ='clavier'"; 
     $result = mysql_query($query);
     while($row = mysql_fetch_row($result))
        {
            $idm = $row[0]; $typ = $row[1]; $marque = $row[2]; $etat = $row[3];$date_acq = $row[4]; $date_meo = $row[5]; $duree_grt = $row[6]; $id_frs = $row[7];
           echo "<tr>\n
           <td><a href=\"supress.php?id=\".$row[0].\"\"> <input type=\"image\" src=\"del.png\" width=\"30\" height=\"30\" alt=\"supprimer\" name=\"del_img\"></a></td>\n
           <td>$idm</td>\n
           <td>$typ</td>\n
           <td>$marque</td>\n
           <td>$etat</td>\n
           <td>$date_acq</td>\n
           <td>$date_meo</td>\n
           <td>$duree_grt</td>\n
            <td>$id_frs</td>\n
                  </tr>\n";
        } 
      ?>

    supress.php (celle-ci doit se charger de la suppression)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html>
    <?php
    $id = intval($_POST['id']);      
    mysql_query("DELETE FROM materiel WHERE id_m = '$id' ");
    header("Location:clavier.php");
    mysql_close();
     
    ?>
    <body>
    </body>
    </html>

    ==> la page clavier.php se réaffiche mais rien n'est supprimé
    merci de me clarifer l'erreur
    je serais vraiment très reconnaissante .

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Par défaut
    Bonjour,

    Pour ton code, avant d'essayer de lancer ta requête sql, a tu essayé d'afficher la variable intval($_POST['id']) ?
    Si je ne me trompe pas, pour récupérer une variable par l'url, tu dois utiliser $_GET et non pas $_POST, à tester.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    Salut,
    Voila ce que j'aurais fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    if (isset($_GET['id'];))
    {
     $id = $_GET['id'];
    }
     
     $query = "SELECT * from materiel where typ='clavier'"; 
     $result = mysql_query($query);
     while($row = mysql_fetch_row($result))
        {
           ?> 
           <tr>
    	if($id!=1)
    	{
           <td><a href="clavier.php?id=1"> <input type="image" src="del.png" width="30" height="30" alt="supprimer" name="del_img"></a></td>
    	}
     
           </tr>
        <?php
        } 
      ?>
    Explication: Tu recupere le variable "id" passe dans l'URL, Il faut tester son existance (avec isset) car la premiere fois que tu charge la page elle n'existe pas.
    Ensuite tu affiche ton tableau avec des conditions. Si tu as clique sur la premiere image, tu passe la variable id a 1 dans l'URL et tu recharge la page.
    Avec la condition if elle ne sera donc plus affiche.
    Fait de meme avec toutes les lignes du tableaux.

    Si tu veut les suprimer de la table c'est le meme principe une condition if et tu met ta requete de supression.

    Voila, j'espere etre assez claire.
    byby
    JB

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par jean-ba Voir le message
    Salut,
    Voila ce que j'aurais fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    if (isset($_GET['id'];))
    {
     $id = $_GET['id'];
    }
     
     $query = "SELECT * from materiel where typ='clavier'"; 
     $result = mysql_query($query);
     while($row = mysql_fetch_row($result))
        {
           ?> 
           <tr>
    	if($id!=1)
    	{
           <td><a href="clavier.php?id=1"> <input type="image" src="del.png" width="30" height="30" alt="supprimer" name="del_img"></a></td>
    	}
     
           </tr>
        <?php
        } 
      ?>
    Explication: Tu recupere le variable "id" passe dans l'URL, Il faut tester son existance (avec isset) car la premiere fois que tu charge la page elle n'existe pas.
    Ensuite tu affiche ton tableau avec des conditions. Si tu as clique sur la premiere image, tu passe la variable id a 1 dans l'URL et tu recharge la page.
    Avec la condition if elle ne sera donc plus affiche.
    Fait de meme avec toutes les lignes du tableaux.

    Si tu veut les suprimer de la table c'est le meme principe une condition if et tu met ta requete de supression.

    Voila, j'espere etre assez claire.
    byby
    JB

    voilà ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    if (isset($_GET['id'];))
    {
     $id = $_GET['id'];
    }
     $query = "SELECT * from materiel where typ='clavier'"; 
     $result = mysql_query($query);
     while($row = mysql_fetch_row($result))
        {
            $idm = $row[0]; $typ = $row[1]; $marque = $row[2]; $etat = $row[3];$date_acq = $row[4]; $date_meo = $row[5]; $duree_grt = $row[6]; $id_frs = $row[7];
           echo "<tr>\n
           if($id!=1)
    	{
           <td><a href="clavier.php?id=1"> <input type="image" src="del.png" width="30" height="30" alt="supprimer" name="del_img"></a></td>
    	}
    \n
           <td>$idm</td>\n
           <td>$typ</td>\n
           <td>$marque</td>\n
           <td>$etat</td>\n
           <td>$date_acq</td>\n
           <td>$date_meo</td>\n
           <td>$duree_grt</td>\n
            <td>$id_frs</td>\n
                  </tr>\n";
        } 
      ?>
    c'est toujours le même problème

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    ok,

    Bon essaye sa alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
    if (isset($_GET['id'];))
    {
     $id = $_GET['id'];
    }
     
    if ($id==1)
    {
     mysql_query("DELETE FROM materiel WHERE id_m = '$id' ");
    }
     
     $query = "SELECT * from materiel where typ='clavier'"; 
     $result = mysql_query($query);
     while($row = mysql_fetch_row($result))
        {
            $idm = $row[0]; $typ = $row[1]; $marque = $row[2]; $etat = $row[3];$date_acq = $row[4]; $date_meo = $row[5]; $duree_grt = $row[6]; $id_frs = $row[7];
           echo "<tr>\n
           <td><a href="clavier.php?id=1"> <input type="image" src="del.png" width="30" height="30" alt="supprimer" name="del_img"></a></td>\n
           <td>$idm</td>\n
           <td>$typ</td>\n
           <td>$marque</td>\n
           <td>$etat</td>\n
           <td>$date_acq</td>\n
           <td>$date_meo</td>\n
           <td>$duree_grt</td>\n
            <td>$id_frs</td>\n
                  </tr>\n";
        } 
      ?>
    Il faut bien entendus que dans ta table la valeur de "id_m" soit egale a 1.

  6. #6
    Invité
    Invité(e)
    Par défaut
    ATTENTION : DANGER !!

    Il est TRES dangereux de passer un id dans l'URL,
    surtout pour SUPPRIMER une ligne dans une BD !!!


    Rien n'empêche de changer le numéro directement dans la barre d'adresse, et de supprimer n'importe quoi !!

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    C'est vrai jreau62 a raison.
    Mieux vaut utiliser les SESSION non?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par Arnaud13 Voir le message
    Bonjour,

    Pour ton code, avant d'essayer de lancer ta requête sql, a tu essayé d'afficher la variable intval($_POST['id']) ?
    Si je ne me trompe pas, pour récupérer une variable par l'url, tu dois utiliser $_GET et non pas $_POST, à tester.
    j'ai modifié ça, mais c'est pas encore résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [SQLite] Cacher une ligne de la base de données
    Par TZoaldiek dans le forum Android
    Réponses: 4
    Dernier message: 25/02/2014, 16h12
  3. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. [phpMyAdmin] question sur une ligne à ajouter à ma base de données
    Par jsdar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/04/2007, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo