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 :: Помогите сделать код для страницы "Выставки"

 PHP.SU

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


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

> Без описания
QAWPOI
Отправлено: 16 Декабря, 2013 - 12:21:21
Post Id


Новичок


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


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




Всем привет!
У меня на страничке нужно сделать раздел выставки.
Я создал в БД для них таблицу:

PHP:
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `expo` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `title` varchar(255) NOT NULL,
  4.   `short_text` text,
  5.   `text` text,
  6.   `start_d` int(11) NOT NULL,
  7.   `start_m` int(11) NOT NULL,
  8.   `start_y` int(11) NOT NULL,
  9.   `finish_d` int(11) NOT NULL,
  10.   `finish_m` int(11) NOT NULL,
  11.   `finish_y` int(11) NOT NULL,
  12.   `banner` varchar(55) default NULL,
  13.   `created` int(11) NOT NULL,
  14.   `edited` int(11) default NULL,
  15.   `status` varchar(55) default NULL,
  16.   PRIMARY KEY  (`id`)
  17. ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;



Соль в том, что мне нужно на сайте вывести дату начала выставки и дату завершения выставки. Мало того, на сайте выставки должны выводиться не в порядке добавления их и не по алфавиту, а именно какая выставка раньше начинается - та и выше на странице. А если дата начала выставки была вчера или ранее, то информация вообще не выводится. То есть на страницу выводятся выставки которые начинаются сегодня или в будущем.

Долго думал как это сделать. Для этого в БД есть поля start_d start_m start_y и finish_d finish_m finish_y. Это день, месяц и год страта и день месяц и год завершения. Туда я забивал данные по типу date("d", time()), date("m", time()), date("Y", time()) и тд.

Но вообще не получается сделать запрос к БД, чтобы выводились именно те выставки, которые только сегодня или в будущем.

Читал про поле TIMESTAMP но так ничего вообще не понял! Пытался что-то с ним потыркаться и ничего не получил.

Помогите правильно организовать эту систему!
Заранее спасибо!
 
 Top
AmsTaFF
Отправлено: 16 Декабря, 2013 - 12:39:00
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


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




читайте про TIMESTAMP, DATE, DATETIME и будет вам счастье
 
 Top
DelphinPRO
Отправлено: 16 Декабря, 2013 - 12:54:44
Post Id



Активный участник


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


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




тип поля datetime
выборка

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ...
  2. FROM ...
  3. WHERE start > NOW() -- выставки стартуют сегодня или позже
  4. ORDER BY start -- сортировать по дате

(Добавление)
QAWPOI пишет:
`start_d` int(11) NOT NULL,  `start_m` int(11) NOT NULL,  `start_y` int(11) NOT NULL,

это вообще извращение O_o вы еще на секунды поделите Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
QAWPOI
Отправлено: 16 Декабря, 2013 - 13:54:00
Post Id


Новичок


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


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




DelphinPRO а как в БД заводить дату начала и дату завершения.
 
 Top
IllusionMH
Отправлено: 16 Декабря, 2013 - 13:59:43
Post Id



Активный участник


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


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




QAWPOI, два поля типа DATE. Если еще и время важно DATETIME.
Получать год и месяц через YEAR и MONTH
 
 Top
QAWPOI
Отправлено: 16 Декабря, 2013 - 16:05:38
Post Id


Новичок


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


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




IllusionMH не совсем понял. В смысле совсем не понял.
То есть я создаю в таблице 2 новых поля (или взамен шести полям что уже есть) занываю их start и finish и тип поля указать DATETIME...... а как мне забивать туда дату? То есть до этого у меня в форме были поля <input name="start_d"> <input name="start_m"> <input name="start_y"> а как вставлять в это одно поле дату целиком?
 
 Top
IllusionMH
Отправлено: 16 Декабря, 2013 - 16:16:09
Post Id



Активный участник


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


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




QAWPOI, использовать любой datepicker, что будет гораздо удобнее чем ввод 4х полей.
Потом прочитать тут
Чтобы понять в каком формате подставлять данные.
 
 Top
QAWPOI
Отправлено: 16 Декабря, 2013 - 18:43:23
Post Id


Новичок


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


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




IllusionMH спасибо конечно но если бы я знал англ яз и мог бы за день понять всё что там написано, то не просил бы помощи. Можно скинуть кокретный пример?
 
 Top
IllusionMH
Отправлено: 16 Декабря, 2013 - 18:50:04
Post Id



Активный участник


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


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




QAWPOI, а английский нужно знать. Без него в программирование не фонтан.
По ссылке всего-то 10 строчек нужно было глянуть, там только 1 предложение важно.
http://www[dot]php[dot]net/manual/ru/function[dot]date[dot]php#example-2294

(Отредактировано автором: 16 Декабря, 2013 - 18:56:34)

 
 Top
QAWPOI
Отправлено: 17 Декабря, 2013 - 13:06:14
Post Id


Новичок


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


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




IllusionMH спасибо за datepicker! Я хотел изначально такую штуку, но не знал как она называется. Гуглил, но находились только всё какие-то примитивные ява-скриптики.

DelphinPRO а если нужно выбрать с определённой даты, как построить запрос? Допустим, не с сегодняшнего дня, а с определённого? Допустим, с 1 марта 2014... и пр.
 
 Top
caballero
Отправлено: 17 Декабря, 2013 - 13:20:16
Post Id


Активный участник


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


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




WHERE start > '2014-03-01'


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
QAWPOI
Отправлено: 17 Декабря, 2013 - 13:50:00
Post Id


Новичок


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


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




caballero благодарствую! а если не жёстко дата стоит, а допустим в течении недели или в течении месяца?
 
 Top
DelphinPRO
Отправлено: 17 Декабря, 2013 - 13:58:50
Post Id



Активный участник


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


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




QAWPOI пишет:
а если не жёстко дата стоит, а допустим в течении недели или в течении месяца?

CODE (SQL):
скопировать код в буфер обмена
  1. WHERE start > '2013-03-01' AND start < '2013-04-01'

CODE (SQL):
скопировать код в буфер обмена
  1. WHERE start > '2013-03-01' - INTERVAL 7 DAY

(Отредактировано автором: 17 Декабря, 2013 - 14:00:02)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
QAWPOI
Отправлено: 18 Декабря, 2013 - 12:18:13
Post Id


Новичок


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


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




caballero, DelphinPRO спасибо вам за помощь и подсказки! Всё правильно, всё работает! Превосходно Превосходно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB