Rechercher : dans
Par :

[PHP] Supprimer un enregistrement mysql

Dernière réponse le 6 avr 2009 à 14:18:32 Papymucho, le 20 jun 2007 à 16:47:26 
 Signaler ce message aux modérateurs

Je n'arrive pas à supprimer un enregistrement dans une table mysql à partir d'un menu déroulant dynamique, je ne suis pas sur mais le problème se situerais dans la récupération de l'id?
Quelqu'un pourrais t'il m'expliquer? quand je valide la suppression, j'ai une erreur "Exécution de la requête impossible" donc j'ai bien mon menu déroulant dynamique, mais c'est a la validation pour l'effacement que ca buche, je dois avoir un problème dans la syntaxe :
$rq = "DELETE * FROM Stages ('', $stage', '')";
$result = mysql_query($rq)

Le code du formulaire :


<?php

include("Connexion.php");
$rq = "SELECT DISTINCT * FROM Stages ORDER BY Stage";
$select_stage = mysql_query($rq)
or die ("Exécution de la requête impossible");

$étiquettes = array ("efface" => "Effacer un stage");


echo "<p><hr>


<form action='Effacer_Stage.php' method='post'>
<center><table width='95%' border='0' cellspacing='0' cellpading='2'>
<tr><td align='right'><b>{$étiquettes['efface']} :</br></td>
<td><select name='stage'>\n";
while ($choix_stage = mysql_fetch_array($select_stage))
{
extract($choix_stage);
if ($Stage<>"")
echo "<option value='$Stage'>$Stage\n";
}
echo "</select>\n
</table><p><hr><p>
<p><input type='submit' name='validation' value='Validez'></p><br>
</form>\n
</center>";

?>


Et le code du traitement :


<?php

include("Connexion.php");


$rq = "DELETE * FROM Stages ('', $stage', '')";
$result = mysql_query($rq)
or die ("Exécution de la requête impossible.");
echo "<b>Stage bien rajouté dans la base de données.</b><br>";

mysql_close();

?>

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [PHP] Supprimer un enregistrement mysql » dans :
MySQL - Supprimer des doublons dans une table VoirPour supprimer des doublons au niveau d'une table donnée définie comme suit : CREATE TABLE IF NOT EXISTS TabTest ( cle_prim integer(4) NOT NULL auto_increment, x integer, y integer, z integer, ...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

Papymucho, le 20 jun 2007 à 16:48:40

J'oubliais, bien l'bonjour!!! :-))

et un grand merci d'avance à celui ou ceux qui pourront m'aider ainsi que 'expliquer :-)

Répondre à Papymucho

2

gryzzly, le 20 jun 2007 à 16:54:35

or die ("Exécution de la requête impossible.");

--> or die ('Exécution de la requête impossible : ' . mysql_error()); pour avoir l'explication de l'erreur Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

3

Papymucho, le 20 jun 2007 à 16:55:31

Hum première erreur désolé pour cela, je viens de me rendre compte que mes valeurs n'étaient pas les mêmes :
$rq = "DELETE * FROM Stages ('', $stage', '')";
$result = mysql_query($rq)

La première lettre de stage est en mauscule :
$rq = "DELETE * FROM Stages ('', $Stage', '')";
$result = mysql_query($rq)


Mais ça ne marche toujours pas, toujours la même erreur, Exécution de la requête impossible.

Répondre à Papymucho

4

Papymucho, le 20 jun 2007 à 16:59:45

A oui en effet, sympathique cette petite fonction je ne connaissais pas ô grand débutant que je suis :-)

donc ça me renvoi ça, ce qui ne m'avance guère plus

Exécution de la requête impossible:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM Stages' at line 1

Répondre à Papymucho

5

gryzzly, le 20 jun 2007 à 17:05:34

$rq = "DELETE * FROM Stages ('', $Stage', '')"; <<-- c'est quoi toutes ces virgules, ces quotes, etc... ?

$rq = "delete * from Stages where stage = $stage" (en supposant que la base est Stages et l'entrée stage) Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

6

Papymucho, le 20 jun 2007 à 17:16:19

Bah en fait ne connaissant pas j'ai récupéré ce que me dit mysql quand j'efface un enregistrement.
Un peu comme un INSERT INTO, enfin de la façon que je connais :/

donc pour expliquer mon bien piètre raisonnement:

$rq = "DELETE * FROM Stages ('ID_Stage', $Stage', 'Objectifs')";

comme la seule valeur que j'arrive a récupérer est $Stage, je mets les autres entre apostrophe.
La base est Forma_Script, la table Stages laquelle contient 3 champs, dans l'ordre :
ID_Stage - Stage - Objectifs


Merci pour ton aide gryzzly :-) mais en fait ça ne marche toujours pas sniff

Répondre à Papymucho

7

gryzzly, le 20 jun 2007 à 17:23:16

T'as essayé directemnet dans mysql via phpmyadmin ou en copiant dans ta page et en testant depuis ta page ?? (en remplacant $stage par une valeur bien sur...)

parce que j'ai l'impression que ta page est codée degeulisse... Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

8

Papymucho, le 20 jun 2007 à 17:29:17

Oui en effacant dans phpmyadmin j'ai pas de soucis, je me suis d'ailleurs basé sur ça pour récupérer la syntaxe : DELETE FROM 'stages' WHERE 'stages'.'ID_Stages' = 28 LIMIT 1

c'est la que je pensais qu'il fallait d'abord récupérer l'id du stage correspondant à $Stage pour pouoi supprimer la ligne.

Codé dégueulasse bah oui, je commence....

Répondre à Papymucho

9

gryzzly, le 20 jun 2007 à 17:32:55

Debutant = c'est psa une raison pour coder degueulisse...

deja je capte rien a tes noms de variables, aux noms de valeurs, etC... comence par revoir ca proprement, va lire les tutos du siteduzero.com ...

courage ;-) Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

10

Papymucho, le 20 jun 2007 à 17:37:47

Ok un grand merci pour ce conseil on ne peut plus constructif ^^

Sur ce bonne soirée, fin du taff, je trouverais ce soir tranquille chez moi...

Répondre à Papymucho

11

power11, le 10 avr 2008 à 10:04:32

Slt a tous un probleme ,je voudrais supprimer un enregistrement dans une base de donnée mysql grace à un petit formulaire d'ou l'on mettra le login et le mot de passe.
merci d'avance pour celui qui va m'aider.

Répondre à power11

12

Kitty-cat, le 10 avr 2008 à 10:10:30

Essaye par toi-même d'abord. SI ca foire, j'te filerai un coup de main.

ET pour le sujet de départ du topic...grizzly, plutot que de lui dire d'apprendre à coder propre, t'aurais pu ouvrir tes yeux et te rendre compte qu'il y avait un problème de quote, ce qui avait l'air vraisemblablement d'être le problème :p

Répondre à Kitty-cat

13

gryzzly, le 10 avr 2008 à 10:20:09

#2 : c'est cool non, mysql te dit tous les problèmes,ça te permet en plus de le gérer par toi même
#5 : c'est cool non, je lui donne une requête qui fonctionne sans se trimballer des choses inutiles
++
Moi j'dis ça, j'dis rien ... .Moi. Et pi c'est tout !

Répondre à gryzzly

14

power11, le 11 avr 2008 à 11:43:37
  • +1

Je l'ai fai et ce la ne marche pas voici le code de suppression que j'ai nommer desinscription.php
<?php
$login=$_POST['login'];
$motpasse=$_POST['motpasse'];
$host="localhost";
$user="root";
$password="";
$bdd="system";

if (mysql_connect($host,$user,$password))
{
//echo "connexion reussie";
}
else
{
//echo("erreur de connexion");
}
mysql_select_db($bdd) /*or die ('erreure de connexion à la base de donnée')*/;

$select="select * from inscription where login='$login' AND motpasse='$motpasse'";
$rep= mysql_query($select) or die ('erreure insert!<br>'.$select.'<br>'. mysql_error());
if ($valider=mysql_fetch_array($rep))
{
$vallogin=$valider['login'];
$valmotpasse=$valider['motpasse'];
}
if (isset ($vallogin) AND isset ($valmotpasse))

mysql_query("DELETE FROM inscription WHERE nom='$nom'AND prenom='$prenom'AND login='$login'AND motpasse='$motpasse'AND confirmermotpasse='$confirmermotpasse'AND mail='$mail'AND sexe='$sexe'AND nationnalite='$nationnalite'AND jours='$jours'AND mois='$mois'AND annee='$annee'AND pays='$pays'");
{
echo '<script language=javascript> alert ("vous venez de supprimer votre compte sur le site arobase");</script>';
}
mysql_close()
?>
Ainsi nous avons aussi le code d'inscription.
Comme sur le site de commentcamarche pour se desinscrire

merci pour votre aide

Répondre à power11

23

 papillon, le 6 avr 2009 à 14:18:32

Je peux supprimer un enregistrement de ma table article en donnant le code et la désignation de mon produit dans le form_delete en php je ne sais pas comment faire le script_delete malgré la connexion avec ma base est déja fait.svp répond moi

Répondre à papillon

15

power11, le 13 mai 2008 à 12:29:31

Slt a tous celà faire des jours que je cherches une solution a mon probleme et je suis sur que j'aurais une reponse concrète ojoud'hui c'est concernant la suppression d'un enregistrement dans une base de donnée mysql via un formulaire.Je m'explique, j'ai un formulaire que je nomme desinscrire.php qui contient un login et un mot de passe.C'est ainsi que pour l'utilisateur qui decide de supprimer son compte sur le site, qu'il remplisse le formulaire et l'envoie automatiquement son compte sera supprimer.
merci pour votre aide je l'en faire mais cela ne marche pas. voici le code

<?
if(isset($_POST['login'])and($_POST['motpasse']))
{
$login=$_POST['login'];
$motpasse=$_POST['motpasse'];
$host="localhost";
$user="root";
$password="";
$bdd="system";

if (mysql_connect($host,$user,$password))
{
//echo "connexion reussie";
}
else
{
//echo("erreur de connexion");
}
mysql_select_db($bdd) /*or die ('erreure de connexion à la base de donnée')*/;


$select="select * from inscription where login='$login' AND motpasse='$motpasse'";
$rep= mysql_query($select) or die ('erreure insert!<br>'.$select.'<br>'. mysql_error());
if ($valider=mysql_fetch_array($rep))
{
$vallogin=$valider['login'];
$valmotpasse=$valider['motpasse'];
}

if (isset $vallogin and isset $valmotpasse)

$requete="delete * from inscription where nom='$nom'AND prenom='$prenom'AND login='$login'AND motpasse='$motpasse'AND confirmermotpasse='$confirmermotpasse'AND mail='$mail'AND sexe='$sexe'AND nationnalite='$nationnalite'AND jours='$jours'AND mois='$mois'AND annee='$annee'AND pays='$pays'";

$reponse=mysql_query($requete) or die ('erreure insert!<br>'.$requete.'<br>'.mysql_error());


{
echo '<script language=javascript> alert ("vous venez de supprimer votre compte ");</script>';
}
else
{
echo '<script language=javascript> alert ("erreure de suppression");</script>';

}
}
?>
merci pour votre aide je suis a l 'ecoute

Répondre à power11

16

Torkass, le 13 mai 2008 à 13:51:09

Je crois que tu te compliques la vie ! ^^

Ne serait-il pas plus simple d'ajouter un bouton ou une case à cocher dans le profil du membre et visible uniquement par lui ? Il pourrait facilement supprimer son compte ainsi, via son id.

Répondre à Torkass

17

Alain_42, le 13 mai 2008 à 13:54:39

Bonjour,

tu utiles des variables pour ta clause WHERE qui n'éxistent pas:


if ($valider=mysql_fetch_array($rep))
{
$vallogin=$valider['login'];
$valmotpasse=$valider['motpasse'];
}

if (isset $vallogin and isset $valmotpasse)

$requete="delete * from inscription where nom='$nom'AND prenom='$prenom'AND login='$login'AND motpasse='$motpasse'AND confirmermotpasse='$confirmermotpasse'AND mail='$mail'AND sexe='$sexe'AND nationnalite='$nationnalite'AND jours='$jours'AND mois='$mois'AND annee='$annee'AND pays='$pays'";



essayes plutot:


if (isset $vallogin and isset $valmotpasse)

$requete="DELETE * FROM inscription WHERE login='$vallogin' AND motpasse='$valmotpasse'";



ça deletera l'enr correspondant à celui choisi dans le formualire.

Répondre à Alain_42

18

power11, le 13 mai 2008 à 14:08:22

