Toon posts:

[php/mysql] Delete MIN(id) from ...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo ik heb volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$query = "SELECT * FROM chatmessages WHERE view='all' AND room='$room' ORDER BY id ASC";
$resrc = mysql_query($query) or die (mysql_error());
$total = mysql_num_rows($resrc);

$max_main = 15;
if ($total > $max_main) {
$sql = "SELECT MIN(id) FROM chatmessages";
$resc = mysql_query($sql) or die (mysql_error());
$record = mysql_fetch_object($resrc);
$minid = $record->id;
$sql = "DELETE FROM chatmessages WHERE id='$minid'";
$resc = mysql_query($sql) or die (mysql_error());
 }
?>

dus als er meer als 15 regels in de database zijn word de regel met laatste id verwijdert.
Kwou dit doen met
PHP:
1
2
3
<?
$sql="DELETE MIN(id)from chatmessages";
?>


Maare dat werkt niet, mijn eigen code wel, maare die is een beetje omslachtig denk ik?!

Iemand een oplossing?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Delete <iets> from <tabel>
Is complete onzin, ga eerst eens de definitie van de delete commando opzoeken voordat je vragen gaat stellen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
het is DELETE FROM table WHERE blaat='blaat'

tip: je kunt ook mysql_error() gebruiken om de fout op te sporen

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Op woensdag 09 januari 2002 17:03 schreef dusty het volgende:
Delete <iets> from <tabel>
Is complete onzin, ga eerst eens de definitie van de delete commando opzoeken voordat je vragen gaat stellen.
Ja zal best onzin zijn hoor!
Kheb ook anders geprobeerd:
$sql="Delete from chatmessages MIN(id)";
$sql="Delete from chatmessages where id='MIN(id)'";

en nog meer, maare als je het zo goed weet kan je toch een serieus antwoord geven?

Nou ja als je nog iets nuttigs te melden hebt hoor ik het wel!

Verwijderd

Topicstarter
Op woensdag 09 januari 2002 17:04 schreef SWINX het volgende:
het is DELETE FROM table WHERE blaat='blaat'

tip: je kunt ook mysql_error() gebruiken om de fout op te sporen
myssql_error() heb ik gebruikt!
Kdacht al dat het iets was als
DELETE FROM table WHERE blaat='blaat'
maare dat werkt dus volgens mij niet bij MIN(id) ?!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

loaded:
myssql_error() heb ik gebruikt!
Kdacht al dat het iets was als
DELETE FROM table WHERE blaat='blaat'
maare dat werkt dus volgens mij niet bij MIN(id) ?!
Tja, dit moet je sowieso niet op basis van je id's doen, maar op basis van een timestamp of datum, of een counter oid.

Een ID is puur voor het uniek identificeren van een record in een tabel of voor relaties met een andere tabel. punt.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 12:34

TheDane

1.618

Op woensdag 09 januari 2002 17:19 schreef drm het volgende:

[..]

Tja, dit moet je sowieso niet op basis van je id's doen, maar op basis van een timestamp of datum, of een counter oid.

Een ID is puur voor het uniek identificeren van een record in een tabel of voor relaties met een andere tabel. punt.
mwah, als ik ga deleten gebruik ik daar ook altijd ID voor, works perfectly

maargoed,.

Verwijderd

Topicstarter
DRM:

Hmm ik gebruik dus een auto_increment id,
Jij geeft aan timestamp te gebruiken, mag ik vragen waarom?
Ik heb de timestamps wel opgenomen in de database,
En wou het in eerste instantie ook daar mee doen, maare kzie nu ff geen duidelijk verschil...
Misschien zit ik alweer te lang achter de code vandaag, hoor, hahaha

mzzl

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 15-09 19:11

Crazy D

I think we should take a look.

Tjah eerste idee zou zijn
DELETE FROM tabel WHERE ID = (SELECT MIN(id) FROM tabel)
Maar dan moet je wel de MySql versie hebben die subqueries ondersteunt...
Dus uhmm 2 queries dan maar?

Je kan je ook afvragen waarom je per se max. 15 rows in je tabel wil hebben, maar dat vroeg je niet.

En ik ken geen php dus hoor hier eigenlijk niet te reageren :P

Exact expert nodig?


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

TheDane:
mwah, als ik ga deleten gebruik ik daar ook altijd ID voor, works perfectly
Jawel, maar niet in dit geval ;)
loaded:
DRM:drm:

Hmm ik gebruik dus een auto_increment id,
Jij geeft aan timestamp te gebruiken, mag ik vragen waarom?
Ik heb de timestamps wel opgenomen in de database,
En wou het in eerste instantie ook daar mee doen, maare kzie nu ff geen duidelijk verschil...
Misschien zit ik alweer te lang achter de code vandaag, hoor, hahaha

mzzl
Ja, ik begrijp wat je wilt, en ik begrijp ook waarom je aan de id's denkt om dit probleem op te lossen...

Maar je moet een ID niet zien als een waarde maar als een abstracte representatie van een record (pff wat een woordkeus...)

Dus: een ID kan nooit het criterium zijn om te bepalen wat de laatste 15 records in de tabel zijn, snappie? Het is gewoon niet correct.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
drm:

Bedankt voor de info, aangezien alles nu werkt, geef ik het op dit moment geen prioriteit, maare ik heb het als commentaar in het script gezet om mezelf te herinneren!
Bedankt voor het meedenken!


//timestamp i.p.v. id's als delete criterium: [topic=375080/1]
Pagina: 1