Problème suppresion mysql php

Bonjour,

J'ai un problème avec mon script de suppression des données dans ma base des données, il supprime directement l'entrée sans passé le bouton supprimer, c'est à dire que quand j'ouvre la page le script supprime directement le contact sélectionné de ma base des données sans que je clique sur le bouton supprimer.

Voici le script.

<?php
  //connection au serveur:
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db = mysql_select_db( "madatabase" ) ;
 
  //récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrement supprimer:

 
  //requête SQL:
 
?>
    <script language="javascript">

      function confirme( identifiant )
      {
        var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement ?" ) ;
	if( confirmation )
	{
	  document.location.href = "accueil.php"
	}
      }

    </script>

  <?php 
    $id  = intval($_GET['u']);
   $sql = "DELETE FROM agent WHERE id = ".$id;   
  //exécution de la requête:
  $result = mysql_query( $sql) ;
  //affichage des résultats, pour savoir si la suppression a marchée:
  if($requete)
  {
    echo("La suppression à été correctement effectuée") ;
  }
  else
  {
    echo("La suppression à échouée") ;
  }
	//exécution de la requête:
    $requete = mysql_query( $sql) ;
 
    //affichage des données:
   $result = mysql_fetch_object( $requete );
    {
       echo("<a href=\"#\" onClick=\"confirme('".$result->id."')\" >supprimer</a>") ;
    }
  ?>


5 réponses

  1. Salut,
    C'est tout à fait logique que cela supprime ta ligne,
    Ce code :
      $id  = intval($_GET['u']);
       $sql = "DELETE FROM agent WHERE id = ".$id;   
      //exécution de la requête:
      $result = mysql_query( $sql) ;
      //affichage des résultats, pour savoir si la suppression a marchée:
      if($requete)
      {
        echo("La suppression à été correctement effectuée") ;
      }
      else
      {
        echo("La suppression à échouée") ;
      }
    

    Exécute la requête dès que tu arrives sur la page ( car tu n'a pas de condition : isset par exemple )
    Donc à ta place je lancerai la requête SQL une fois que le bouton supprimé est cliqué :
    if(isset($_POST['mon_bouton_supprimer'])){ // lorsque le bouton est cliqué on fait...
    // construction et execution de ma requete
    
    1. Merci! Sorry pour le retard.
    2. Tu as résolu ton problème ?
    3. Non pas encore je vais bientôt me mettre toujours la corde au coup :-)
    4. Quelle erreur as-tu ?
      Détaille un peu ;)
    5. Parse error: parse error in C:\wamp\www\internetservices\delete.php on line 48

      Voici la ligne 48

             echo("<a href=\"#\" name="" onClick=\"confirme('".$result->id."')\" >supprimer</a>") ;


      Voilà ce que j'ai ajouté ce que vous m'avez montré.

      $id  = intval($_GET['u']);
      	if(isset($_POST['supprimer']))// ce j'ai ajouté
      {
         $sql = "DELETE FROM membre WHERE id = ".$id;   
        //exécution de la requête:
        $result = mysql_query( $sql) ;
        //affichage des résultats, pour savoir si la suppression a marchée:
        if($requete)
        {
          echo("La suppression à été correctement effectuée") ;
        }
        else
        {
          echo("La suppression à échouée") ;
        }
      }
  2. qqs remarques:

    fichier delete.php
    
    <?php 
      //connection au serveur: 
      $cnx = mysql_connect( "localhost", "root", "" ) ; 
      //sélection de la base de données: 
      $db = mysql_select_db( "cybernet" ) ; 
    ?> 
      
      <?php 
    //un lien n'envoie pas en POST mais en GET, et pas de name ?
     if(isset($_GET['supprimer']) && $_GET['supprimer']!= "" ){
    	$id=mysql_real_escape_string( $_GET['supprimer']); //sécurité !!
       $sql = "DELETE FROM agent WHERE id = ".$id; 
      //exécution de la requête: 
      $result = mysql_query( $sql) ; 
      //affichage des résultats, pour savoir si la suppression a marchée: 
      //if($requete)   ==> d'ou sort ce $requette ?
      if($result)
      { 
        echo("La suppression à été correctement effectuée") ; 
      } 
      else 
      { 
        echo("La suppression à échouée") ; 
      } 
    } //exécution de la requête: 
      ?>
    
    
    
    <!-- Et voici le lien sur ma page -->
    
    <a href="delete.php?supprimer=<?php echo $id; ?>">Supprimer</a>
    1. Merci !!! Cette fois-ci il affiche le message de suppression sans supprimer l'id sélectionnée
      La suppression à été correctement effectuée

      et quand j'essaie de revenir sur ma page il renvois un message d'erreur en comme ceci :
      Notice: Undefined index: u in C:\wamp\www\internetservices\detailles_agents.php on line 14


      Et voici ma ligne 14

      $sql = 'SELECT 'id', 'nom', 'prenom', 'matricule', 'privilege', 'date', 'email', 'telephone', 'fonction_tech', 'update_date', 'intervention' FROM 'agent' WHERE id='.intval($_GET['u']).'';  
      
      $
      Le (u) me permet de récupéré l'id de chaque agent dans le lien.
      Voilà comment j'ai construis le lien
      <a href="accueil.php?view=23&u='.$row['id'].'">'.$row['nom'].'</a>
  3. Cette fois-ci il affiche le message de suppression sans supprimer l'id sélectionnée

    c'est à dire ?

    as tu vérifié dans ta BDD si la ligne correspondant à cet id a effectivement été supprimée ?

    et quand j'essaie de revenir sur ma page ...
    tu revient comment , par le bouton précédent du navigateur ?

    as tu un bouton retour vers accueil dans la page delete.php après la suppression ?
    1. J'ai vérifié dans la base des donnée il est toujours présent. Je reviens avec le bouton précédent de mon navigateur. Je n'ai pas créer de bouton retour dans le fichier delete.php. Mais en principe ça devait quand même même marcher même si j'utilise le bouton précédent du navigateur.
  4. non le bouton précédent du navigateur te "ressert" la page telle qu'elle était avant la suppression. (cache)
    donc avec l'id que tu viens de supprimer y est encore, d'où l'erreur

    pareil pour voir dans ta BDD, dans phpmyadmin, est ce que après la suppression, tu cliques bien sur afficher ?

    est ce que si tu appelles la page accueil directement il y est toujours ?

    désolé pour toutes ces questions qui peuvent te paraitre évidentes peut être.
    1. Ne t'en fais pas pour les questions c'est plutôt moi qui suis désolé.
      J'ai créer le bouton de retour mais il est toujours présent, de même dans ma base des données, j'actualise et même quand je clique sur afficher il y est toujours.

      Voici le lien qui apparait sur ma barre d'adresse quand je clique sur supprimer :
      delete.php?supprimer=23


      Le 23 correspond à l'id de la page

      Or l'id d'un agent correspond à ce url
      23&u=3


      d'où la suppression devais être comme ceci n'est-ce pas ?
      delete.php?supprimer=23&u=id
  5. delete.php?supprimer=23&u=id

    non le numero de l'id a supprimer est 23, donc contenu dans supprimer
    donc dans l'url il suffit d'avoir
    delete.php?supprimer=23


    et dans delete.php récupéres l'id par $_GET['supprimer']

    comme fait dans mon post plus haut:

    if(isset($_GET['supprimer']) && $_GET['supprimer']!= "" ){
    	$id=mysql_real_escape_string( $_GET['supprimer']);