Strona 1 z 1

Usuwanie rekordów

: śr cze 03, 2009 11:28 am
autor: dachu
Witam,
mam problem z usuwaniem rekordów z tabeli, otórz chce, aby z tabeli raport usuwane były rekordy najstarsze i zostawało tylko 10 ostatnio dodanych, oto kod:

Kod: Zaznacz cały

$sql_raport_u="SELECT * FROM raport";
	$res_raport_u=@mysql_query($sql_raport_u);
	$liczba_raport_u=@mysql_num_rows($res_raport_u);
	
	if ($liczba_raport_u > 10) 
	{ 
		$liczba_do_u=$liczba_raport_u-10;
		for ($l=1;$l<=$liczba_do_u;$l++) { // czyszczenie rekordów do 10-tu //
		@mysql_query("DELETE FROM raport ORDER BY data_zm DESC LIMIT 1"); 
		}
	}
niestety nie działa, nic się nie dzieje,
proszę o pomoc

Re: Usuwanie rekordów

: ndz cze 07, 2009 4:05 pm
autor: SzamanGN
Nie wiem jak to inaczej zrobić ale ja robię to tak:

[php]
$wynik=@mysql_query('SELECT COUNT(`data_zm`) AS ile FROM raport');
$pobrane=@mysql_fetch_array($wynik);
$limit=$pobrane['ile']-10;
$kasowanie=@mysql_query('DELETE FROM `raport` ORDER BY `data_zm` ASC LIMIT '.$limit);
[/php]

Opis:
1. Pobranie ilości rekordów.
2. Ustalenie limitu kasowanych rekordów (oczywiście możesz tam dodać jakieś zabezpieczenie, jeżeli wynik $limit będzie mniejszy od 10).
3. Usunięcie niepotrzebnych rekordów (jeżeli podajesz grupowanie z kierunkiem i limitem, to pamiętaj że musisz podać kierunek od którego należy zacząć kasowanie).