# PHP > PHP & Base de donnes > [MySQL] Suppression d'une ligne d'une base de donnes (PHP/Mysql)

## toutaonline

bonjour,
je sais pas si c'est le bon emplacement ::bug:: 
bref, je suis en train de crer un petit site web et j'ai un problme quant  la supression de lignes d'un tableau
j'ai cre une page php contenant un tableau qui s'alimente dynamiquement  partir de la base de donnes
la premire colonne contient des images jouant le rle 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)



```

```


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



```

```


==> la page clavier.php se raffiche mais rien n'est supprim
merci de me clarifer l'erreur
je serais vraiment trs reconnaissante .

----------


## Arnaud13

Bonjour,

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

----------


## jean-ba

Salut,
Voila ce que j'aurais fait:



```

```

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

----------


## toutaonline

> Bonjour,
> 
> Pour ton code, avant d'essayer de lancer ta requte sql, a tu essay d'afficher la variable intval($_POST['id']) ? 
> Si je ne me trompe pas, pour rcuprer une variable par l'url, tu dois utiliser $_GET et non pas $_POST,  tester.


j'ai modifi a, mais c'est pas encore rsolu ::?:

----------


## toutaonline

> Salut,
> Voila ce que j'aurais fait:
> 
> 
> 
> ```
> 
> ```
> 
> ...



voil ce que j'ai fait


```

```

c'est toujours  le mme problme ::?:

----------


## jean-ba

ok,

Bon essaye sa alors:


```

```

Il faut bien entendus que dans ta table la valeur de  "id_m" soit egale a 1.

----------


## Invit

::alerte:: * ATTENTION : DANGER !!*  ::alerte:: 

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

Rien n'empche de changer le numro directement dans la barre d'adresse, et de supprimer n'importe quoi !!

----------


## jean-ba

C'est vrai jreau62 a raison.
Mieux vaut utiliser les SESSION non?

----------


## toutaonline

j'ai essay votre solution mais c'est pas encore rsolu ::(:

----------


## Invit

Dans tes fichiers de dpart :
Tu vas remplacer (d'autant qu'il y a des fautes de \" !) :


```
       <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
```

par :


```

```

Et dans supress.php, par protection contre les injection SQL, ajouter :


```
$id = intval(mysql_real_escape_string(($_POST['id']));
```

Note : il faut se connecter a la BD avant (au dbut de la page supress.php)

Tu ne peux pas mettre :
header("Location:clavier.php");
car tu as dj envoy du code html avant ...

Remplacer :


```

```

par


```

```

(pas besoin de code html)

NB : Perso, je serais pass par une page de CONFIRMATION DE SUPPRESSION
(pour viter d'effacer une ligne en appuyant PAR INADVERTANCE sur le bouton !)

----------


## toutaonline

> Dans tes fichiers de dpart :
> Tu vas remplacer (d'autant qu'il y a des fautes de \" !) :
> 
> 
> ```
>        <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
> ```
> 
> par :
> ...


vraiment bravo ::yaisse2:: 
presque aucune erreur, uniquement une parenthse qui manquait
tu as excll, c'est rsolu, 
je vous remerci enomrment vous et tout les membres de l'quipe qui ont particip  ce sujet ::king::

----------


## Invit

Il y avait plutot une parenthese en trop !
$id = intval( mysql_real_escape_string($_POST['id']) );

Si tu veux intercaler une *page de CONFIRMATION DE SUPPRESSION* :
*supress.php* :


```

```

et
*supressOK.php* :


```

```

----------


## toutaonline

> Il y avait plutot une parenthese en trop !
> $id = intval( mysql_real_escape_string($_POST['id']) );


w, juste j'ai compt le nombre de parenthses ouvrantes ::mrgreen:: 



> Si tu veux intercaler une *page de CONFIRMATION DE SUPPRESSION* :
> *supress.php* :
> 
> 
> ```
> 
> ```
> 
> et
> ...


c'est fait merci encore ::king::

----------

