Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
1

Календарь на PHP (передача даты в Javascript)

12.10.2018, 13:11. Просмотров 202. Ответов 12
Метки нет (Все метки)

Есть такой код. Но дата в него попадает с компьютера пользователя. При неправильной установке даты на ПК и дата на сайте будет отображаться не правильно.
Как изначально (один первый раз) передать дату с сервера в этот код для установки точной даты?
Сайт jurvrn.ru
PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
 
<style type="text/css">
    .tg {border-collapse:collapse;border-spacing:0;border-style:solid;border-width:1px;border-color:#561;margin:0px auto;}
    .tg td {font-family:Arial,sans-serif;font-size:14px;padding:5px 8px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#f0f0f0;color:#333;background-color:#fff;}
    .tg th {font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:5px 10px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#f0f0f0;color:#333;background-color:#f0f0f0;}
    .tg .tg-s6z2 {text-align: center;}
    .tg-wrap {float:none; position:relative;}
    
    @media screen and (max-width: 767px) {
        .tg {width: auto !important;}
        .tg col {width: auto !important;}
        .tg-wrap {overflow-x: auto;-webkit-overflow-scrolling: touch; margin: auto 0px;}
    }
 
    #calendar3 thead tr:last-child, #calendar3 tbody td   {text-align: center;}
 
        #calendar3 thead tr:last-child {
            font-size: small;
            color: rgb(85, 85, 85);
        }
        #calendar3 tbody td {
            color: rgb(44, 86, 122);
        }
        #calendar3 tbody td:nth-child(n+6), #calendar3 .holiday {
            color: rgb(126, 13, 1);
        }
        #calendar3 tbody td.today {
            outline: 3px solid red;
        }
 
    #polegod {width:5em; padding-left: 0.5em;}
    #polegod::-webkit-inner-spin-button { opacity: 1; }
 
</style>
 
<div class="tg-wrap"><table id="calendar3" class="tg">
    <thead>
    <tr>
        <th class="tg-s6z2" colspan="4"><select>
            <option value="0">Январь</option>
            <option value="1">Февраль</option>
            <option value="2">Март</option>
            <option value="3">Апрель</option>
            <option value="4">Май</option>
            <option value="5">Июнь</option>
            <option value="6">Июль</option>
            <option value="7">Август</option>
            <option value="8">Сентябрь</option>
            <option value="9">Октябрь</option>
            <option value="10">Ноябрь</option>
            <option value="11">Декабрь</option>
        </select></th>
        <th class="tg-s6z2" colspan="3"><input type="number" id="polegod" value="" min="0" max="9999" size="4"></th>
    </tr>
    <tr>
        <td class="tg-s6z2">Пн</td>
        <td class="tg-s6z2">Вт</td>
        <td class="tg-s6z2">Ср</td>
        <td class="tg-s6z2">Чт</td>
        <td class="tg-s6z2">Пт</td>
        <td class="tg-s6z2">Сб</td>
        <td class="tg-s6z2">Вс</td>
    </tr>
    </thead><tbody></tbody></table></div>
 
<script>
    function Calendar3(id, year, month) {
        var Dlast = new Date(year,month+1,0).getDate(),
            D = new Date(year,month,Dlast),
            DNlast = D.getDay(),
            DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(),
            calendar = '<tr>',
            m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'),
            g = document.querySelector('#'+id+' input');
        if (DNfirst != 0) {
            for(var  i = 1; i < DNfirst; i++) calendar += '<td>';
        }else{
            for(var  i = 0; i < 6; i++) calendar += '<td>';
        }
        for(var  i = 1; i <= Dlast; i++) {
            if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
                calendar += '<td class="today">' + i;
            } else {
                calendar += '<td>' + i;
            }
            if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0) {
                calendar += '<tr>';
            }
        }
        for(var  i = DNlast; i < 7; i++) calendar += '<td>&nbsp;';
        document.querySelector('#'+id+' tbody').innerHTML = calendar;
        g.value = D.getFullYear();
        m.selected = true;
        if (document.querySelectorAll('#'+id+' tbody tr').length < 6) {
            document.querySelector('#'+id+' tbody').innerHTML += '<tr><td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;';
        }
        document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(230, 33, 33)'; // в выпадающем списке выделен текущий месяц
    }
    Calendar3("calendar3",new Date().getFullYear(),new Date().getMonth());
    document.querySelector('#calendar3').onchange = function Kalendar3() {
        Calendar3("calendar3",document.querySelector('#calendar3 input').value,parseFloat(document.querySelector('#calendar3 select').options[document.querySelector('#calendar3 select').selectedIndex].value));
    }
