Supprimer enregistrement dans la BDD_

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Supprimer enregistrement dans la BDD_

Re: Supprimer enregistrement dans la BDD_

par civodul88 » 27 nov. 2011, 14:57

merci a toi AB pour cette exemple qui vient de me rendre un grand service.
il marche parfaitement ;)

Re: Supprimer enregistrement dans la BDD_

par zeus » 27 janv. 2010, 16:19

Modération :
Puisque ta question est résolue, je l'indique en ajoutant la petite icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Re: Supprimer enregistrement dans la BDD_

par AB » 22 janv. 2010, 13:21

Ben puisque je te dis que tout est dans cette même page, ça renvoie sur cette même page. Faut faire le test tel quel et ensuite quand ça fonctionnera tu l'adapteras à tes besoins.

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 22 janv. 2010, 13:06

Juste une petite question :
<form action = "#" method = "post">
Vers quelle page ça doit renvoyer?

8-)

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 22 janv. 2010, 12:47

Tout marche impec' :) Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii =D> =D>


PROBLEME RESOLU

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 22 janv. 2010, 12:20

ok

J'avais pas vu le code en entier en fait :roll:
J'essaye :wink:

Re: Supprimer enregistrement dans la BDD_

par AB » 22 janv. 2010, 11:34

Un exemple à peu près bien structuré dans une seule page...
ça veut dire que tout est inclus dans cette page.
Il te suffit de copier-coller le code que je t'ai proposé dans une nouvelle page (vierge) et de la tester séparément sans rien modifier au départ.

Si ça te retourne des erreurs, on avisera.

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 22 janv. 2010, 10:38

EDIT : Si je clique sur le bouton 'supprimer ' j'arrive bien sur ma deuxième page 'traitement_suppression_client'. Mais rien n'est supprimé pour autant.
Je crois que le problème vient du fait que ce n'est pas relié. Si je clique sur le bouton 'supprimer' il n'y a pas de client sélectionné et si je clique sur un client il ne sait pas qu'il faut le supprimer.
Peut être que si une fois qu'on avait cliqué sur un client, le bouton 'supprimer' apparaissait ça serait mieux, non ?

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 22 janv. 2010, 10:29

Ca c'est bien ce que j'ai sur ma deuxième page oui :)

Traitement_suppression_client :
<!-- TRAITEMENT SUPPRESSION D'UN CLIENT --> 

<?php
if (isset($_POST['supprimer']))
{
$id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
$query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";  
$delete = mysql_query($query) or die(mysql_error());
}

if ($delete == 1) echo 'L\'enregistrement a été supprimé';
?>
Et sur ma première page, je n'ai gardé que ça ( il me semble que cette fois ci ça ne liste qu'une seule fois ):

Suppression_client :
<?php
mysql_connect("localhost", "root"); 
mysql_select_db("tournant"); 

// Requête qui récupère toutes les données de la table
$reponse = mysql_query("SELECT nom, prenom FROM formulaire") or die(mysql_error());
?>
							
<!-- Organisation des données -->
<form action = "traitement_suppression_client" method = "post">
<?php
while ($donnees = mysql_fetch_array($reponse) )
{

$nom = $donnees['nom'];
$prenom = $donnees['prenom'];
echo '<br /><li><a href="http://localhost/TOURNANT/template_blog_orange/pages/lecture_bdd/traitement_suppression_client.php?nom='.$nom.'&prenom='.$prenom.'">'; ?>
							
<?php echo $donnees['nom'];?> <?php echo $donnees['prenom'];?></a> <br />
							
							
<input name="supprimer" type="submit" value = "Supprimer" />
<input type="hidden" name="ID" value="<?php echo $row_client['ID']?>" />
							
<?php
}
mysql_close();?>
Maintenant, j'ai une liste de clients et un bouton 'supprimer'. Si je clique sur le bouton, j'arrive sur 'page web introuvable' et si je clique sur un client 'Undefined variable: delete in C:\wamp\www\TOURNANT\template_blog_orange\pages\Lecture_BDD\traitement_suppression_client.php on line 41'

Re: Supprimer enregistrement dans la BDD_

par AB » 21 janv. 2010, 17:00

Un exemple à peu près bien structuré dans une seule page :
<?php 
mysql_connect("localhost", "root");
mysql_select_db("tournant"); 


// Requête qui efface un enregistrement suivant son ID
if (isset($_POST['supprimer']))
{
	$id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
	$query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";  
	
	$delete = mysql_query($query) or die(mysql_error());
}



// Requête qui récupère toutes les données de la table
$query = "SELECT ID, NOM, PRENOM FROM formulaire";
$liste = mysql_query($query) or die(mysql_error());

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Supression client</title>
</head>

<body>

<div>
<?php if (isset($delete) && $delete == 1) echo '1 enregistrement à été supprimé';?>
</div>

