Pb de suppression en PHP dans une base MYSQL

Fermé
caroline - 12 août 2004 à 11:34
 caroline - 12 août 2004 à 14:07
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

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

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

Posez votre question
Utilisateur anonyme
12 août 2004 à 11:59
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
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
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
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
12 août 2004 à 13:13
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
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
12 août 2004 à 13:27
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
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 mercredi 5 novembre 2003 Statut Membre Dernière intervention 29 juillet 2007
12 août 2004 à 13:35
comment s'appelle le fichier qui contient la première partie du code, cele avec le SELECT ?
0
voir.php3
0
ouckileou Messages postés 16 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 29 juillet 2007
12 août 2004 à 13:48
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
Merci bcp bcp bcp :o] ça marche c'est nickel ;o)
0
Merci à tout le monde pour le temps passé à essayer de me dépatouiller ;o)
0
Utilisateur anonyme
12 août 2004 à 14:01
Question : a quoi sert cette commande ?
$id=$result['id'];
0
A rien apparemment
0
Utilisateur anonyme
12 août 2004 à 14:03
Ahhh j'avais pas vu qu'elle appelais le premier fichier à partir de sup.php3 ... je suis trop bête moi des fois ;-)
0