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 :: Записать в БД только n кол-во строк

 PHP.SU

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


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

> Без описания
ВэйДлин
Отправлено: 28 Января, 2012 - 12:18:54
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


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




Мне надо что бы в БД могло записаться допустим только 4 строки, и в последующих случаях новая строка будет записываться в самое начало, а самая последняя удалятся
 
 Top
Panoptik
Отправлено: 28 Января, 2012 - 12:37:08
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




вы думаете у вас записи будут сдвигаться
посмотрите ход ваших дейтвий
1. добавляем первую строку
2. добавляем вторую строку
3 3-ю
4 4-ю
5 изменяем первую строку, удаляем 4-у строку
а дальше что? изменяем снова первую и удаляем 3-ю??

формулируйте правильные задачи


-----
Just do it
 
 Top
ВэйДлин
Отправлено: 28 Января, 2012 - 12:39:49
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


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




Есть блок баннеров, все они хранятся в бд, при добавлении нового если их больше 4 то самый последний удаляется, а новый вставляется в самое начало
 
 Top
Саныч Модератор
Отправлено: 28 Января, 2012 - 12:45:41
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




ВэйДлин, зачем? Добавляете запись по нормальному в конец. А при выборе ставитe


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Panoptik
Отправлено: 28 Января, 2012 - 12:45:50
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




вообще самый последний - это тот который был добавлен самым первым, и нужно говорить что добавляем в конец, а первый удаляем - это будет более правильнее в контексте базы данных.
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)


-----
Just do it
 
 Top
ВэйДлин
Отправлено: 28 Января, 2012 - 12:51:23
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


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




Так, а допустим что у меня много страниц с ротаторами баннеров, у каждой свой id, а создать отдельную таблицу для каждого случая я не могу
 
 Top
Panoptik
Отправлено: 28 Января, 2012 - 12:53:30
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




а зачем вам создавать таблицу. достаточно в одной таблице с баннерами добавить поле страница (page_id) и в каждой странице ставить в запрос условие WHERE
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `banner` WHERE `page_id` = 'page_id' ORDER BY `id` DESC LIMIT 4


-----
Just do it
 
 Top
ВэйДлин
Отправлено: 28 Января, 2012 - 13:12:31
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


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




Вот что я неправильно понял?
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;

(Отредактировано автором: 28 Января, 2012 - 13:13:03)

 
 Top
snikers987
Отправлено: 28 Января, 2012 - 13:45:16
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




Кому-то я уже писал подобное тут на форуме, кажется юзеру с ником android, можете поискать, только там заносилось 5 записей..

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

вот нашел

(Отредактировано автором: 28 Января, 2012 - 13:54:00)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 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