Jè faire mais celà ne donne pas le resultat excompter après les recherches j'ai trouver quelque chose mais il ya quelque chose qui me fatigue s'est concernant l'id ,il fodrais l'indiquer avant que l'enregistrement se supprimer dc je voulais savoir comment faire pour ne pas indiquer l'id et avoir :une suppression voici le code.
if(isset($_POST['login'])&& isset($_POST['motpasse']))
{
$login=$_POST['login'];
$motpasse=$_POST['motpasse'];
$host="localhost";
$user="root";
$password="";
$bdd="system";

if (mysql_connect($host,$user,$password))
{
//echo "connexion reussie";
}
else
{
//echo("erreur de connexion");
}
mysql_select_db($bdd) /*or die ('erreure de connexion à la base de donnée')*/;

if(mysql_query("DELETE FROM inscription WHERE id= '2'")){
echo 'la ligne 2 est suprimé.';
}else{
echo 'Erreur lors de la suppression de la ligne 2 !';
}

cela supprimer l'enregistrement 2 or moi je ne veux pas specifier l'id merci pour tous je suis a l'ecoute.

Répondre à power11

19

power11, le 13 mai 2008 à 15:06:03

Ok je vien de trouver ainsi je remerci tous ceux qui ont essayer m'apporter leur soutien ke DIEU vous comble de vos desirs voici le code:
if(isset($_POST['login'])&& isset($_POST['motpasse']))
{
$login=$_POST['login'];
$motpasse=$_POST['motpasse'];
$host="localhost";
$user="root";
$password="";
$bdd="system";

if (mysql_connect($host,$user,$password))
{
//echo "connexion reussie";
}
else
{
//echo("erreur de connexion");
}
mysql_select_db($bdd) /*or die ('erreure de connexion à la base de donnée')*/;



//Supression d'un enregistrement dans la table 'inscription'
if(mysql_query("DELETE FROM inscription WHERE login='$login'AND motpasse='$motpasse'"))
{
header('location:index.php');
echo '<script language=javascript> alert ("vous venez de supprimer votre compte sur le site arobase");</script>';
}
else
{
header('location:desinscription.php');
echo '<script language=javascript> alert ("erreure de suppression");</script>';

}
}

merci encore et a bientot

Répondre à power11

20

serval07, le 25 aoû 2008 à 09:20:06

Salut, j`a
Je n'arrive pas à supprimer un enregistrement dans une table mysql à partir d'un menu déroulant dynamique car j'ai une erreur, "cannot process query You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1:
Voici les codes que j`utilise:

Le code du formulaire :

<form action="deletedclauses.php" method="post" name="form1">



<?php



$link= mysql_connect("localhost","root","");

if(!$link)

die(" No connection with the database");

else

{

$db="test";

$sqldb=mysql_select_db($db);





if($sqldb)

{

$result = mysql_query("select * from clauses");

?>



<table width="75%" border="1">

<tr>

<td>ID</td>

<td><select name="menu1">



<?php



while($r = mysql_fetch_object($result))

{

?>



<option value=<?php

print $r->ID

?>>

<?php

print $r->ID

?></option>





<?php

}



?>

</select></td>



</tr>





<tr>

<td><input type="submit" nom="submit" value="Delete"></td>

<td> </td>

</tr>



<?php



}



else

die("Cannot open a connection with the mysql databases ");

print "This form allow you to delete a clause after selecting it`s ID.";



}



mysql_close($link);

?>

</form>






Et le code du traitement :




<?php





$link= mysql_connect("localhost","root","");



if(!$link)

die(" No connection with the database");



else

{

$db="gfa";

$sqldb=mysql_select_db($db);





if($sqldb)

{

mysql_query("DELETE FROM cluases WHERE ID=$menu1",$link) or die("cannot process query".mysql_error());

print $menu1 ."has been deleted in database test";



}



else

die("Cannot open a connection with the mysql databases ");



}



mysql_close($link);

?>



J`aurais besion de votre aidre, merci d`avance.

Répondre à serval07

21

Alain_42, le 27 aoû 2008 à 18:20:34

Ouvre un autre topic plutot que de te rajouter sur un existant

Répondre à Alain_42

22

billwate, le 27 aoû 2008 à 18:59:01

Je ne sais pas si ta syntaxe est correcte. Je ne connais pas
DELETE * FROM table
mais plutot
DELETE FROM table WHERE ... critère ...
Remarque que le 'etoile' a disparu.
A chaque pas en arrière, il faut en faire au moins deux en avant

Répondre à billwate
Collection CommentÇaMarche.net