Pb de suppression en PHP dans une base MYSQL

caroline -  
 caroline -
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
A voir également:

12 réponses

Chris
 
est ce que ca marche mieux si tu remplace la requete de suppression par :
mysql_query("DELETE FROM lettre WHERE id=" . $id);
0
caroline
 
Nan :o( ça me supprime tjs le dernier
0
Utilisateur anonyme
 
T'as vérifie que sup.php recoit bien le bon id ?
Moi je ferais plutot $id = $_GET['id']
0
caroline
 
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(
0
Utilisateur anonyme
 
id est la clé primaire de la table ?
0
caroline
 
oui
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
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é.
0
caroline
 
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
0
Chris
 
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?
0
caroline
 
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
0
Utilisateur anonyme
 
Si ça n'affiche rien c'est peut etre que l'id n'est pas bien recu.
Essaie die('*'.$id.'*') pour être bien sure
0
caroline
 
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
0
Utilisateur anonyme
 
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 ?
0
caroline
 
J'essaye un truc et je vous dis ce qu'il en est. En tout cas merci pour votre aide ;o)
0
ouckileou Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
comment s'appelle le fichier qui contient la première partie du code, cele avec le SELECT ?
0
caroline
 
voir.php3
0
ouckileou Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
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' ");
0
caroline
 
Merci bcp bcp bcp :o] ça marche c'est nickel ;o)
0
caroline
 
Merci à tout le monde pour le temps passé à essayer de me dépatouiller ;o)
0
Utilisateur anonyme
 
Question : a quoi sert cette commande ?
$id=$result['id'];
0
caroline
 
A rien apparemment
0
Utilisateur anonyme
 
Ahhh j'avais pas vu qu'elle appelais le premier fichier à partir de sup.php3 ... je suis trop bête moi des fois ;-)
0