<div>
<form action = "#" method = "post">
<?php
while ($row_client = mysql_fetch_assoc($liste))
{ ?>
<p>
Nom, prénom : <?php echo $row_client['NOM'].' '.$row_client['PRENOM'].' ';?>
<input name = "supprimer" type = "submit" value = "Supprimer" />
<input type = "hidden" name = "ID" value = "<?php echo $row_client['ID']?>" />
</p>
<?php } ?>
 </form>
</div>

</body>
</html>
J'ai pas testé mais c'est le principe

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 21 janv. 2010, 15:13

Et la page 'traitement_suppression_client' est celle ci :
<?php
if (isset($_POST['supprimer']))
{
$id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
$query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";  
$delete = mysql_query($query) or die(mysql_error());
}

if ($delete == 1) echo '1 enregistrement a été supprimé';
?>

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 21 janv. 2010, 15:10

En résumé, cette page me sert à afficher les clients. J'ai repris mon ancien code qui permettait d'afficher la liste des clients et j'ai ajouté à la suite ce que tu m'as donné.

Je te mets ici cette page là toute entière :
<!-- AFFICHAGE DE L'ENSEMBLE DES CLIENTS ENREGISTRES --> 

<?php
mysql_connect("localhost", "root"); 
mysql_select_db("tournant"); 

// Requête qui récupère toutes les données de la table
$reponse = mysql_query("SELECT nom, prenom FROM formulaire") or die(mysql_error());

// Organisation des données
while ($donnees = mysql_fetch_array($reponse) )
{

$nom = $donnees['nom'];
$prenom = $donnees['prenom'];
echo '<br /><li><a href="http://localhost/TOURNANT/template_blog_orange/pages/lecture_bdd/traitement_suppression_client.php?nom='.$nom.'&prenom='.$prenom.'">'; ?>
<?php echo $donnees['nom'];?> <?php echo $donnees['prenom'];?></a> <br />


<!-- SUPPRESSION D'UN CLIENT --> 
							
<form action = "traitement_suppression_client" method = "post">
<?php 
while ($row_client = mysql_fetch_assoc($reponse))
{
?>
<p>
Nom, prénom : <?php echo $row_client['nom'].' '.$row_client['prenom']?> 
<input name="supprimer" type="submit" value = "Supprimer" />
<input type="hidden" name="ID" value="<?php echo $row_client['ID']?>" />
</p>
<?php 
}
?>
</form>
								
<?php
}
mysql_close();
?>

Re: Supprimer enregistrement dans la BDD_

par AB » 21 janv. 2010, 13:03

Bah oui si tu fais afficher "Suppression effectuée" sans condition, tu afficheras toujours cette mention.
DELETE efface les enregistrements qui satisfont la condition donnée par clause_where, et retourne le nombre d'enregistrements effacés...
Donc la bonne syntaxe est
<?php
if (isset($_POST['supprimer']))
{
$id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
$query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";  
$delete = mysql_query($query) or die(mysql_error());
}

if ($delete == 1) echo '1 enregistrement à été supprimé';
?>
Mais cela ne résoudra pas pour autant ton problème qui est ailleurs

Question : à quoi sert ce code ?
// Organisation des données
while ($donnees = mysql_fetch_array($reponse) )
{

$nom = $donnees['nom'];
$prenom = $donnees['prenom'];
echo '<br /><li><a href="http://localhost/TOURNANT/template_blog_orange/pages/lecture_bdd/lecture_infos.php?nom='.$nom.'&prenom='.$prenom.'">'; ?>
<?php echo $donnees['nom'];?> <?php echo $donnees['prenom'];?></a> <br />

<?php
}
mysql_close();

Re: Supprimer enregistrement dans la BDD_

par Cindy1989s » 21 janv. 2010, 12:46

Merci :D mais même en mettant ça :
<?php
if (isset($_POST['supprimer']))
{
$id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
$query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";  
$delete = mysql_query($query) or die(mysql_error());
}
echo 'Suppression effectuée'
?>
Il me dit "suppression effectuée" quand je clique sur un client mais pourtant il reste dans la base :roll:

Re: Supprimer enregistrement dans la BDD_

par AB » 21 janv. 2010, 12:31

<?php
if (isset($_POST['supprimer']))
{
id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
$mysql_query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";    
//etc.  
}
?>
Dans mon exemple il y avait 'etc.' qu'il fallait compléter et non pas simplement effacer.
La requête est écrite, il suffit maintenant de l'exécuter
<?php
if (isset($_POST['supprimer']))
{
id_a_supprimer =  isset($_POST['ID']) && is_numeric($_POST['ID'])? intval($_POST['ID']) : null;
$query = "DELETE FROM formulaire WHERE ID = ".$id_a_supprimer."";      
$delete = mysql_query($query) or die(mysql_error());
}
?>