Problème suppresion mysql php

Fermé
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 - 26 déc. 2011 à 16:06
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 29 déc. 2011 à 10:26
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 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
26 déc. 2011 à 16:50
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 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
27 déc. 2011 à 08:34
Merci! Sorry pour le retard.
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
27 déc. 2011 à 08:37
Tu as résolu ton problème ?
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
27 déc. 2011 à 11:05
Non pas encore je vais bientôt me mettre toujours la corde au coup :-)
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
27 déc. 2011 à 11:48
Quelle erreur as-tu ?
Détaille un peu ;)
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
27 déc. 2011 à 12:29
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 déc. 2011 à 17:12
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 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
Modifié par glodybiss le 29/12/2011 à 08:55
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 déc. 2011 à 09:01
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 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
29 déc. 2011 à 09:13
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 29/12/2011 à 09:45
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 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
29 déc. 2011 à 10:05
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 déc. 2011 à 10:26
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