supprimer enregistrement - SQL/NoSQL - Programmation
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.
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
Marsh Posté le 02-05-2005 à 14:10:57
machineths a écrit : |
"select max(cle) from table" peut être ?
Ca sert de lire la doc.
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é
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?
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
Marsh Posté le 02-05-2005 à 14:28:51
machineths a écrit : |
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 (...)"
Marsh Posté le 02-05-2005 à 14:29:40
skeye a écrit : quelle est l'erreur? |
Je mise sur "Erreur 500"
Plus sérieusement, si c'est du mysql, ça doit être la 1093.
Marsh Posté le 02-05-2005 à 14:31:28
Friday Monday a écrit : Je mise sur "Erreur 500" |
Citation : |
Je crains que tu confondes SQL et mysql...
Je veux un message, pas un numéro à la con.
Marsh Posté le 02-05-2005 à 14:32:19
bordayl, mais vous voyez pas que c'est le IN qui cloche ?
Marsh Posté le 02-05-2005 à 14:33:33
Harkonnen a écrit : bordayl, mais vous voyez pas que c'est le IN qui cloche ? |
Ben non, yen a pas.
(et j'aurais bien voulu lui faire écrire le message d'erreur, histoire qu'il trouve tout seul...)
Marsh Posté le 02-05-2005 à 14:34:47
Harkonnen a écrit : bordayl, mais vous voyez pas que c'est le IN qui cloche ? |
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 )
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 ) |
Ce qui confirme que tu utilises exclusivement mysql.
Et c'est très très mal de faire comme ça.
Marsh Posté le 02-05-2005 à 14:35:53
skeye 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"
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é
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" |
Effectivement, j'ai lu un peu vite...
Mais présumer du sgbd c'est mal.
Marsh Posté le 02-05-2005 à 14:38:18
machineths a écrit : voila le code complet pour ce delete |
essaie d'ajouter ça, tu l'auras ton erreur.
Code :
|
Et depuis quand on met une sous-requete entre quotes??
Marsh Posté le 02-05-2005 à 14:40:00
machineths a écrit : voila le code complet pour ce delete |
Marsh Posté le 02-05-2005 à 14:40:17
ReplyMarsh 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.
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";
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