Utilisateur anonyme
-
12 juin 2006 à 09:40
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 2013
-
13 juin 2006 à 09:10
Bonjour à tous ^^
(Désolé pour ceux qui m'auront déjà lu)
J'ai une base de données comportant une table "msnix", cette table contenant les champs:"id""pseudo""message""time"
-id est en autoincrement
-time est du type time (mais je peux le mettre en timestamp au besoin)
Donc on arrive dans mon mini-chat on est content (oui parceque il faut un mot de passe héhé :p )
Et on parle,on parle, arrive le moment ou le 20ème message arrive, la magique, pour ne pas bourrer ma base, je souhaite qu'a l'arriver du 20eme message, le 1er soit supprimé, et ainsi de suite, le 21eme supprimera le 2eme,...
Or plus facile qu'il n'y parait, je n'y arrive pas !!!
Si une âme charitable daigne m'aider, vous avez tous les éléments nécessaires, mes connections a ma BDD sont bien établies,etc..!
Quelques pistes...:
-je n'arrive pas a faire de ("SELECT MIN("id") FROM msnix");--->ressource id#5
-donc ma requete imbriquer ("DELETE * FROM msnix WHERE "id"=(SELECT MIN("id") FROM msnix)); ne marche pas.
-les LAST_INSERT_ID(), marche pas non plus.
Voilou voilou, merci à ceux qui essayeront, ca leur fera un petit défi car franchement, je ne trouve pas :p
Ben dans tous les cas, je n'arrivais pas a faire de MIN, deja ca c'est louche lol, ensuite la solution:
$resultat = mysql_query("SELECT id FROM msnix") or die (mysql_error());
$nbreligne = mysql_num_rows($resultat);
if ($nbreligne > 20) //s'il y a plus de 20 messages, la base se vide
{
mysql_query("DELETE FROM msnix ORDER BY heure LIMIT 1") or die (mysql_error());
}
donc je DELETE FROM ma base, j'ordonne par heure, comme ca le 1er et en 1, le 2eme en 2, meme si il y sont d'office, mais comme je connais pas les ID je traite avec l'heure, et ensuite je fais LIMIT 1, comme ca il ordonne par heure et il en prend que 1, qui est forcement le plus vieux, et il le DELETE !!!!!
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 12 juin 2006 à 10:30
Salut!
J'ai essayé, comme toi, en sous-requêtes mais ai trouvé ca dans la doc...
This error occurs in cases such as the following:
UPDATE t1 SET column2 = (SELECT MAX(column1) FROM t1);
You can use a subquery for assignment within an
UPDATE
statement because subqueries are
legal in
UPDATE
and
DELETE
statements as well as in
SELECT
statements. However, you cannot
use the same table (in this case, table
t1
) for both the subquery's
FROM
clause and the update target.
@++
R@f
www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 13 juin 2006 à 09:10
Mmmh, tout simple tout con...
@++
R@f
www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"