Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: auto_decrement ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Утрамбовка БД.
darkhero
Отправлено: 14 Ноября, 2008 - 13:30:10
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2008  


Помог: 0 раз(а)

[+]


Добрый день. Начал работать с базами данных, всё понял, во всём разобрался (спасибо, кстати, огромное основным разделам сайта). Возник вопрос:
Я добавляю новости в через форму в БД. У каждой новости есть id (unique, auto_increment). Добавляется всё нормально. Но при удалении новости, id, естественно, остаются на своих местах. То есть, если у меня есть 10 новостей, идущих в порядке 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, и я удаляю новость под номером (id) 5, то новости начинают идти в порядке 1, 2, 3,4, дырка, 6, 7, 8, 9, 10.
Следовательно, мне надо "утрамбовать" базу данных, уменьшив id всех новостей после удалённой на 1.
Собственно, вопрос: есть ли для таких целей стандартная функция, или может быть, есть такое свойство поля БД, или же мне всё-таки придётся отказаться от auto_increment и каждый раз при добавлении новости передавать не NULL, а $id?

(Отредактировано автором: 14 Ноября, 2008 - 13:31:32)

 
 Top
valenok
Отправлено: 14 Ноября, 2008 - 13:56:21
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
Следовательно, мне надо "утрамбовать" базу данных, уменьшив id всех новостей после удалённой на 1.

А я говорю нет, тебе не надо. Пусть будет дырка.


-----
Truly yours, Sasha.
 
My status
 Top
darkhero
Отправлено: 14 Ноября, 2008 - 14:00:32
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2008  


Помог: 0 раз(а)

[+]


valenok, с чем это связано? Просто, на будующее. Вообще, у меня при выводе новостей видно id, и мне нужно чтобы его было видно всегда. Пусть все видят, что там дырок куча?
 
 Top
valenok
Отправлено: 14 Ноября, 2008 - 14:04:46
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Связано это с тем что поля с автоинкрементом используются для индексирования записей, а не для чего вам там надо.

Во вторых, зачем всем видеть какой у чего йд, и в третих, да, пусть видят что куча дырок.


-----
Truly yours, Sasha.
 
My status
 Top
darkhero
Отправлено: 14 Ноября, 2008 - 14:06:16
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2008  


Помог: 0 раз(а)

[+]


valenok ок, спасибо.

(Отредактировано автором: 14 Ноября, 2008 - 14:07:45)

 
 Top
evgenijj
Отправлено: 14 Ноября, 2008 - 19:32:05
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




 
 Top
Agassi
Отправлено: 14 Ноября, 2008 - 19:57:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $i = 1;
  3. $res = mysql_query('SELECT *  FROM products');
  4. echo '<table>';
  5. while( $row = mysql_fetch_array($res) )
  6. {
  7.   echo '<tr><td>'.$i.'</td><td>'.$row['name'].'</td></tr>';
  8. }
  9. echo '</table>';
  10. ?>


Точно чайник писал.А де $i++; или ;++$i;
 
 Top
evgenijj
Отправлено: 14 Ноября, 2008 - 20:02:48
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Agassi пишет:
Точно чайник писал.А де $i++; или ;++$i;

Да, моя невнимательность Улыбка Спасибо, исправил.
P.S. По поводу чайника - это спорный вопрос Улыбка

(Отредактировано автором: 14 Ноября, 2008 - 20:04:03)

 
 Top
Agassi
Отправлено: 14 Ноября, 2008 - 20:12:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Радость Спорить не буду.

Сам вначале учил пхп по книжкам " всё для чайников".Иногда и себя так называю "вот чайник забыл поставить ......"



Прошу не обижатся))
 
 Top
valenok
Отправлено: 14 Ноября, 2008 - 21:24:40
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Как сделать чтоб записи выводились на экране без пробелов в числах. в базе всё равно останутся пробелы.

Кроме того, возможно автор имел в виду вовсе то что у него ссылки имеют вид
типа ?id=2 и хочет чтоб не было пробелов.
Для этого стоит использовать запись типа SELECT ... ORDER BY `id` LIMIT $id,1 ,
тогда несмотря на нумерацию в поле `id`
при ?id=2 будет отображаться вторая запись в базе в любом случае.
Мне кажется стоит это добавить к статье.


-----
Truly yours, Sasha.
 
My status
 Top
Гость
Отправлено: 24 Ноября, 2008 - 17:01:23
Post Id


УДАЛЁН










Да уж обошлось без темной магии Улыбка
Я думал придется для этого лопатить базу данных. Т.е. извлекать так запимсей по 30, потом смотреть на дырки, записыватьб заново их в базу
Но если база большая то ьакая "оптимизация" будет занимать длительно времени
Цитата:
Для этого стоит использовать запись типа SELECT ... ORDER BY `id` LIMIT $id,1
Да уж, хитро придумано
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB