Usuwanie rekordów

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
dachu
Posty: 9
Rejestracja: śr lip 30, 2008 8:06 am

Usuwanie rekordów

Post 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
SzamanGN
Nowy
Nowy
Posty: 92
Rejestracja: pn lis 27, 2006 3:28 pm
Kontakt:

Re: Usuwanie rekordów

Post 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).
ODPOWIEDZ