</script>
</body>
</html>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2018, 13:11
Ответы с готовыми решениями:

Передача массива из JavaScript(AJAX, JSON) в PHP
Добрый вечер! Ребят, тут такое дело, имеется схема зала с местами. У каждого места есть свой ID....

Календарь на php
Доброго времени суток! Помогите, пожалуйста, исправить код календаря. Мне необходимо сделать так,...

PHP календарь с выбором диапазона дат бронирования
Здравствуйте. Посмотрел по форуму и не нашел ничего похожего. Мне на лето дали задание! Вот оно: ...

Php!? Передача json в php
почему такой код не срабатывает: &lt;?php include(&quot;includer.php&quot;); $razdel =...

javascript в PHP
Помогите пожалуйста разобратся почему не работает скрипт в пхп &lt;html&gt; &lt;head&gt; ...

12
atanov
191 / 190 / 72
Регистрация: 26.05.2016
Сообщений: 1,222
12.10.2018, 18:22 2
jurvrn, а что означает «для установки даты»?
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
12.10.2018, 18:28  [ТС] 3
atanov, если менять на ПК дату то и в форме она меняется, надо передать (брать) дату с сервера (у меня Wordpress)
Например getdate(), но как эту функцию приспособить к скрипту? В каком месте изменить переменные? Мне не разобраться, для меня скрипт сложный. Скриншот формы календаря
https://screenshots.firefox.com/raNZHvzTiF5PjhU1/jurvrn.ru
0
atanov
191 / 190 / 72
Регистрация: 26.05.2016
Сообщений: 1,222
12.10.2018, 22:48 4
jurvrn, ну передали Вы с сервера дату/время, а дальше что? Для чего она нужна? Вы не сможете с помощью js изменить дату на компьютере пользователя. Потом, пользовать совсем что ли дурень, не знает какой день?
В Вашем js коде создаётся объект Date, прекрасно берет текущее время в миллисекундах от точки отсчета, извлекается в удобном формате; подробности вот здесь:

https://learn.javascript.ru/datetime
1
intersk
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 326
14.10.2018, 09:59 5
atanov, нет цели менять дату на компьютере пользователя, а дать точную информацию. Для моего сайта это важно, чтобы перед глазами пользователя была точная дата. Ошибки локального компьютера должны быть исключены. Т.е. не установить, а отобразить.
Объект "дате" локален, лучше бы использовать функцию php getdate. Но как её приспособить не знаю
0
atanov
191 / 190 / 72
Регистрация: 26.05.2016
Сообщений: 1,222
14.10.2018, 13:31 6
intersk, отобразить проблем нет: на стороне сервера берёте getdate(), фиксируете это в html. А дальше у Вас начнутся игры с синхронизацией, сервер-то в момент отдачи выдал и всё, дальше серверный скрипт помирает и сервер не знает более о дате на стороне клиента, хоть он отдал, хоть дата получена локально.
Представьте такую ситуацию: пользователь получить дату с сервера и увидел её в html. Эта дата отстанет от даты сервера на величину времени - дельта = текущий момент минус момент обращения к getdate(). Далее пользователь отвлёкся, пошел кофейку выпить, забыл про вкладку и вернулся к ней через неделю - в html осталась старая дата, новая появиться только после обращения к серверу за getdate().
Поэтому ответьте сначала себе на вопрос для чего нужно это время?
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
16.10.2018, 13:51  [ТС] 7
Цитата Сообщение от atanov Посмотреть сообщение
В Вашем js коде создаётся объект Date, прекрасно берет текущее время в миллисекундах от точки отсчета
а какая это точка отсчета и как её подсунуть php-функцию getdate() ?

Добавлено через 1 минуту
Цитата Сообщение от atanov Посмотреть сообщение
на стороне сервера берёте getdate(), фиксируете это в html.
как передать это в код?

