Въпрос за изтриване на записи от mysql

vinsbg

Registered
Здравейте,
Да кажем, че имам 2000 записа в базата и искам да изтрия запис 238 примерно. След това в сайта ако се опитам да отворя запис 238 да, че няма такъв, което е разбираемо.
Въпроса ми е как, когато добавям нов запис да записва първо на мястото на записите, които са изтрити и после да започне да добавя най-отзад в базата?
Идеята ми е когато се браузва из сайта да не се получава, че няма информация, защото id-то(реда в базата) е изтрит..
Май не можах да обясня точно, но ако има неясно ще пробвам да обясня по-добре.
 
Избери си поле (ако ще ти е по-удобно, може да си създадеш и отделно), в което ще пише "-1", когато е изтрит ред. Примерно:
Код:
id - post - date
0 - "hello" - 12.34.567
 1 - "-1" - 1.34.567 -> това е "изтрит" ред
...
В случая приемаме, че един 'неизтрит' запис не може да съдържа стонйност -1. (ако ти трябва и тази стойност, създай ново поле)

Когато изтриваш ред:
[sql]update table set `post` = '-1' where `id`='$id_za_iztrivane'
[/sql]`post` -> в това поле записваш, че записът е изтрит.

Когато селектваш ред:
[sql]select * from table where `post` != '-1';[/sql]
това мисля, че е ясно какво прави...
(допълнителни условия в where няма да попречат на това)

Когато добавяш ред ще е малко по-сложно:

PHP:
//ъпдейт за 1 ред, където съдржанието е било изтрито
$query = 'update table set post="sadarjanie"where `post`  != "-1" limit 1';
//изпълняваш......
if(mysqli_affected_rows($query_result) == 0)
//ако НЕ е имало ъпдейт, тоест няма изтрити записи
{
//тук слагаш нормална insert заявка
}
 
PHP:
/*
	Да приеме че имаме следната структора.

	Таблица: products

	а в нея четири колони:


	products_id
	products_name
	products_content
	products_row


	Процедурата с изтриването
	*/
	$clear = '';
	$mark = 'empty';
	$del_query = mysql_query("UPDATE products SET products_name = $clear, products_content = $clear, products_row = $mark WHERE products_id = 'ид за изтриване' LIMIT 1") or die (mysql_error());

	/*
	Добавяне на нов ред
	проверяваме дали има свободни редове
	*/
	$empty_query = mysql_query("SELECT * FROM products WHERE products_row = $mark ORDER BY products_id ASC") or die (mysql_error());
	
	if( $empty_query >= 1 )
	{
		$empty_row = mysql_fetch_assoc($empty_query);
		$insert_query = mysql_query("UPDATE products SET products_name = '', products_content = '', products_row = $clear WHERE products_id = {$empty_row[products_id]} LIMIT 1") or die (mysql_error());
	}
	else
	{
		$insert_query = mysql_query("INSERT INTO products (`products_name`, `products_content`) VALUES ('', '') ") or die (mysql_error());
	}

Има различни вариянти, избери най-лесният за теб. :?:
 

Back
Горе