supprimer enregistrement

supprimer enregistrement - SQL/NoSQL - Programmation

Marsh Posté le 02-05-2005 à 10:24:11    

Bonjour
J'aimerais supprimer un enregistrement sur l'action d'un bouton
 
donc j'ai fais
 
<INPUT TYPE="BUTTON" VALUE="Supprimer" onClick="<?php  
mysql_select_db("base de données" );
$query = "DELETE FROM table where condition;
$result = mysql_query($query);
?>" >
 
je suis déjà connecté à la base de données plus haut dans mon code
 
mais bon ca marche pas ...
si quelqu'un pourrait m'aider

Reply

Marsh Posté le 02-05-2005 à 10:24:11   

Reply

Marsh Posté le 02-05-2005 à 10:26:17    

Tu n'as rien compris au fonctionnement de php. Et ce n'est pas une question sql.
 
Le php est exécuté par le serveur, et tu essaies d'exécuter du code php sur un onclick, qui est un événement géré par le client. Tu dois mettre ta suppression php dans une autre page, et envoyer sur cette page.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 10:29:46    

ok, je vais essayé

Reply

Marsh Posté le 02-05-2005 à 14:05:06    

J'ai réussi à supprimer les enregistrements sur une autre page
 
mysql_select_db("base de données" );
$query = "DELETE from table where condition";
$result = mysql_query($query);
 
Mais j'aimerais supprimer seulement le dernier enregistrement
 
Dans ma table, j'ai la clée qui est incrémentée en auto
j'aimerais donc supprimer la ligne avec la clée la plus grande en respectant les condition du where
 
comment je pourrais faire
j'ai essayé
DELETE from table where cle=(select max(cle))
mais ca ne fonctionne pas

Reply

Marsh Posté le 02-05-2005 à 14:10:57    

machineths a écrit :


DELETE from table where cle=(select max(cle))
mais ca ne fonctionne pas


 
"select max(cle) from table" peut être ?
 
Ca sert de lire la doc.

Reply

Marsh Posté le 02-05-2005 à 14:13:34    

non j'ai essayé aussi, ca ne fonctionne pas

Reply

Marsh Posté le 02-05-2005 à 14:17:14    

Si tu avais parcouru, ne serait-ce qu'une seule fois, une doc SQL, tu saurais que "table" est un mot reservé  :D

Reply

Marsh Posté le 02-05-2005 à 14:18:32    

machineths a écrit :

non j'ai essayé aussi, ca ne fonctionne pas


quelle est l'erreur?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:19:18    

oui je sais quand même
j'ai un nom pour la table, et j'ai un nom pour ma base de données aussi

Reply

Marsh Posté le 02-05-2005 à 14:28:51    

machineths a écrit :


j'ai essayé
DELETE from table where cle=(select max(cle))
mais ca ne fonctionne pas


faudrait voir à apprendre le SQL en plus du PHP mon grand hein !
déjà faire une sous requete pour ça, c'est n'importe quoi, mais si tu y tiens vraiment, t'as pas l'impression d'avoir oublié la clause FROM dans ta sous requete ?
en plus, c'est pas "cle = (...)", mais "cle IN (...)"


Message édité par Harkonnen le 02-05-2005 à 14:29:46

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 02-05-2005 à 14:28:51   

Reply

Marsh Posté le 02-05-2005 à 14:29:40    

skeye a écrit :

quelle est l'erreur?


Je mise sur "Erreur 500"  :whistle:  
 
Plus sérieusement, si c'est du mysql, ça doit être la 1093.

Reply

Marsh Posté le 02-05-2005 à 14:31:28    

Friday Monday a écrit :

Je mise sur "Erreur 500"  :whistle:  
 
Plus sérieusement, si c'est du mysql, ça doit être la 1093.


 
 

Citation :