Добавлено через 1 минуту
Цитата Сообщение от atanov Посмотреть сообщение
ервер-то в момент отдачи выдал и всё, дальше серверный скрипт помирает и сервер не знает более о дате на стороне клиента
так и надо - отдал дату в код при открытии страницы и всё, независимо от даты на ПК пользователя.
в этом задача - первичное открытие страницы с точной датой
0
atanov
191 / 190 / 72
Регистрация: 26.05.2016
Сообщений: 1,222
16.10.2018, 20:16 8
Цитата Сообщение от jurvrn Посмотреть сообщение
а какая это точка отсчета и как её подсунуть php-функцию getdate() ?
не понятно, Вы ведь хотите с сервера получить дату. В этом случае зачем на сервер передавать.
Цитата Сообщение от jurvrn Посмотреть сообщение
как передать это в код?
для начала, например в html просто вывести:
PHP
1
echo '<div>'.date('Y').'</div>';
Дальше можно с DOM работать.
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
17.10.2018, 12:58  [ТС] 9
atanov, имел ввиду что дату брать с сервера, а не с ПК пользователя.
И мне не просто нужна дата, а чтобы она отразилась в форме календаря.
0
Omion
31 / 30 / 11
Регистрация: 19.05.2015
Сообщений: 295
17.10.2018, 13:18 10
Уважаемые!? почему просто не включить плагины календаря и т.д?
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
17.10.2018, 14:34  [ТС] 11
Omion, не видел календарь такого формата и стиля. И часто они берут дату с ПК, так как написаны на джаваскрипте.
По сути задача сводится к тому: как переменную с датой , полученной через php подсунуть в скрипт, взамен javascript'овской date ?
0
Omion
31 / 30 / 11
Регистрация: 19.05.2015
Сообщений: 295
17.10.2018, 15:09 12
редактор, редактор. на этом сайте. он чудесен. я его пинать ногами.

Добавлено через 6 минут
выполнить php внутри js.

Javascript
1
var z= "<? date ?>";

Переменная глобальна нахождение на странице php.
Зачем видеть такой именно. Собирать можно из нескольких.
Javascript
1
2
3
4
5
6
globalArr = [
    <?
        $a = json_encode($example);
         print $a;
    ?>
];
вот я так делал.
нужен был массив из php
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
17.10.2018, 15:50  [ТС] 13
Omion, я понимаю "что" надо сделать, но "как" это сделать в моем коде? чувствую что одной подменой переменной не получится решить задачу. Нужно будет переделывать код

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<script>
    function Calendar3(id, year, month) {
        var Dlast = new Date(year,month+1,0).getDate(),
            D = new Date(year,month,Dlast),
            DNlast = D.getDay(),
            DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(),
            calendar = '<tr>',
            m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'),
            g = document.querySelector('#'+id+' input');
        if (DNfirst != 0) {
            for(var  i = 1; i < DNfirst; i++) calendar += '<td>';
        }else{
            for(var  i = 0; i < 6; i++) calendar += '<td>';
        }
        for(var  i = 1; i <= Dlast; i++) {
            if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
                calendar += '<td class="today">' + i;
            } else {
                calendar += '<td>' + i;
            }
            if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0) {
                calendar += '<tr>';
            }
        }
        for(var  i = DNlast; i < 7; i++) calendar += '<td>&nbsp;';
        document.querySelector('#'+id+' tbody').innerHTML = calendar;
        g.value = D.getFullYear();
        m.selected = true;
        if (document.querySelectorAll('#'+id+' tbody tr').length < 6) {
            document.querySelector('#'+id+' tbody').innerHTML += '<tr><td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;';
        }
        document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(230, 33, 33)'; // в выпадающем списке выделен текущий месяц
    }
    Calendar3("calendar3",new Date().getFullYear(),new Date().getMonth());
    document.querySelector('#calendar3').onchange = function Kalendar3() {
        Calendar3("calendar3",document.querySelector('#calendar3 input').value,parseFloat(document.querySelector('#calendar3 select').options[document.querySelector('#calendar3 select').selectedIndex].value));
    }
</script>
0
17.10.2018, 15:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2018, 15:50

PHP в JavaScript
Привет, друзья! ох у меня проблемка... как собственно вставить в JavaScript код из PHP? ...

Валидация на javascript и php
Как сделать чтобы, например, при корректном заполнении формы, проверяемой JavaScript, вызывался...

Книги по php, javascript
Подскажите хорошие книги по php и javascript и по созданию шаблонов сайта желательно на русском...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru