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
Форумы портала PHP.SU :: Версия для печати :: Записать в БД только n кол-во строк
Форумы портала PHP.SU » » Вопросы новичков » Записать в БД только n кол-во строк

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

1. ВэйДлин - 28 Января, 2012 - 12:18:54 - перейти к сообщению
Мне надо что бы в БД могло записаться допустим только 4 строки, и в последующих случаях новая строка будет записываться в самое начало, а самая последняя удалятся
2. Panoptik - 28 Января, 2012 - 12:37:08 - перейти к сообщению
вы думаете у вас записи будут сдвигаться
посмотрите ход ваших дейтвий
1. добавляем первую строку
2. добавляем вторую строку
3 3-ю
4 4-ю
5 изменяем первую строку, удаляем 4-у строку
а дальше что? изменяем снова первую и удаляем 3-ю??

формулируйте правильные задачи
3. ВэйДлин - 28 Января, 2012 - 12:39:49 - перейти к сообщению
Есть блок баннеров, все они хранятся в бд, при добавлении нового если их больше 4 то самый последний удаляется, а новый вставляется в самое начало
4. Саныч - 28 Января, 2012 - 12:45:41 - перейти к сообщению
ВэйДлин, зачем? Добавляете запись по нормальному в конец. А при выборе ставитe
5. Panoptik - 28 Января, 2012 - 12:45:50 - перейти к сообщению
вообще самый последний - это тот который был добавлен самым первым, и нужно говорить что добавляем в конец, а первый удаляем - это будет более правильнее в контексте базы данных.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(`id`) FROM `banner`
- получаем количество баннеров
если их 4 - удаляем первый (с минимальным id)
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM `banner` ORDER BY `id` DESC LIMIT 1

и вставляем новый баннер
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `banner` (`data1`,`data2`,`dataN`) VALUES('value1','value2','value3)
6. ВэйДлин - 28 Января, 2012 - 12:51:23 - перейти к сообщению
Так, а допустим что у меня много страниц с ротаторами баннеров, у каждой свой id, а создать отдельную таблицу для каждого случая я не могу
7. Panoptik - 28 Января, 2012 - 12:53:30 - перейти к сообщению
а зачем вам создавать таблицу. достаточно в одной таблице с баннерами добавить поле страница (page_id) и в каждой странице ставить в запрос условие WHERE
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `banner` WHERE `page_id` = 'page_id' ORDER BY `id` DESC LIMIT 4
8. ВэйДлин - 28 Января, 2012 - 13:12:31 - перейти к сообщению
Вот что я неправильно понял?
PHP:
скопировать код в буфер обмена
  1. $max = 8;
  2. $query = "SELECT * FROM banner";
  3. $sql = mysql_query($query) or die(mysql_error());
  4. $len = mysql_num_rows($sql);
  5. if($len >= $max){
  6.   $query = "DELETE FROM `banner` ORDER BY `id` DESC LIMIT 8";
  7.   $sql = mysql_query($query) or die(mysql_error());
  8. }
  9.  
  10. $query = "INSERT
  11.  INTO `banner`
  12.    SET
  13.    `data`='111',
  14.         `id`='$len'";
  15. $sql = mysql_query($query) or die(mysql_error());
  16. echo $len;
9. snikers987 - 28 Января, 2012 - 13:45:16 - перейти к сообщению
Кому-то я уже писал подобное тут на форуме, кажется юзеру с ником android, можете поискать, только там заносилось 5 записей..

http://forum.php.su/topic.php?fo...92881#1320692881

вот нашел

 

Powered by ExBB FM 1.0 RC1