Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод на экран по достижении конкретной даты и времени на php

3.6K
18 ноября 2005 года
Rul3z
33 / / 10.05.2004
т.е. допустим скрипт новостей. вот в него чтобы можно было загонять обьявление с датой и временем. и по достижении оного объявление будет показываться. дайте пожалуйста кусок кода или ссылку на работу со временем. т.е. текстовую БД я сам сделаю и скрипт ввода-вывода, здесь проблем нет. а вот со временем не знаю как быть. очень прошу простенький пример.
8
18 ноября 2005 года
mfender
3.5K / / 15.06.2005
Ну как. В поле showtime будет время, с которого нужно его показывать. Обычно время хранится в виде UNIXTimestamp'а, т.е. Integer. Ну и выбираешь соответственно: "SELECT * FROM newstable WHERE showtime<".time()
3.6K
18 ноября 2005 года
Rul3z
33 / / 10.05.2004
Цитата:
Originally posted by mfender
Ну как. В поле showtime будет время, с которого нужно его показывать. Обычно время хранится в виде UNIXTimestamp'а, т.е. Integer. Ну и выбираешь соответственно: "SELECT * FROM newstable WHERE showtime<".time()



Ну я не на мускуле делаю. Ну да ладно.. Вопросы такие:

- Как поместить в переменную конкретное время
- время хранящееся в integer можно так запросто численно сравнивать и рпоблем не будет?

8
18 ноября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Rul3z
Ну я не на мускуле делаю. Ну да ладно.. Вопросы такие:

- Как поместить в переменную конкретное время
- время хранящееся в integer можно так запросто численно сравнивать и рпоблем не будет?


Ещё раз. Время в PHP представлено в виде количества секунд прошедших с 1 января 1970 года. Это целое число. Соответственно, допускает всё, что можно делать с целыми числами: складывать, вычитать, умножать, делить, сравнивать, сдвигать et cetera.
А на чём ты делаешь? В смысле, БД какой?

3.6K
18 ноября 2005 года
Rul3z
33 / / 10.05.2004
Цитата:
Originally posted by mfender
Ещё раз. Время в PHP представлено в виде количества секунд прошедших с 1 января 1970 года. Это целое число. Соответственно, допускает всё, что можно делать с целыми числами: складывать, вычитать, умножать, делить, сравнивать, сдвигать et cetera.
А на чём ты делаешь? В смысле, БД какой?



Нафиг нафиг. я короче через date() сделал. так проще имхо, и не надо никаких секунд. геморрой это :(

БД? обычная на файлах. Не люблю я мускулы эти. не люблю усложнять все. Да и не все хостинги дают мускул.

8
19 ноября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Rul3z
Нафиг нафиг. я короче через date() сделал. так проще имхо, и не надо никаких секунд. геморрой это :(

БД? обычная на файлах. Не люблю я мускулы эти. не люблю усложнять все. Да и не все хостинги дают мускул.


Ничего не понял...
Как можно узнать время при помощи date()? И с какой стороны усложнение при использовании БД? По-моему, это как раз хранение данных в текстовых файлах - геммор...

3.6K
19 ноября 2005 года
Rul3z
33 / / 10.05.2004
Цитата:
Originally posted by mfender
Ничего не понял...
Как можно узнать время при помощи date()? И с какой стороны усложнение при использовании БД? По-моему, это как раз хранение данных в текстовых файлах - геммор...



на codenet.ru лежит документация по date()

текстовые мне нравятся. Мускул не люблю да и не юзал никогда. Мне так проще.

8
20 ноября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Rul3z
на codenet.ru лежит документация по date()


Thanks, конечно, но про date() я и так всё знаю. Потому и спросил, как можно получить ПРИЕМЛЕМОЕ для работы время при помощи date()...

Цитата:

текстовые мне нравятся. Мускул не люблю да и не юзал никогда. Мне так проще.


А вот это зря... Люди уже изобрели все эти лесапеды, коорые ты пытаешься изобрести...

4.8K
20 ноября 2005 года
Вася Триллер
149 / / 30.10.2005
Цитата:
Originally posted by Rul3z
на codenet.ru лежит документация по date()



В том-то и дело, что по date(). Дату из него ты вытащишь легко, а вот время...

Цитата:
Originally posted by Rul3z
текстовые мне нравятся. Мускул не люблю да и не юзал никогда. Мне так проще.



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

Поверь, я сначала тоже уповал на файлы, но мускул оказался лучше...

3.6K
20 ноября 2005 года
Rul3z
33 / / 10.05.2004
Цитата:
Originally posted by Вася Триллер
В том-то и дело, что по date(). Дату из него ты вытащишь легко, а вот время...

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

Поверь, я сначала тоже уповал на файлы, но мускул оказался лучше...



1. Ты читал? нифуя. Почитай сначала. потом вытаскивай секунды в человечьем формате.
2. Мне пофиг, для МАЛЕНЬКОГО проекта не стоит мускула. Тем более изучать его. Понадобится - сделаю..

3.6K
20 ноября 2005 года
Rul3z
33 / / 10.05.2004
Цитата:
Originally posted by mfender
Thanks, конечно, но про date() я и так всё знаю. Потому и спросил, как можно получить ПРИЕМЛЕМОЕ для работы время при помощи date()...

А вот это зря... Люди уже изобрели все эти лесапеды, коорые ты пытаешься изобрести...



ну как date(His) и все. в чем проблема то?

8
20 ноября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Rul3z
ну как date(His) и все. в чем проблема то?


Проблема, однако. date("His") выведет в лучшем случае что-то типа 110135. Дальше с этим чудом что делать?

Цитата:
на codenet.ru лежит документация по date()


Цитата:

1. Ты читал? нифуя. Почитай сначала. потом вытаскивай секунды в человечьем формате.


Не поленился и нашёл в указанном месте... Там написано то же самое, что и в мануале к PHP, только по-русски:
Возвращает отформатированную строку теста и цифр согласно параметрам, указанным в аргументе format. Аргумент timestamp

Отсюда вопрос: пресловутый аргумент timestamp - откуда берёшь?
Поясню, к чему я веду: во всех языках работа с датой/временем граничит с мистикой. Во-всяком случае, это актуально на первых порах знакомства с программированием. Сдаётся мне, что мы имеем дело именно с таким случаем. И на этой стадии следует прислушиаться к тому, что люди говорят.
Так вот, поясняю на пальцах, чем отличается date() от time(). Функция date() возвращает удобоваримое для человеческих глаз представление даты/времени. Внешний вид задаётся в аргументе format, передаваемом в функцию date().
Функция time() возвращает время в виде UNIXTimestamp, что является количеством секунд, прошедших с момента наступления эры UNIX, т.е. с 1го января 1970 года.
Человеку об этом знать не нужно. Да и десятизначное число совсем не приемлемо для просмотра. Тут помогает функция date(). Но скрипты, написанные для работы с временем, работают не с человеческим представлением времени. Программиста должен интересовать как раз таки timestamp.
По ряду причин, самые главные из которых - с целым числом легко можно производить логические и арифметические операции.
Плавно перетекаю к пользе использования БД.
В описываемом тут случае, предполагаю, мы имеем дело с текстовым файлом примерно такого вида:
время|заголовок|текст
Очевидно, что информация из файла добывается с помощью file(), а в последствии каждый элемент полученного массива препарируется с помощью explode. Сразу созревают два вопроса:
1. Что произойдёт, если в тексте новости окажется не одна строка?
2. В каком всё-таки виде тут написано поле "время"? И как можно выбрать из этого массива записи, удовлетворяющие условию "время большее, чем текущее", используя функцию date().
Могу ответить сам на эти два вопроса: это огромный гемор.
А ведь чего проще: разложить это всё по полкам БД и выбирать из таблицы ТОЛЬКО нужные записи при помощи всего одной строчки короткого запроса.
А представь, мысль твоя пойдёт дальше, и тебе захочется, например, удалять из твоего текстового файла записи, скажем, "которые сделаны с 14 часов вчерашнего дня по 10 часов сегодняшнего утра"? Будешь циклы гонять кругами, вместо того, чтобы написать просто DELETE FROM table WHERE mytime BETWEEN fromtime AND totime...
Так что совет - не иди на сделку с совестью, помучайся один раз и выучи то, что нужно, даже для однократного "маленького проекта", чем это всё затянется и эти грабли будут попадаться систематически.
Удачи.

3.6K
20 ноября 2005 года
Rul3z
33 / / 10.05.2004
Цитата:
Originally posted by mfender
Проблема, однако. date("His") выведет в лучшем случае что-то типа 110135. Дальше с этим чудом что делать?

Удачи.



Ух, какую телегу ты написал. Т.к. написал достаточно сумбурно - то
дочитай сначла мой пост целиком, прежде чем отвечать. Он тоже сумбурен
:)

Щас попробую обьяснить все по порядку.

date(His) дало тебе прекрасное число. integer. Чо не нравится то?
разбей по 2 цифры и вставь между ними двоеточия, получишь человечий
формат. Не разбивай и сможешь сравнивать Больше - Меньше.

Timestamp я нигде не беру и вообще не понимаю, нахера мне число в
секундах, которое потом замучаешься приводить в человечий вид!
- И только сейчас я понял что мы с тобой руководствуемя другими
данными. ты гвооришь -
date(timestamp),
а я тут же на codenet'e прочитал
string date (string format [, int timestamp]);
Т.е. число в секундах не обязательное и он мне выдает конкретную дату.

Значит, timestamp достаточно просто перевести в человечий вид. ОК.

Арифметические операции? Мне неплохо проводятся с тем что у меня есть.

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

1. да, наверное нельзя делать больше одной сроки. но особо и не
хотелось, у меня не геста :)

