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.
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:
$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
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).