|
|
|
| Как зделать такого рода хранение или удаление чтобы в таблице было только 50 поседних записей | |
|
|
|
|
|
|
|
для: sidPR
(03.03.2006 в 16:32)
| | Если есть первичный ключ (обычно autoincrement -поле) или таймштамп, то можно так.
Взять последний актуальный ключ
last_id := select id from table order by id desc limit 50,1
И удалить всё, что раньше него.
delete from table from table where id < last_id | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2006 в 16:45)
| |
require ("config.php");
$query = "SELECT * FROM $table ORDER BY id DESC LIMIT 10";
$last_id = "select id from $table order by id desc limit 10,1";
$last_id_dell = "delete from $table from table where id < $last_id";
|
Где ошибка ? | |
|
|
|
|
|
|
|
для: sidPR
(03.03.2006 в 16:59)
| | Тогда уж как-то так...
$id = 'ИмяПоляПервичногоКлюча";
$table = 'ИмяТаблицы";
$lim = 10; // сколько записей оставить
$res = @mysql_query( "SELECT $id FROM $table ORDER BY $id DESC LIMIT $lim, 1");
if($res != 0 && mysql_num_rows($res) > 0)
{
$res = mysql_fetch_array($res);
$last_id = $res[$id];
$res = @mysql_query( "DELETE FROM $table FROM $table WHERE $id < $last_id");
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.03.2006 в 17:19)
| | к сожелению не работает :(
$query = "SELECT * FROM $table ORDER BY id DESC LIMIT 11";
$res = @mysql_query( "SELECT id FROM $table ORDER BY id DESC LIMIT 10, 1");
if($res != 0 && mysql_num_rows($res) > 0)
{
$res = mysql_fetch_array($res);
$last_id = $res['id'];
$res = @mysql_query( "DELETE FROM $table FROM $table WHERE id < $last_id");
}
|
| |
|
|
|
|
|
|
|
для: sidPR
(03.03.2006 в 23:28)
| | А можноже навeрно както проше зделать подсчитать кол-во записей в таблице к примеру записей 150 значит удилить 100 с конца ну и так далее ? | |
|
|
|
|
|
|
|
для: sidPR
(04.03.2006 в 17:23)
| | Конечно, для этого можно воспользоваться запросом
DELETE FROM $table ORDER BY id DESC LIMIT 100
|
где 100 вычисленное значение, которое необходимо удалить с конца. | |
|
|
|
|
|
|
|
для: cheops
(05.03.2006 в 12:53)
| | а из базы как получить циферку полей скоко там ? | |
|
|
|
|
|
|
|
для: sidPR
(05.03.2006 в 14:02)
| | Для этого следует воспользоваться запросом
SELECT COUNT(*) FROM $table
|
| |
|
|
|
|
|
|
|
для: cheops
(05.03.2006 в 20:03)
| |
$querz = "SELECT COUNT(*) FROM $table";
$ctg = mysql_query($querz);
$total = mysql_result($ctg,0);
if($total >= 10){
$delzz = "DELETE FROM $table ORDER BY id DESC LIMIT 10";
}
|
вот нехочет удалять хоть убейте тотал вроде выводит цифру ... =\ч что неправильно ? | |
|
|
|
|
|
|
|
для: cheops
(05.03.2006 в 20:03)
| |
$querz = "SELECT COUNT(*) FROM $table";
$ctg = mysql_query($querz);
$total = mysql_result($ctg,0);
if($total >= 10){
$delzz = "DELETE FROM $table ORDER BY id DESC LIMIT 10";
}
|
тотал вроде выводит цифру а удалять чет нехочет нефига :( | |
|
|
|
|
|
|
|
для: sidPR
(06.03.2006 в 01:10)
| | Попробуйте после строки
<?php
$ctg = mysql_query($querz);
?>
|
поставить проверку
<?php
$ctg = mysql_query($querz);
if(!$ctg) exit(mysql_error());
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.03.2006 в 12:53)
| | Разве в команде DELETE ... ORDER BY ... можно использовать модификатор DESC ? | |
|
|
|
|
|
|
|
для: Trianon
(06.03.2006 в 11:41)
| | Конечно, везде, где используется конструкция ORDER BY, допустимы ключевые слова DESC и ASC. | |
|
|
|
|
|
|
|
для: cheops
(06.03.2006 в 13:47)
| | Да... лопухнулся я... В MySQL мануале синтаксис SELECT и DELETE в этом пункте отличаются. Я и решил, что удаление кроме как в прямом порядке невыполнимо. | |
|
|
|
|
|
|
|
для: sidPR
(03.03.2006 в 23:28)
| |
<?php include 'config.inc.php';
$table = 'mytab4'; // имя таблицы
$id = 'id'; // имя поля с первичным ключом
$lim = 50; // сколько записей оставить
if($lim)
{
$res = @mysql_query( "SELECT $id FROM $table ORDER BY $id DESC LIMIT $lim, 1");
if($res != 0 && mysql_num_rows($res) > 0)
{
$res = mysql_fetch_array($res);
$query = "DELETE $table FROM $table WHERE $id <= ". $res[$id];
}
else $query = "";
}
else $query = "DELETE FROM $table";
if($query != "")
{
$res = @mysql_query( $query);
if(!$res)
echo " delete error: ".mysql_error();
else
echo mysql_affected_rows() . " rows deleted";
}
else echo "no actions performed";
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(06.03.2006 в 13:02)
| | Спасибо огромное всем !! очень признателен за помощь! | |
|
|
|