2. время записано так как ты и говорил, как и выводит date(His),
только агрумент (ymdHis) и сравнивается элементарно, вот такой скобочкой < :)


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

Если меня потянет на чтото более сложное - может быть я и использую
мускул.(2 причины. мускул не установлен на локалхосте и лень) Но
сперва попытаюсь сделать на файлах извращенно :)

- минус тиместампа, то что отладка становится сложнее. я глазами не смогу
посмотреть в файлике дату, если вдруг захоется.
- минус БД, что я не смогу так просто посмотреть данные. Все
усложняется. Пишется лишних 50 строк кода, улучшаются возможности. НО
все становится СЛОЖНЕЕ. а мне это не надо. Именно поэтому я презираю
.NET, хотя толком с ним не знаком, именно поэтому я люблю ASM. И мое
решение для конкретной задачи я считаю оптимальным. Да, для других
задач надо по другому. А ты предлагаешь все стандартизировать и юзать
для сборки запорожцев оборудование германского BMW, хотя и на коленках
получается неплохо склепать :)

Вобщем то - спасибо. А то я бы так и не узнал что в date можно
timestamp передавать.

8
20 ноября 2005 года
mfender
3.5K / / 15.06.2005
Всё понятно.
По-последнему посту:
Цитата:

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


Можешь в файл, помимо timestamp продублировать удобоваримое для себя date("d.m.Y H:i:s", time()). Вобщем, и себе и серверу :)
А в БД данные очень просто смотреть и редактировать при помощи каких-нибудь MyAdmin'ов. Например, к MySQL всегда прилагается phpMyAdmin - очень удобная штука и обязательно стоит у всех хостёров.

Не болей.

4.8K
20 ноября 2005 года
Вася Триллер
149 / / 30.10.2005
Цитата:
Originally posted by mfender
обязательно стоит у всех хостёров.


Не у всех - корявый хостинг встречается очень часто...

239
21 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
Прошу прекратить флуд. Сообщения не по теме вынужден удалить.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог