Supprimer une donnée via un bouton Supprimer dans formulaire

Petit nouveau ! | 3 Messages

31 août 2007, 19:31

Bonsoir tout le monde :)

J'ai des données dans ma BDD et j'ai un formulaire (pseudo et MDP) pour confirmer la suppression de ma donnée et un bouton Supprimer. Mais lorsque je clique sur Supprimer ça ne supprime pas... Je dois avoir un problème avec ma requête DELETE...

J'ai une table galeries et des entrées.

Voilà le code de ma page supprimer_photo.php :
<?php
mysql_connect("","","") or die("erreur de connexion");
mysql_select_db("")or die("erreur de sélection de base de données");
 
   
// Sélection de l'utilisateur concerné
$resultat = mysql_query('SELECT usr_id, usr_name, usr_password FROM forum_users WHERE usr_name = "'.$_POST['TB_Nom_Utilisateur'].'"');
 
 
// Récupération des données
$row = mysql_fetch_array($resultat);
         
// Une fois le formulaire envoyé
if(isset($_POST["BT_Supprimer"]))
    {
 
          // Vérification du mot de passe
          if(md5($_POST["TB_Mot_de_Passe"]) == $row["usr_password"])
          {
                  // Alors on supprime la phoho correspondante
                  $_GET['supprimer_photo'] = addslashes($_GET['supprimer_photo']);
                  $_GET['supprimer_photo'] = $supprimer;
                  mysql_query("DELETE FROM galeries WHERE usr_id='$supprimer'");
 
                  $message = "La photo a été supprimée avec succès !";
          }
          else
          {
             $message = "Votre mot de passe est incorrect.";
          }
 
    }
 
?>
 
 
<? if(isset($message)) { ?>
     <p><?= $message; }?></p>
     
<form action="supprimer_photo.php?supprimer_photo=<?php echo $supprimer; ?>" method="post">
     <p>
          Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" value="<?php echo $_SESSION['cb_user']->username; ?>" />
     </p>
     <p>
          Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
     </p>
 
     <p>
          <input type="submit" name="BT_Supprimer" value="Supprimer la photo" />
     </p>
</form>
Ma photo ne veut pas ce supprimer. Mon problème : je n'arrive pas à supprimer la photo avec ce code. Voici le code :
<?php
mysql_query("DELETE FROM galeries WHERE usr_id='$supprimer'");
?>
J'ai aussi essayé avec ces codes mais sans succès :
<?php
mysql_query("DELETE FROM galeries WHERE id='$supprimer'");

mysql_query("DELETE FROM galeries WHERE usr_id=' " .$supprimer. " '");           

mysql_query("DELETE FROM galeries WHERE usr_id=".$supprimer);

mysql_query("DELETE FROM galeries WHERE usr_id=". $_SESSION['cb_user']->userid ."' AND id='". $supprimer ."'');

mysql_query('DELETE FROM galeries WHERE supprimer_photo=' . $_GET['supprimer_photo']); 

mysql_query(DELETE FROM galeries WHERE usr_id=\"$id_membre\" AND id=\"$supprimer\");

mysql_query("DELETE FROM galeries WHERE id=".intval($_GET['supprimer_photo']));

mysql_query("DELETE FROM galeries WHERE usr_id='".intval($_GET['supprimer_photo']));

mysql_query('DELETE FROM galeries WHERE supprimer_photo=' . $_GET['supprimer_photo']' AND usr_id=' $_SESSION['cb_user']->userid); 

mysql_query('DELETE FROM galeries WHERE supprimer_photo=' . $_GET['supprimer_photo']); 

?>
Pour supprimer une photo, la personne clique sur le lien supprimer lorsqu'il consulte ses photos, ensuite ce lien l'envoi à cette page supprimer_photo.php.

Voici l'essentiel du code de la page de consultation des photos du membre :
<?php
$requete3 = mysql_query('SELECT * FROM galeries WHERE pseudo="'.$_SESSION['cb_user']->username.'"');
 
while ($data = mysql_fetch_array($requete3))
 
{
 
 echo '<a href="supprimer_photo.php?supprimer_photo=' . $data['id'] . '">'; ?>Supprimer</a><?php
 
?>

J'ai essayé pas mal de chose... :( snif

Note :
$_SESSION['cb_user']->username c'est la session du membre, username donne le nom $_SESSION['cb_user']->userid donne l'ID du membre.

Merci beaucoup pour votre aide, :wink:
Bonne soirée
Modifié en dernier par Milka le 05 sept. 2007, 13:42, modifié 2 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 sept. 2007, 00:24

Quand on clique sur le lien que tu nous montre, c'est le parametre supprimer_photo qui est envoyé via l'url. Donc de tous tes tests, les seuls à garder sont ceux où tu utilises $_GET['supprimer_photo'].

Affiche cette valeur et vérifie qu'elle correspond à ce que tu attends.

Décide toi également pour savoir à quoi elle doit correspondre par rapport à la structure de ta table : est-ce l'id ? le champ usr_id ? le champ supprimer_photo ? On essaye pas des noms de champ au p'tit bonheur la chance ......

Une fois décidé, si le champ en question est de type numérique (int, float, ...) tu ne met pas d'apostrophes autour de la valeur dans la requête. Si c'est un champ text (varchar, date, text, ...) alors tu mets des apostrophes autour de la valeur à tester.

Tu affiches ensuite la requête générée et tu regarde si la table et ses champs existent. Tu peux jouer la requête dans Mysql ou phpmyadmin pour la tester et voir s'il n'y a pas d'erreur. Tu peux également utiliser la commande "or die mysql_error())" après le mysql_query().

En fonction des succès ou messages d'erreur de ces étapes tu pourras debugguer ton code et trouver ce qui ne fonctionne pas.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

01 sept. 2007, 19:54

Merci pour ton aide, ça ma aidé :D

Mais j'ai une erreur qui s'affiche :

Code : Tout sélectionner

Parse error: syntax error, unexpected '.' in supprimer_photo.php on line 38
Voici ma ligne 38 :
<?php
// Sélection de l'utilisateur concerné
$resultat = mysql_query('SELECT usr_id, usr_name, usr_password FROM forum_users WHERE usr_name="'.$_POST['TB_Nom_Utilisateur'].'"');
?>
J'ai essayé d'enlever le point entre $_POST['TB_Nom_Utilisateur'] mais ça m'affiche une erreur...
Voici les lignes autour :
<?php
// Sélection de l'utilisateur concerné
$resultat = mysql_query('SELECT usr_id, usr_name, usr_password FROM forum_users WHERE usr_name="'.$_POST['TB_Nom_Utilisateur'].'"');

// Récupération des données
$row = mysql_fetch_array($resultat);

$_GET['supprimer_photo'] = .intval($_GET['supprimer_photo']);
$supprimer = $_GET['supprimer_photo'];
    
// Une fois le formulaire envoyé
if(isset($_POST["BT_Supprimer"]))
    {
?>
Merci beaucoup,
à bientôt

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 sept. 2007, 20:50

Ca serait pas plutôt celle là la ligne 38 avec un point qu'à rien à faire là ?
$_GET['supprimer_photo'] = .intval($_GET['supprimer_photo']); 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

05 sept. 2007, 13:41

Merci beaucoup !

Ma photo a été supprimée !

Voila ma requete :
mysql_query('DELETE FROM galeries WHERE id=\'' . $_GET['supprimer_photo'] . '\'');
Merci :D