Problème suppresion mysql php

glodybiss Messages postés 509 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
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>") ;
    }
  ?>


A voir également:

5 réponses

Melooo Messages postés 1476 Statut Membre 84
 
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
glodybiss Messages postés 509 Statut Membre 9
 
Merci! Sorry pour le retard.
0
Melooo Messages postés 1476 Statut Membre 84
 
Tu as résolu ton problème ?
0
glodybiss Messages postés 509 Statut Membre 9
 
Non pas encore je vais bientôt me mettre toujours la corde au coup :-)
0
Melooo Messages postés 1476 Statut Membre 84
 
Quelle erreur as-tu ?
Détaille un peu ;)
0
glodybiss Messages postés 509 Statut Membre 9
 
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") ;
  }
}
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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>
0
glodybiss Messages postés 509 Statut Membre 9
 
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>
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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 ?
0
glodybiss Messages postés 509 Statut Membre 9
 
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.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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.
0
glodybiss Messages postés 509 Statut Membre 9
 
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
0

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

Posez votre question
Alain_42 Messages postés 5413 Statut Membre 894
 
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']);
0