Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ТВ программа
 
 автор: kis-kis   (27.10.2006 в 15:16)   письмо автору
 
 

Никто не пытался сделать ТВ программу PHP + MySQL?
Есть какие-нибудь идеи как это можно реализовать?
Спасибо.

   
 
 автор: NickCo   (27.10.2006 в 15:19)   письмо автору
 
   для: kis-kis   (27.10.2006 в 15:16)
 

А что конкретно Вы отнее хотите? Просто заносить в бд названия и время, а потом выводить, или обновлять откуда-то с другого хоста?

   
 
 автор: kis-kis   (27.10.2006 в 15:28)   письмо автору
 
   для: NickCo   (27.10.2006 в 15:19)
 

Наверное, заносить время, программу и канал, а потом выводить.
Только вот не знаю как можно проще всего это сделать?
И еще интересует одно: как выводить программы (например, по 3) в данное время (когда человек на сайте)? Пример, можно в Yandexe на главной посмотреть. Хотелось бы что-то подобное. Спасибо.

   
 
 автор: NickCo   (27.10.2006 в 15:45)   письмо автору
 
   для: kis-kis   (27.10.2006 в 15:28)
 

А сколько каналов необходимо выводить, на уа один. Если нужно выводить под определенного пользователя, в зависимости от предпочтений, то можно сделать таблицы для:
1. Хранения названий каналов.
Create table(`id_chanal`,`chanal`);
2. Для хранения непосредственно данных.
create table (`id_title`,`title`,`time`,`id_chanal`);

   
 
 автор: mishaMC   (27.10.2006 в 15:27)   письмо автору
 
   для: kis-kis   (27.10.2006 в 15:16)
 

Проще не делать самому, а с другого сайта импортировать на свой. Например с http://tv.yandex.ru/.

По-моему удобнее, не надо вручную обновлять.

   
 
 автор: kis-kis   (27.10.2006 в 15:30)   письмо автору
 
   для: mishaMC   (27.10.2006 в 15:27)
 

Это не проще. Пример, я хочу вывести только программу моего городского ТВ.
Поверьте, в Yandexe ее нет. :-)
Спасибо за предложение.

   
 
 автор: mishaMC   (27.10.2006 в 15:32)   письмо автору
 
   для: kis-kis   (27.10.2006 в 15:30)
 

Для реализации программы, вы лучше сначала продумайте структуру БД, в которой она будет хранится.

Сам не реализовывал, но если нужна помощь -- рад помочь.

   
 
 автор: kis-kis   (27.10.2006 в 15:51)   письмо автору
 
   для: mishaMC   (27.10.2006 в 15:32)
 

У вас есть предложения?

   
 
 автор: NickCo   (27.10.2006 в 16:02)   письмо автору
 
   для: kis-kis   (27.10.2006 в 15:51)
 

Будут, как только вы изложите, что конкретно от нее хотите до последней мелочи, только тогда можно начинать строить БД. переделывать по ходу гараздо сложнее.

   
 
 автор: kis-kis   (27.10.2006 в 18:50)   письмо автору
 
   для: NickCo   (27.10.2006 в 16:02)
 

1. Название канала
2. Время программы
3. Название программы
4. Анонс программы

Вот вроде бы и все. Только вот хотелось бы время сопостовлять со временем сервера. Структура базы я думаю будет такая.
Спасибо.

   
 
 автор: NickCo   (27.10.2006 в 19:00)   письмо автору
 
   для: kis-kis   (27.10.2006 в 18:50)
 


<?php
SQL
-запрос
CREATE TABLE `tv` (
`
id_chanalINT NOT NULL AUTO_INCREMENT ,
`
ch_nameVARCHAR10 NOT NULL ,
PRIMARY KEY ( `id_chanal` ) 
TYPE MYISAM COMMENT 'Таблица каналов';

SQL-запрос
CREATE TABLE `tv_prog` (
`
id_titleINT NOT NULL AUTO_INCREMENT ,
`
ch_titleVARCHAR255 NOT NULL ,
`
ch_comentTEXT NOT NULL ,
`
ch_timeDATETIME NOT NULL ,
`
id_chanalINT NOT NULL ,
PRIMARY KEY ( `id_title` ) 
TYPE MYISAM COMMENT 'Расписание передач';
?>

Примерно так можно создать таблицы.
Форма так:

<?php
echo "
<form name=\"tv\" action=\"tv.php\" method=\"post\">
Название передачи: <input name=\"ch_title\" type=\"text\" value=\"\"><br>
Время передачи <input name=\"ch_time\" type=\"text\" value=\"0000-00-00 00-00-00\"><br>
Анонс телепередачи.<br>
<textarea name=\"ch_coment\" rows=5 cols=20 wrap=\"off\"></textarea>
<input type=\"submit\" value=\"Занести\">
</form>\n"
;
?>

   
 
 автор: kis-kis   (27.10.2006 в 19:08)   письмо автору
 
   для: NickCo   (27.10.2006 в 19:00)
 

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

Допустим:
16.00 - Программа "Время"
17.30 Х/ф "Меченосец" и т.д.

   
 
 автор: kasmanaft   (27.10.2006 в 19:17)   письмо автору
 
   для: kis-kis   (27.10.2006 в 19:08)
 

В смысле "с учетом времени сервера" ?
В таблицах будет записано время, когда будет идти передача ... это время можно преобразовать в формат timestamp (ф-ей strtotime) ... затем полученное время сравнивать с результатом time( )

   
 
 автор: kis-kis   (27.10.2006 в 20:01)   письмо автору
 
   для: kasmanaft   (27.10.2006 в 19:17)
 

Можно по-подробнее...
Нужно, чтобы юзер зайдя на сайт, допустим, в 16.00 увидел программу, которая идет именно в 16.00 или около того. Да что объяснять на Yandexe пример лучше не придумаешь...

   
 
 автор: kasmanaft   (27.10.2006 в 20:17)   письмо автору
 
   для: kis-kis   (27.10.2006 в 20:01)
 

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

Итак нужно в зависимости от того, прошла передача или нет изменять цвет. При построении таблицы, если бы вы выводили все программы без учета времени, время в которое идет передача, вам бы пришлось "вытаскивать" из бд, и выводить .... а если перед выводом нужно изменить цвет, то "это время можно преобразовать в формат timestamp (ф-ей strtotime) ... затем полученное время сравнивать с результатом time( )"

То есть ... в БД у вас, допустим, время, когда идет передача, записано в формате "27-10-2006 22:20", вам нужно узнать прошло оно уже или нет ... что делаем:


<?php
$time 
"27-10-2006 22:20";
$time strtotime($time);
if (
$time time() ) // меньше текущего, то есть уже прошло 
  
$color 'black';
else 
$color 'red';
?>

   
 
 автор: kis-kis   (27.10.2006 в 20:27)   письмо автору
 
   для: kasmanaft   (27.10.2006 в 20:17)
 

Тогда как вывести три передачи которые идут в данный интервал времени (Например, сейчас 20.25)?

   
 
 автор: kasmanaft   (27.10.2006 в 20:29)   письмо автору
 
   для: kasmanaft   (27.10.2006 в 20:17)
 

зашел на яндекс, проверить ... оказывается там несколько "режимов" ...
"сейчас" и "весь день"

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

SELECT * FROM tv_prog WHERE ch_time > NOW()

Можно использовать mysql ф-ю interval :

SELECT * FROM tv_prog WHERE ch_time > NOW() - INTERVAL 10 MINUTE

Данный запрос вернет и передачи, которые начались 10 минут назад

   
 
 автор: kis-kis   (27.10.2006 в 20:32)   письмо автору
 
   для: kasmanaft   (27.10.2006 в 20:29)
 

Вот, теперь ближе к истине.
Сейчас буду пробовать.
Спасибо. :-)

   
 
 автор: kis-kis   (29.10.2006 в 18:25)   письмо автору
 
   для: kasmanaft   (27.10.2006 в 20:29)
 


SELECT * FROM tv_prog WHERE ch_time > NOW()


При данном коде выводится все.
А как сделать вывод только того что идет, например в 17.00?
Можно полный код? Спасибо.

   
 
 автор: kasmanaft   (29.10.2006 в 19:05)   письмо автору
 
   для: kis-kis   (29.10.2006 в 18:25)
 

Выводится все, где время больше текущего ... по крайней мере должно быть так.

Чтобы вывести только то, что идет в 17-00, можно собрать дату из php и написать запрос

SELECT * FROM tv_prog WHERE ch_time = полученная_дата

А можно практически этого же добиться при помощи MySQL:

SELECT * FROM tv_prog WHERE 
YEAR(ch_time) = YEAR(NOW()) AND MONTH(ch_time) = MONTH(NOW()) AND 
DAY(ch_time) = DAY(NOW()) AND HOUR(ch_time) = 17 AND MINUTE (ch_time) = 0

   
 
 автор: kis-kis   (31.10.2006 в 20:39)   письмо автору
 
   для: kasmanaft   (29.10.2006 в 19:05)
 

Хорошо. Со временем я разобрался.
Еще небольшой вопросик:

Как сделать ввод телепрограмм в базу данных более удобным?
Можно ли как-то внести одним запросом например всю телепрограмму?

   
 
 автор: Yakor   (27.10.2006 в 15:40)   письмо автору
 
   для: mishaMC   (27.10.2006 в 15:27)
 

А подскажите как лучше импортировать... там же не будет описания фильма да?... только время и канал?

   
 
 автор: mishaMC   (27.10.2006 в 15:44)   письмо автору
 
   для: Yakor   (27.10.2006 в 15:40)
 

Импортировать можно все, что есть на исходной странице, с которой осуществляется портирование.

   
 
 автор: kasmanaft   (27.10.2006 в 19:02)   письмо автору
 
   для: Yakor   (27.10.2006 в 15:40)
 

C "&mode=print" можно импортировать только названия .. а с полной версии можно и описание выдернуть (еще одним заходом)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования