Rechercher : dans
Par :

Pb de suppression en PHP dans une base MYSQL

Dernière réponse le 12 aoû 2004 à 14:07:03 caroline, le 12 aoû 2004 à 11:34:50 
 Signaler ce message aux modérateurs

Voilà, je souhaite réussir à supprimer en PHP une ligne dans un tableau alimenté pas la base MYSQL.

Le code :
<?php
require("connexion.php3");

// On selectionne les enregistrements...
$compt=mysql_query("SELECT id,email FROM lettre ORDER BY id");

// On compte le nombre d'inscrits...
$nb=mysql_num_rows($compt);

// On affiche le nombre d'inscrits...
echo"<font size='4'color='#408040'<b>[$nb inscrits(s)]</b></font><br>";
echo"<hr size='1' color='#408040'\n>";

// On affiche les emails dans un tableau avec une boucle while et mysql_fetch_array ?>
<table>
<?
//tant qu'il y a des adresses e-mail, on affiche
while($result=mysql_fetch_array($compt)) {?>
<tr>
<td><h3><? echo"{$result['email']}  ";

// un lien vers le fichier qui supprime l'email... ?>
</td></h3>
<td><? $id=$result['id']; echo"<a href=\"sup.php3?id="."{$result['id']}\">[Supprimer l'email]</a><br>"; ?>
</td>
</tr> <? } ?>
</table>

Mon fichier "sup.php3" :
<?php
require("connexion.php3");
require("voir.php3");

// suppression de l'email selectionné...
mysql_query("DELETE FROM lettre WHERE id='$id' ");

// On renvoi vers le fichier voir.php3
header("location:voir.php3");

// on ferme la connection...
mysql_close();
?>

Ce code à l'heure actuelle ne marche pas correctement. Je m'explique : il supprime bien quelque chose, mais ce quelque chose c'est la dernière ligne du tableau...

Quelqu'un aurait-il une idée par hasard ?

Merci d'avance
Caro

Meilleures réponses pour « Pb de suppression en PHP dans une base MYSQL » dans :
MySQL - Supprimer des doublons dans une table VoirPour supprimer des doublons au niveau d'une table donnée définie comme suit : CREATE TABLE IF NOT EXISTS TabTest ( cle_prim integer(4) NOT NULL auto_increment, x integer, y integer, z integer, ...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

Chris, le 12 aoû 2004 à 11:41:25

Est ce que ca marche mieux si tu remplace la requete de suppression par :
mysql_query("DELETE FROM lettre WHERE id=" . $id);
Chris

Répondre à Chris

3

caroline, le 12 aoû 2004 à 11:49:26

Nan :o( ça me supprime tjs le dernier

Répondre à caroline

2

poof65, le 12 aoû 2004 à 11:43:21

T'as vérifie que sup.php recoit bien le bon id ?
Moi je ferais plutot $id = $_GET['id']

Répondre à poof65

5

caroline, le 12 aoû 2004 à 11:52:38

Bah justement le pb c que $id est écrasé à chaque fois qu'une nouvelle ligne est enregistrée je pense. Car quand je fais afficher dans le tableau $id, ça me donne le bon numéro :o(

Ton code ne change rien non plus :o(

Répondre à caroline

4

poof65, le 12 aoû 2004 à 11:51:05

Id est la clé primaire de la table ?

Répondre à poof65

6

caroline, le 12 aoû 2004 à 11:53:43

Oui

Répondre à caroline

7

poof65, le 12 aoû 2004 à 11:59:37

Quand tu regarde la source html de ton fichier, tu vois bien tous les liens et tous les id ?

Je parlais de mettre $id = $_GET['id'] juste avant
mysql_query("DELETE FROM lettre WHERE id='$id' ");

Fait un die($id) pour voir si l'id est bien récupéré.

Répondre à poof65

9

caroline, le 12 aoû 2004 à 13:09:06

Ca ne marche pas. Le die($id) tu ve ke je le mettes ou ? car je lé mis ds "sup.php3", mais ça n'affiche rien

Répondre à caroline

8

Chris, le 12 aoû 2004 à 12:01:53

Quand tu dis que tu as vérifié la valeur de $id, tu parles de voir.php ou sup.php ?
Parce que moi aussi je suis d'avis que le paramètre passe mal dans sup.
Un code du genre :
mysql_query("DELETE FROM lettre WHERE id=" . $_GET['id']);
ca donne quoi?
Chris

Répondre à Chris

11

caroline, le 12 aoû 2004 à 13:14:05

Ca na passe pas non plus. Ce qui est bizarre c'est qu'à la base je me suis inspirée d'un script trouvé sur le net...

Ca m'énerve lol.

Ce qui m'embête c'est que $id est remplacé par une nouvelle valeur a chaque ajout de mail dans la table, et que je ne sais pas comment faire pour qu'il le garde bien vu que je penser que l'instruction <? $id=$result['id']; echo"<a href=\"sup.php3?id="."{$result['id']}\">[Supprimer l'email]</a><br>"; ?> le gérait toute seule

Répondre à caroline

10

poof65, le 12 aoû 2004 à 13:13:52

Si ça n'affiche rien c'est peut etre que l'id n'est pas bien recu.
Essaie die('*'.$id.'*') pour être bien sure

Répondre à poof65

12

caroline, le 12 aoû 2004 à 13:17:25

Dans "sup" rien de rien, mais dans le tableau dans "voir" la ça donne bien les bonnes valeurs pour chaque ligne. pourtant ma variable $id est bien declaree en globale et je fé bien le passage de parametre

Répondre à caroline

13

poof65, le 12 aoû 2004 à 13:27:29

Oui tu le passe en paramètre mais maintenant il faut dire à ta page d'ou viennent tes variables. De $_GET, de $_POST, de $_COOKIE, de $_SESSION ?

Répondre à poof65

14

caroline, le 12 aoû 2004 à 13:29:23

J'essaye un truc et je vous dis ce qu'il en est. En tout cas merci pour votre aide ;o)

Répondre à caroline

15

ouckileou, le 12 aoû 2004 à 13:35:36

Comment s'appelle le fichier qui contient la première partie du code, cele avec le SELECT ?

Répondre à ouckileou

16

caroline, le 12 aoû 2004 à 13:42:16

Voir.php3

Répondre à caroline

17

ouckileou, le 12 aoû 2004 à 13:48:53

Pourquoi l'appelles-tu dans sup.php3 ?
car il me semble que dans voir.php3
tu listes tous tes enregistrements et tu affectes l'id de chacun dans $id
dans cette ligne :
<td><? $id=$result['id']; echo"<a href=\"sup.php3?id="."{$result['id']}\">[Supprimer l'email]</

et ensuite, dans sup.php3, tu supprimes l'enregistrement avec comme identifiant "$id"
$id vaut donc à ce moment la dernière valeur listée dans voir.php3
soit l'id du dernier enregistrement de la table, que tu supprimes donc

essaye de renommer les variables
dans voir.php3, change le nom de la variable transmise dans l'url :
<td><? $id=$result['id']; echo"<a href=\"sup.php3?idASupprimer="."{$result['id']}\">[Supprimer l'email]</

et dans suppr.php3, tu récupères
$idASupprimer = $_GET['idASupprimer'];
mysql_query("DELETE FROM lettre WHERE id='$idASupprimer' ");

Répondre à ouckileou

18

caroline, le 12 aoû 2004 à 13:56:44

Merci bcp bcp bcp :o] ça marche c'est nickel ;o)

Répondre à caroline

19

caroline, le 12 aoû 2004 à 13:59:52

Merci à tout le monde pour le temps passé à essayer de me dépatouiller ;o)

Répondre à caroline

20

poof65, le 12 aoû 2004 à 14:01:28

Question : a quoi sert cette commande ?
$id=$result['id'];

Répondre à poof65

22

 caroline, le 12 aoû 2004 à 14:07:03

A rien apparemment

Répondre à caroline

21

poof65, le 12 aoû 2004 à 14:03:43

Ahhh j'avais pas vu qu'elle appelais le premier fichier à partir de sup.php3 ... je suis trop bête moi des fois ;-)

Répondre à poof65