$oerr ora 1093
01093, 00000, "ALTER DATABASE CLOSE only permitted with no sessions connected"
// *Cause:  There is at least one more session other than the current one
//         logged into the instance.  ALTER DATABASE CLOSE is not permitted.
// *Action: Find the other sessions and log them out and resubmit the command


 
Je crains que tu confondes SQL et mysql...[:petrus75]
Je veux un message, pas un numéro à la con.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:32:19    

bordayl, mais vous voyez pas que c'est le IN qui cloche ? [:mlc]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 02-05-2005 à 14:33:33    

Harkonnen a écrit :

bordayl, mais vous voyez pas que c'est le IN qui cloche ? [:mlc]


 
Ben non, yen a pas.[:petrus75]
(et j'aurais bien voulu lui faire écrire le message d'erreur, histoire qu'il trouve tout seul...[:petrus75])


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:34:47    

Harkonnen a écrit :

bordayl, mais vous voyez pas que c'est le IN qui cloche ? [:mlc]


 
Perso, j'utilise pas IN dans ces cas là mais plutôt un delete from maTable order by cle desc limit 1 (en esperant qu'il y ait un index sur cle :D)

Reply

Marsh Posté le 02-05-2005 à 14:35:35    

Friday Monday a écrit :

Perso, j'utilise pas IN dans ces cas là mais plutôt un delete from maTable order by cle desc limit 1 (en esperant qu'il y ait un index sur cle :D)


 
Ce qui confirme que tu utilises exclusivement mysql.[:petrus75]
Et c'est très très mal de faire comme ça.:o


Message édité par skeye le 02-05-2005 à 14:35:44

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:35:53    

skeye a écrit :


Je crains que tu confondes SQL et mysql...[:petrus75]
Je veux un message, pas un numéro à la con.:o


 
Et moi je crains que tu ne saches pas lire puisque tu me sors la doc d'oracle alors que j'ai mis la clause "si c'est du mysql"

Reply

Marsh Posté le 02-05-2005 à 14:36:25    

voila le code complet pour ce delete
 
$query = "DELETE from pi where cause_pi IS NULL AND num_pi IN 'SELECT MAX(num_pi) FROM pi'";
$result = mysql_query($query);
 
je n'ai pas d'erreur, mais l'enregistrement n'est pas supprimé

Reply

Marsh Posté le 02-05-2005 à 14:36:46    

Friday Monday a écrit :

Et moi je crains que tu ne saches pas lire puisque tu me sors la doc d'oracle alors que j'ai mis la clause "si c'est du mysql"


 
[:hide]
Effectivement, j'ai lu un peu vite...[:moule_bite]
Mais présumer du sgbd c'est mal.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:38:18    

machineths a écrit :

voila le code complet pour ce delete
 
$query = "DELETE from pi where cause_pi IS NULL AND num_pi IN 'SELECT MAX(num_pi) FROM pi'";
$result = mysql_query($query);
 
je n'ai pas d'erreur, mais l'enregistrement n'est pas supprimé


 
essaie d'ajouter ça, tu l'auras ton erreur.:o
 

Code :
  1. if(!$result){
  2. echo mysql_error();
  3. }


 
Et depuis quand on met une sous-requete entre quotes??


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:40:00    

machineths a écrit :

voila le code complet pour ce delete
 
$query = "DELETE from pi where cause_pi IS NULL AND num_pi IN 'SELECT MAX(num_pi) FROM pi'";
$result = mysql_query($query);
 
je n'ai pas d'erreur, mais l'enregistrement n'est pas supprimé


 [:atog]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 02-05-2005 à 14:40:17    


[:ddr555]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-05-2005 à 14:41:52    

skeye a écrit :

Et c'est très très mal de faire comme ça.:o


 
C'est nettement mieux qu'une sous-requete (surtout sur mysql)
Mais je suis d'accord avec toi que c'est le mal incarné au niveau accès concurrentiels.

Reply

Marsh Posté le 02-05-2005 à 14:51:26    

$query = "DELETE from pi where num_pi IN (SELECT MAX(num_pi) FROM pi) AND cause_pi IS NULL";

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed