Suppression ligne par ligne mysql en php avec confirmation

cbst Messages postés 7 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 5 septembre 2009 - 4 sept. 2009 à 10:58
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 - 5 sept. 2009 à 12:40
Salut,
j'ai débuté en php.
voilà notre pbme, j'ai crée en php une code pour supprimer une ligne précise de table demande après une confirmation en javascript,mais lorsque je clique sur supprimer cet enregistrement,tous les enregistremnts de base sont supprimé.
Voici le code:
la page supsdemande.php définir la fonction confirme en js et afficher le contenu de table:
<script language="javascript">
      function confirme( identifiant,art,date,rep )
     {
        var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement?" ) ;
if( confirmation )
{
  document.location.href = "supdde.php?cde_sce="+identifiant ;
}
      }
    </script>
  </head>

  <?php
 
 //connection au serveur
$connect = mysql_connect( "localhost", "root", "" ) or die('erreur de connexion');
 
  //sélection de la base de données:
$db  = mysql_select_db( "gestion_stock" ) or die('base introuvable');
  //requête de selection
 $aff="select * from demande order by 'desig_sce'";
$reqt=mysql_query($aff) or die ('erreur sql'.$reqt.'
'.mysql_error());
  
  
while($sql=mysql_fetch_object($reqt))
   {
  
echo($sql->cde_sce." ".$sql->desig_sce." ".$sql->type_sce." ".$sql->cde_art." ".$sql->desig_art." ".$sql->qte_dde." ".$sql->date_dde." ".$sql->resp_dde." ");


 printf("cde_sce."')" >supprimer cet enregistrement
\n") ;
 }
 ?>

</html>

et la page supdde.php supprimer le ligne correspond:
<?php
  //connection au serveur:
  $cnx = mysql_connect( "localhost", "root", "" ) or die("erreur de connexion");
  
  //sélection de la base de données:
  $db = mysql_select_db( "gestion_stock" ) or die("la base est introuvable");
  
  //récupération de la variable qui va nous permettre de savoir quel enregistrement supprimer:
  $cde_sce  = $_GET["cde_sce"] ;
  /* $cde_art  = $_GET["cde_art"] ;
    $date_dde  = $_GET["date_dde"] ;
 $resp_dde  = $_GET["resp_dde"] ;*/
  //requête SQL:
  $sql = "DELETE 
            FROM demande
    WHERE cde_sce = '$cde_sce' " ;
      
  //exécution de la requête:
  $requete = mysql_query( $sql) ;
  
  //affichage des résultats, pour savoir si la suppression a marchée:
  if($requete)
  {
    echo('<script language="javascript">alert("La suppression à été correctement effectuée");</script>') ;
  }
  else
  {
    echo('<script language="javascript">alert("La suppression à échouée");</script>');
  }
?>



MERCI BIEN D'AVANCE

7 réponses

nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
4 sept. 2009 à 15:48
Bonjour,

A bug classique, réponse classique, que raconte un var_dump() ou un print_r() de ton $_GET ?

A priori ton formulaire n'envoie pas le code, donc le GET doit être vide.
0
cbst Messages postés 7 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 5 septembre 2009
5 sept. 2009 à 09:45
Bonjour,
Merci bien nautilus,
voilà je controler la requetes avec echo

$sql = "DELETE
FROM demande
WHERE cde_sce = '$cde_sce' limit 1" ;
echo $sql;

et j'obtenir le resultat suivant:

DELETE FROM demande WHERE cde_sce = '' limit 1

la suppression de la 1ère ligne même si je selectionne la dernière
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
5 sept. 2009 à 10:22
Ce n'est pas d eta requête que le echo ets important, mais celui du contenu transmis par ton formulaire.

Quand on te demande quel est le résultat du uprint_r de ton $_GET, on ne demande pas le echo de la requête qui suit, on te demande simplement de vérifier que ton formulaire transmet bien les variables voulues.

C'ets un bug archi classique des débutants de ne jamais vérifier les valeurs envoyées et de s'imaginer que tout fonctionne du premier coup.
0
cbst Messages postés 7 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 5 septembre 2009
5 sept. 2009 à 10:33
Désolé nautilus,mais je ne compris pas qque tu veux dire...

j'ai une idée,la table demande a 3clés, je veux supprimer 1ligne selon ces 3variables,mais je ne sais pas comment j'effectue au niveau de syntaxe:
printf("cde_sce."')" >supprimer cet enregistrement
\n") 



Merci
0

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

Posez votre question
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
5 sept. 2009 à 10:41
Ton script envoie bien quelque chose, en théorie, puisque tu insères un $_GET['cde_sce'].

C'ets que cette variable soit VRAIMENT passée qu'on te demande de vérifier. Si tu ne sais pas ce qu'est car_dump ou print_r, la documentation officiielle d ePHP ets là pour ça, on ne va pas non plus la recopier ici.

On veut bien aider, mais le moindre effort quand on pointe une commande ou fonction PHP est d'aller voir ce qu'elle fait et son rôle.
0
cbst Messages postés 7 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 5 septembre 2009
5 sept. 2009 à 11:18
Merci bien nautilus99 à votre conseil
je retours à la documentation de php et je compris bien les rôles des 2 fonctions et j'utilise var_dump(cde_sce) au lieu de $_get['cde_sce'].Et maintenant tout s'execute bien.
Mais ,SVP, j'ai 1 question: j'effectue la même code avec autres tables et il execute bien,en revanche pour la table demande...
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
5 sept. 2009 à 12:40
Quand quelque chose s'exécute correctement sur pas mal d etables et pas sur une autre, c'ets qu'il y a une erreur dans le code de traitement ce cette table. Je ne suis pas devin et ne peut savoir où tu a spu faire une faute de frappe dans ton code.

'utilise var_dump(cde_sce) au lieu de $_get['cde_sce']


De plus, var_dump() ou print_r() ne servent que et uniquement à debugguer (visualiser le contenu de tableaux par exemple) mais ne remplacent pas ce contenu...
un var_dump( $_GET ) donnera l'ensemble du contenu de $GET, pour trouver ce qu'il y manque... var_dump ne remplace absolument pas le traitement des variables du $_GET dans le script, je pense que tu fais une erreur quelque part.
0
Rejoignez-nous