За последние 24 часа нас посетили 17622 программиста и 1917 роботов. Сейчас ищут 1028 программистов ...

Форматированный вывод

Тема в разделе "PHP для новичков", создана пользователем YulyaT, 8 июл 2012.

  1. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    2 вопроса:
    1. на сервере хранится дата и время, мне нужно поднять и показать на экране, если так
    Код (Text):
    1. echo "<TD>".$row['crDate'];
    2. echo "<TD>".$row['crTime'];
    то UTC(GMT) не учитывается и на экран поднимается серверное время.
    2. Поле varchar, занесен в первых 3х символах пробел (0x20), читается все нормально но в TD попадают как пробелы, а не как
    Код (Text):
    1. &nbsp;
    и на экране этих пробелов не видно.
    есть ли способ в PHP при выводе учитывать UTC(GMT) и заменять пробелы на nbsp?
    TIA!!!
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.249
    Адрес:
    там-сям
    1. учитывать часовой пояс посетителя? если речь о сайте с регистрацией, то пользователь сможет указать эти данные в своем профиле. тогда можно прибавлять некую дельту ко времени или воспользоваться функциями DateTime. иначе непонятно откуда этой информации взяться.
    2. если буквально заменять, то str_replace(). может быть вас устроит CSS атрибут white-space?
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    По первому ещё можно на JS сделать - сервер вместе со всем остальным отдаёт в JS-скрипте текущее серверное время, на клиентской стороне JS получает текущее время посетителя и высчитывает разницу. Ну а далее прибавляет или отнимает эту разницу к/от всех дат на странице.
     
  4. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    1. сайт с регистрацией, но не хотелось бы клиента просить, что-то вводить. Каждый дополнительный символ у клиента вызывает панику. Хотелось бы находить эту дельту в скрипте и прибавлять.
    Предлагают завести базку IP, по IP находить страну и вычислять UTC.
    2. наверное воспользуюсь str_replace, на стороне клиента не хотелось бы ничего делать.
    И потом, некоторые клиенты ставят блокировку JS, а CSS работает под разными браузерами как сам хочет.
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Насчёт JS - это я как раз по первому говорил, про время, а не про пробелы.
    Мы когда делаем сайты - просто говорим заказчику, что сайт будет работать только со включенным JS и куками. Те 0,5% посетителей, которые отключают JS - они, зайдя на сайт, скорее всего сами поймут интуитивно, что на сайте что-то нарушено и работает неверно. И если им интересен сайт - то включат JS. Ну, я так думаю :)
     
  6. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    По моему опыту, это не так. Клиент в 2 ночи решает зайти на сайт, не получается ничего, сообразить включить js не умеет, хотя об этом огромная надпись на первой странице, начинает звонить хозяину сайта, хозяин сайта звонит программистам, типа заплатил и сайт не работает.
    Много "теплых" слов о сайте и что js это источник вирусов, а кукис хакеры воруют и т.д.
    Потому предпочитаю серверный вариант. Чем клиент меньше знает(видит), тем всем лучше.
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Какой странный клиент попался - ещё и звонить начал :) Если он сумел сообразить его выключить - то и включить должен сообразить :) По-умолчанию во всех браузерах JS включен.
    JS порой позволяет существенно снизить нагрузку на сервер. Вот в данном примере - одно дело держать свою базу IP-адресов и определять по ней местоположение посетителя, по нему получать разницу во времени, и совсем другое дело - просто вывести текущее серверное время в JS-скрипт :)
    Кроме того, клиент может зайти на сайт через прокси какой-нибудь, тогда сервер определит IP этого прокси, а не клиента. И, соответственно, разницу во времени посчитает до прокси, а не до клиента. Клиент же опять увидет неправильное время (если только он случайно не окажется в одном часовом поясе с прокси-сервером).
    JavaScript же определит часовой пояс и разницу во времени просто "посмотрев на часы" на клиентской машине.
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.593
    Симпатии:
    1.764
    Если с JS делать, то лучше всего при авторизации пользователя дополнительно вставлять куда-нибудь его время. Я даже предлагаю такое решение. Делаете скрытое поле в форме авторизации. Ставите его по умолчанию нулём. Далее, в обработчике onload страницы из JS записываете туда текущее время. Таким образом, вы его получите вместе с логином и паролём и сможете уже скорректировать всё выдаваемое клиенту время на сервере. А если получили в этом поле 0, то сразу ясно, что у клиента отключён JS, и вы пишите, что типа - у вас отключён JS, посему время серверное.

    Добавлено спустя 1 минуту 29 секунд:
    Хотя мне пока, за мой недолгий период работы веб-программистом, пока попадаются только заказы, где без JS вообще ничего не сделать, поскольку требуется интерактивное взаимодействие пользователя со страницей
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    TIMESTAMP выдаёт с коррекцией на часовой пояс, если его задать мускулу запросом перед выборками.
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Лучше не на onload, а на onsubmit форме, а то может он её заполнять полчаса будет.