За последние 24 часа нас посетили 45368 программистов и 1813 роботов. Сейчас ищут 852 программиста ...

Составить запрос из нескольких таблиц join

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 12 фев 2018.

  1. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    С потолка ;) Из чего состоит строка запроса: ключ1=значение1&ключ2=значение2. На сервере, по определенному ключу, получаем его значение из глобальной переменной $_GET, $_POST. Так и тут - можно передать объект, а можно сразу строку data: 'some_key_1=some_val_1&some_key_2=some_val_2'. Я предпочитаю объект, т.к. подставлять переменные удобней. А имена ключей берете какие хотите.
    Замечтательно... Разве кто-то запрещает вызвать нужные функции? Ответ на Ajax-запрос отдаётся любым способом вывода: echo, print, exit(), var_dump() и т.д. или return, если функция/метод класса.
    Ну, в метод eventCalendar передается объект с различными опциями. Смысл мне копипастить их все, когда речь шла только про один параметр. Вот, весь код:
    Код (Javascript):
    1. function initCalendar(data) {
    2.     $('#eventCalendar').eventCalendar({
    3.         jsonData: data,
    4.         startWeekOnMonday: true,
    5.         /*если труе будет правильно дни недели*/
    6.         openEventInNewWindow: true,
    7.         dateFormat: 'dddd DD-MM-YYYY',
    8.         showDescription: false,
    9.         locales: {
    10.             locale: "ru",
    11.             txt_noEvents: "Нет запланированных событий",
    12.             txt_SpecificEvents_prev: "",
    13.             txt_SpecificEvents_after: "события:",
    14.             txt_NextEvents: "Следующие события:",
    15.             txt_GoToEventUrl: "",
    16.             /*url адрес*/
    17.             moment: {
    18.                 "months": ["Январь", "Февраль", "Март",
    19.                     "Апрель", "Май", "Июнь",
    20.                     "Июль", "Август", "Сентябрь",
    21.                     "Октябрь", "Ноябрь", "Декабрь"
    22.                 ],
    23.                 "monthsShort": ["Янв", "Фев", "Мар",
    24.                     "Апр", "Май", "Июн",
    25.                     "Июл", "Авг", "Сен",
    26.                     "Окт", "Ноя", "Дек"
    27.                 ],
    28.                 "weekdays": ["Воскресенье", "Понедельник", "Вторник",
    29.                     "Среда", "Четверг", "Пятница", "Суббота"
    30.                 ],
    31.                 "weekdaysShort": ["Вс", "Пн", "Вт",
    32.                     "Ср", "Чт", "Пт", "Сб"
    33.                 ],
    34.                 "weekdaysMin": ["Вс", "Пн", "Вт",
    35.                     "Ср", "Чт", "Пт", "Сб"
    36.                 ]
    37.             }
    38.         }
    39.     });
    40. }
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    На счет этого я уже и сам догадался) а вот по поводу ajax обратится к файлу а потом нужно как то обратится к определенной функции, какие есть варианты?
     
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Чисто схематически
    PHP:
    1. <?php
    2. function Multiplication($n) {
    3.     return $n * 2;
    4. }
    5. function Addition($n, $m){
    6.     return $n + $m;
    7. }
    8. // Ждем какие-то числовые данные
    9. $number = filter_input(INPUT_GET, 'some_key_1', FILTER_VALIDATE_INT);
    10. if($number) {
    11.     // вызвали одну функию
    12.     $mult = Multiplication($number);
    13.     // вызвали вторую
    14.     $result = Addition($mult, 10);
    15.     // ... если нужно - еще десяток функций вызываем
    16. } else {
    17.     $result = false;
    18. }
    19. exit(json_encode($result)); // отдаем результат
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Походу мы друг друга не поняли) это ты пишешь сейчас за php? А я спрашивал за js ajax как обратится к фалу к определенной функции)
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Повторю свою изъезженную фразу: к Ajax-запросам, нужно относиться так же, как и к обычным ибо они принципиально ничем не отличаются. При обычном запросе, например, по ссылке или при отправке формы, как бы вы вызывали нужную функцию? Вот всё так же делаете и при Ajax-запросе.
    --- Добавлено ---
    Ок, давайте еще проще. Предположим, что была стандартная форма и обработчик на сервере, который принимал данные этой формы, записывал их в БД и генерировал страницу с сообщением об успешно выполненной операции. Если бы меня попросили перевести это на Ajax, то мне бы пришлось изменить только последнее действие, т.к. формировать страницу не нужно, а нужно только вернуть само сообщение о том, что операция выполнена. Всё остальное, если оно конечно по уму написано, мне даже трогать не пришлось бы.
     
    _ne_scaju_ нравится это.
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ну например я бы вызвал бы так:
    PHP:
    1. function test1($p){
    2. return $p = 3;
    3. }
    4. function test2($c){
    5. return $c = 1;
    6. }
    7.  
    8. $p = test1($i);
    9. $c = test2($o);
    10. echo $a = $p + $c;
    Как то так, но синтаксис разный же, не зная его не напишешь запрос.
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Такой код отлично бы выполнил свою задачу. А синтаксис чего? Что-то я не понял.
    И прочтите, я дополнил предыдущий свой ответ.
     
  8. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Может я не в том файле запускаю скрипт js?
    Прочитал)
     
  9. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Честное слово - я не телепат :)
    Вот тут у вас должен быть JS-код. В Ajax url: 'путь/к/файлу/function.php'.
    Тут у вас было три функции (теперь вроде бы две осталось), вызываете первую функцию $predmet = get_predmet();, потом вторую $events = get_events($predmet);, в $events, как я понимаю, сейчас уже JSON-строка. Возвращаем её:
    PHP:
    1. # вытягиваем наш предмет для определенного пользователя
    2. function get_predmet()
    3. {
    4.     // код функции
    5. }
    6. # функция для календаря
    7. function get_events($predmet)
    8. {
    9.     // код функции
    10. }
    11. $predmet = get_predmet();
    12. $events = get_events($predmet);
    13. exit($events);
    14. // или, если $events - это еще массив, то
    15. exit(json_encode($events));
     
  10. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Допустим у меня так все сделано примерно кроме exit() да и путь я прописал к файлу верный и указал что это будет отправка POST запроса, но страница все ровно обновляется после нажатия на кнопку отправить.
     
  11. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    P.S. Не забудьте в файл function.php перенести подключение файла 'config/db.php'
    --- Добавлено ---
    Это уже правильный вопрос. Необходимо отменять обычное действие события. Например, если у вас форма с ID = "my_form" и нужно отправить из неё данные Ajax-ом, то код может быть таким:
    Код (Javascript):
    1. $('#my_form').on('submit', function(e){
    2.     e.preventDefault();
    3.     // дальше код Ajax-запроса
    4. });
    Если бы это была ссылка, например, с классом = "my_class"
    Код (Javascript):
    1. $('.my_class').on('click', function(e){
    2.     e.preventDefault();
    3.     // дальше код Ajax-запроса
    4. });
     
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    В итоге файл стал такого вида:
    PHP:
    1. <?php
    2. require_once 'functions.php'; # подключаем функции для календаря
    3.  
    4. $predmet = get_predmet();       # Выводим список предметов
    5. $events = get_events($predmet); # Вывод календаря
    6. // exit(json_encode($events));
    7. ?>
    8. <!DOCTYPE html>
    9. <html lang="en">
    10. <head>
    11.     <meta charset="UTF-8">
    12.     <title>Календарь событий</title>
    13.     <link rel="stylesheet" href="css/eventCalendar.css">
    14.     <link rel="stylesheet" href="css/eventCalendar_theme_responsive.css">
    15.     <script src="http://code.jquery.com/jquery.min.js"></script>
    16.     <script src="js/moment.js"></script>
    17.     <script src="js/jquery.eventCalendar.js"></script>
    18. </head>
    19. <body>
    20.  
    21. <div id="eventCalendar" style="width: 300px; margin: 100px auto;"></div>
    22.  
    23. <script>
    24. $(function(){
    25.     var data = <?php echo $events; ?>;
    26.     // console.log(JSON.parse(data));
    27.     $('#eventCalendar').eventCalendar({
    28.         jsonData: data,
    29.         startWeekOnMonday: true, /*если труе будет правильно дни недели*/
    30.         openEventInNewWindow: true,
    31.         dateFormat: 'dddd DD-MM-YYYY',
    32.         showDescription: false,
    33.         locales: {
    34.             locale: "ru",
    35.             txt_noEvents: "Нет запланированных событий",
    36.             txt_SpecificEvents_prev: "",
    37.             txt_SpecificEvents_after: "события:",
    38.             txt_NextEvents: "Следующие события:",
    39.             txt_GoToEventUrl: "", /*url адрес*/
    40.             moment: {
    41.                       "months" : [ "Январь", "Февраль", "Март",
    42.                                        "Апрель", "Май", "Июнь",
    43.                                        "Июль", "Август", "Сентябрь",
    44.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    45.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    46.                                         "Апр", "Май", "Июн",
    47.                                         "Июл", "Авг", "Сен",
    48.                                         "Окт", "Ноя", "Дек" ],
    49.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    50.                                         "Среда","Четверг","Пятница","Суббота" ],
    51.             "weekdaysShort" : [ "Вс","Пн","Вт",
    52.                                         "Ср","Чт","Пт","Сб" ],
    53.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    54.                                        "Ср","Чт","Пт","Сб" ]
    55.             }
    56.         }
    57.     });
    58. });
    59. </script>
    60.  
    61. <script>
    62. $.ajax({
    63.     // путь к обработчику на стороне сервера
    64.     url: 'function.php',
    65.     // метод передачи: GET, POST, etc
    66.     type: 'POST',
    67.     // важно указать тип, чтобы JSON-строка не преобразовывалась в объект
    68.     dataType: 'text', // или html
    69.     // если нужно в запросе передавать какие-то данные
    70.     data: {
    71.         some_key_1: <?php echo $predmet; ?>,
    72.         // some_key_2: 'some_value_2',
    73.     },
    74.     // в случае успешного завершения запроса, вызываем функцию инициализации календаря
    75.     success: initCalendar;
    76. });
    77.  
    78. function initCalendar (data) {
    79.       $('#eventCalendar').eventCalendar({
    80.         jsonData: data,
    81.         startWeekOnMonday: true, /*стоит в true для правильного отображения дня недели*/
    82.         openEventInNewWindow: true,
    83.         dateFormat: 'dddd DD-MM-YYYY',
    84.         showDescription: false,
    85.         locales: {
    86.             locale: "ru",
    87.             txt_noEvents: "Нет запланированных событий",
    88.             txt_SpecificEvents_prev: "",
    89.             txt_SpecificEvents_after: "события:",
    90.             txt_NextEvents: "Следующие события:",
    91.             txt_GoToEventUrl: "", /*url адрес*/
    92.             moment: {
    93.                       "months" : [ "Январь", "Февраль", "Март",
    94.                                        "Апрель", "Май", "Июнь",
    95.                                        "Июль", "Август", "Сентябрь",
    96.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    97.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    98.                                         "Апр", "Май", "Июн",
    99.                                         "Июл", "Авг", "Сен",
    100.                                         "Окт", "Ноя", "Дек" ],
    101.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    102.                                         "Среда","Четверг","Пятница","Суббота" ],
    103.             "weekdaysShort" : [ "Вс","Пн","Вт",
    104.                                         "Ср","Чт","Пт","Сб" ],
    105.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    106.                                        "Ср","Чт","Пт","Сб" ]
    107.             }
    108.         }
    109.     });
    110. }
    111. </script>
    112.  
    113. </body>
    114. </html>
    Но суть не поменялась)
    Еще раз попробовал сделать с отменой действий тоже самое перезагружается страница:
    PHP:
    1. <?php
    2. require_once 'functions.php'; # подключаем функции для календаря
    3.  
    4. $predmet = get_predmet();       # Выводим список предметов
    5. $events = get_events($predmet); # Вывод календаря
    6. // exit(json_encode($events));
    7. ?>
    8. <!DOCTYPE html>
    9. <html lang="en">
    10. <head>
    11.     <meta charset="UTF-8">
    12.     <title>Календарь событий</title>
    13.     <link rel="stylesheet" href="css/eventCalendar.css">
    14.     <link rel="stylesheet" href="css/eventCalendar_theme_responsive.css">
    15.     <script src="http://code.jquery.com/jquery.min.js"></script>
    16.     <script src="js/moment.js"></script>
    17.     <script src="js/jquery.eventCalendar.js"></script>
    18. </head>
    19. <body>
    20.  
    21. <div id="eventCalendar" style="width: 300px; margin: 100px auto;"></div>
    22.  
    23. <script>
    24. $(function(){
    25.     var data = <?php echo $events; ?>;
    26.     // console.log(JSON.parse(data));
    27.     $('#eventCalendar').eventCalendar({
    28.         jsonData: data,
    29.         startWeekOnMonday: true, /*если труе будет правильно дни недели*/
    30.         openEventInNewWindow: true,
    31.         dateFormat: 'dddd DD-MM-YYYY',
    32.         showDescription: false,
    33.         locales: {
    34.             locale: "ru",
    35.             txt_noEvents: "Нет запланированных событий",
    36.             txt_SpecificEvents_prev: "",
    37.             txt_SpecificEvents_after: "события:",
    38.             txt_NextEvents: "Следующие события:",
    39.             txt_GoToEventUrl: "", /*url адрес*/
    40.             moment: {
    41.                       "months" : [ "Январь", "Февраль", "Март",
    42.                                        "Апрель", "Май", "Июнь",
    43.                                        "Июль", "Август", "Сентябрь",
    44.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    45.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    46.                                         "Апр", "Май", "Июн",
    47.                                          "Июл", "Авг", "Сен",
    48.                                          "Окт", "Ноя", "Дек" ],
    49.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    50.                                          "Среда","Четверг","Пятница","Суббота" ],
    51.              "weekdaysShort" : [ "Вс","Пн","Вт",
    52.                                          "Ср","Чт","Пт","Сб" ],
    53.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    54.                                        "Ср","Чт","Пт","Сб" ]
    55.             }
    56.         }
    57.     });
    58. });
    59. </script>
    60.  
    61. <script>
    62. $('.my_class').on('click', function(e){
    63.     e.preventDefault();
    64.     // дальше код Ajax-запроса
    65. $.ajax({
    66.     // путь к обработчику на стороне сервера
    67.     url: 'function.php',
    68.     // метод передачи: GET, POST, etc
    69.     type: 'POST',
    70.     // важно указать тип, чтобы JSON-строка не преобразовывалась в объект
    71.     dataType: 'text', // или html
    72.     // если нужно в запросе передавать какие-то данные
    73.     data: {
    74.         some_key_1: <?php echo $predmet; ?>,
    75.         // some_key_2: 'some_value_2',
    76.     },
    77.     // в случае успешного завершения запроса, вызываем функцию инициализации календаря
    78.     success: initCalendar;
    79. });
    80. });
    81.  
    82. function initCalendar (data) {
    83.       $('#eventCalendar').eventCalendar({
    84.         jsonData: data,
    85.         startWeekOnMonday: true, /*стоит в true для правильного отображения дня недели*/
    86.         openEventInNewWindow: true,
    87.         dateFormat: 'dddd DD-MM-YYYY',
    88.         showDescription: false,
    89.         locales: {
    90.             locale: "ru",
    91.             txt_noEvents: "Нет запланированных событий",
    92.             txt_SpecificEvents_prev: "",
    93.             txt_SpecificEvents_after: "события:",
    94.             txt_NextEvents: "Следующие события:",
    95.             txt_GoToEventUrl: "", /*url адрес*/
    96.             moment: {
    97.                       "months" : [ "Январь", "Февраль", "Март",
    98.                                        "Апрель", "Май", "Июнь",
    99.                                        "Июль", "Август", "Сентябрь",
    100.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    101.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    102.                                         "Апр", "Май", "Июн",
    103.                                          "Июл", "Авг", "Сен",
    104.                                          "Окт", "Ноя", "Дек" ],
    105.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    106.                                          "Среда","Четверг","Пятница","Суббота" ],
    107.              "weekdaysShort" : [ "Вс","Пн","Вт",
    108.                                          "Ср","Чт","Пт","Сб" ],
    109.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    110.                                        "Ср","Чт","Пт","Сб" ]
    111.             }
    112.         }
    113.     });
    114. }
    115. </script>
    116.  
    117. </body>
    118. </html>
    Может я не правильно передаю что-то в ключ?
    Код (Javascript):
    1.     data: {
    2.         some_key_1: <?php echo $predmet; ?>,
    3.         // some_key_2: 'some_value_2',
    4.     },
    Я подумал раз отправляется форма значит у меня какие-то значения передаются, и в итоге у меня передается предмет, может опять я не так логику поставил)
     
    #37 _ne_scaju_, 13 фев 2018
    Последнее редактирование: 13 фев 2018
  13. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    success: initCalendar; вот тут точки с запятой быть не должно. Откуда вы её взяли, если в моём примере её не было
    Во-вторых, у вас код Ajax выполняется после загрузки страницы, а не по клику на какую-то кнопку или что-то еще. В-третьих, зачем дублировать код плагина, если он у вас уже есть в функции? Можно же просто передать туда данные:
    Код (Javascript):
    1. initCalendar (<?php echo $events; ?>);
    И в-четвертых, наверно пора поспать, а то я сам уж тормозить начинаю ;)
     
    _ne_scaju_ нравится это.
  14. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Хорошо тогда до завтра, а то целый день сижу и голову ломаю, спасибо за уточнение моих ошибок)
     
  15. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Deonis
    Привет, можно приступить дальше)
    Убрал, говорю синтаксиса не знаю :D
    Каким способом я должен исправить чтобы страница загружалась, а потом после клика использовался ajax?
    Думал думал куда передать данные например:
    Код (Javascript):
    1. var a = initCalendar (<?php echo $events; ?>);
    как понимаешь я не понял куда передать данные)
    Четвертого пункта не будет сейчас он вчера был :D
     
  16. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Можно, только сегодня у меня уже не выходной, поэтому отвечать буду набегами.
    Какой элемент будет отвечать за динамическую структуру, это данные формы, кнопка или еще что-то? Покажите HTML-код этого фрагмента.
    Пример:
    Код (Javascript):
    1. // функция вывода данных
    2. function foo(data) {
    3.     // какой-то код
    4. }
    5.  
    6. // вызов функции при загрузке страницы
    7. foo(<?= $data; ?>);
    8.  
    9. // Устанавливаем обработчик события на форму
    10. $('form').on('submit', function(e) {
    11.     e.preventDefault();
    12.     $.ajax({
    13.         /* .... */
    14.         success: foo // вызов функции после успешного завершения запроса
    15.     });
    16. });
    Как видите, за вывод данных отвечает одна функция, которую мы можем вызвать при разных обстоятельствах. В вашем же коде, вы продублировали код инициализации плагина: один раз этот код вне функции, где вы подставляете данные из PHP, а второй раз уже внутри функции. Вот я и говорил, что дублировать код - это совсем лишнее.
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Фрагмент html сделан в php файле.
    PHP:
    1.         echo '<form action="" method="POST" class="my_class">';
    2.         echo '<select name="predmet" id="event_start">';
    3.         echo '<option>Выберие предмет</option>';
    4.  
    5.         # через массив перебираем наши предметы которые приходят из базы
    6.        foreach ($result as $key => $value)
    7.         {
    8.             $s = ($value['id'] == $key) ? 'selected': '';
    9.             printf('<option value="%s" %s>%s</option>', $value['id'], $s, $value['naimenovanie']);
    10.         }
    11.         echo '</select>';
    12.         echo '<input type="submit" value="Выбрать"/>';
    13.         echo '</form>';
     
  18. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Не имеет значения где, главное, что он выводится на страницу.
    Код (Javascript):
    1. $('.my_class').on('submit', function(e) {
    2.     e.preventDefault();
    3.     $.ajax({
    4.         url: 'function.php',
    5.         type: 'POST',
    6.         dataType: 'text',
    7.         data: $(this).serialize(),
    8.         success: initCalendar,
    9.         error: function(xhr, ajaxOptions, thrownError) {
    10.             console.log(thrownError + '; ' + xhr.statusText + '; ' + xhr.responseText);
    11.         }
    12.     });
    13. });
    На сервере встречаете данные $_POST['predmet'];
     
  19. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Если честно то все ровно при нажатии кнопки отправить не чего не происходит)
    Давай так я покажу что у меня сейчас в файле находится дальше отталкиваться будет от этого:
    PHP:
    1. <?php
    2. require_once 'functions.php'; # подключаем функции для календаря
    3.  
    4. $predmet = get_predmet();       # Выводим список предметов и передаем выбранный предмет в функцию которая ниже
    5. $events = get_events($predmet); # Вывод календаря
    6. // exit(json_encode($events));
    7. ?>
    8. <!DOCTYPE html>
    9. <html lang="en">
    10. <head>
    11.     <meta charset="UTF-8">
    12.     <title>Календарь событий</title>
    13.     <link rel="stylesheet" href="css/eventCalendar.css">
    14.     <link rel="stylesheet" href="css/eventCalendar_theme_responsive.css">
    15.     <script src="http://code.jquery.com/jquery.min.js"></script>
    16.     <script src="js/moment.js"></script>
    17.     <script src="js/jquery.eventCalendar.js"></script>
    18. </head>
    19. <body>
    20.  
    21. <div id="eventCalendar" style="width: 300px; margin: 100px auto;"></div>
    22. <!-- Думал этот кусок кода инициализации сделать функцией-->
    23. <script>
    24. $(function(){
    25.     var data = <?php echo $events; ?>;
    26.     // console.log(JSON.parse(data));
    27.     $('#eventCalendar').eventCalendar({
    28.         jsonData: data,
    29.         startWeekOnMonday: true, /*если труе будет правильно дни недели*/
    30.         openEventInNewWindow: true,
    31.         dateFormat: 'dddd DD-MM-YYYY',
    32.         showDescription: false,
    33.         locales: {
    34.             locale: "ru",
    35.             txt_noEvents: "Нет запланированных событий",
    36.             txt_SpecificEvents_prev: "",
    37.             txt_SpecificEvents_after: "события:",
    38.             txt_NextEvents: "Следующие события:",
    39.             txt_GoToEventUrl: "", /*url адрес*/
    40.             moment: {
    41.                       "months" : [ "Январь", "Февраль", "Март",
    42.                                        "Апрель", "Май", "Июнь",
    43.                                        "Июль", "Август", "Сентябрь",
    44.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    45.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    46.                                         "Апр", "Май", "Июн",
    47.                                          "Июл", "Авг", "Сен",
    48.                                          "Окт", "Ноя", "Дек" ],
    49.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    50.                                          "Среда","Четверг","Пятница","Суббота" ],
    51.              "weekdaysShort" : [ "Вс","Пн","Вт",
    52.                                          "Ср","Чт","Пт","Сб" ],
    53.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    54.                                        "Ср","Чт","Пт","Сб" ]
    55.             }
    56.         }
    57.     });
    58. });
    59. </script>
    60.  
    61. <script>
    62. $('.my_class').on('submit', function(e) {
    63.     e.preventDefault();
    64.     $.ajax({
    65.         url: 'function.php',
    66.         type: 'POST',
    67.         dataType: 'text',
    68.         data: $(this).serialize(),
    69.         success: initCalendar,
    70.         error: function(xhr, ajaxOptions, thrownError) {
    71.             console.log(thrownError + '; ' + xhr.statusText + '; ' + xhr.responseText);
    72.         }
    73.     });
    74. });
    75. <!-- с этой функцией я чет запутался если честно я не понял иногда доходит туго-->
    76. function initCalendar (data) {
    77.       $('#eventCalendar').eventCalendar({
    78.         jsonData: data,
    79.      
    80.     });
    81. }
    82. </script>
    83.  
    84. </body>
    85. </html>
    Вот и весь код этой страницы.
    Может из-за того что я передаю ранее эту переменную в функцию?
    PHP:
    1. $predmet = get_predmet();       # Выводим список предметов и передаем выбранный предмет в функцию которая ниже
    2. $events = get_events($predmet); # Вывод календаря
     
  20. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Во-первых:
    HTML:
    1. <?php
    2. session_start();
    3. require_once 'functions.php'; # подключаем функции для календаря
    4. $predmet = get_predmet();       # Выводим список предметов
    5. $events = get_events($predmet); # Вывод календаря
    6. // exit(json_encode($events));
    7. ?>
    8. <!DOCTYPE html>
    9. <html lang="en">
    10.   <meta charset="UTF-8">
    11.   <title>
    12.     Календарь событий
    13.   </title>
    14.   <link rel="stylesheet" href="css/eventCalendar.css">
    15.   <link rel="stylesheet" href="css/eventCalendar_theme_responsive.css">
    16.   <script src="http://code.jquery.com/jquery.min.js"></script>
    17.   <script src="js/moment.js"></script>
    18.   <script src="js/jquery.eventCalendar.js"></script>
    19. </head>
    20. <div id="eventCalendar" style="width: 300px; margin: 100px auto;">
    21. </div>
    22.   $('.my_class').on('submit', function(e) {
    23.     e.preventDefault();
    24.     $.ajax({
    25.       url: 'function.php',
    26.       type: 'POST',
    27.       dataType: 'text',
    28.       data: $(this).serialize(),
    29.       success: initCalendar,
    30.       error: function(xhr, ajaxOptions, thrownError) {
    31.         console.log(thrownError + '; ' + xhr.statusText + '; ' + xhr.responseText);
    32.       }
    33.     });
    34.   });
    35.  
    36.   function initCalendar(data) {
    37.     $('#eventCalendar').eventCalendar({
    38.       jsonData: data,
    39.       startWeekOnMonday: true,
    40.       /*если труе будет правильно дни недели*/
    41.       openEventInNewWindow: true,
    42.       dateFormat: 'dddd DD-MM-YYYY',
    43.       showDescription: false,
    44.       locales: {
    45.         locale: "ru",
    46.         txt_noEvents: "Нет запланированных событий",
    47.         txt_SpecificEvents_prev: "",
    48.         txt_SpecificEvents_after: "события:",
    49.         txt_NextEvents: "Следующие события:",
    50.         txt_GoToEventUrl: "",
    51.         /*url адрес*/
    52.         moment: {
    53.           "months": ["Январь", "Февраль", "Март",
    54.             "Апрель", "Май", "Июнь",
    55.             "Июль", "Август", "Сентябрь",
    56.             "Октябрь", "Ноябрь", "Декабрь"
    57.           ],
    58.           "monthsShort": ["Янв", "Фев", "Мар",
    59.             "Апр", "Май", "Июн",
    60.             "Июл", "Авг", "Сен",
    61.             "Окт", "Ноя", "Дек"
    62.           ],
    63.           "weekdays": ["Воскресенье", "Понедельник", "Вторник",
    64.             "Среда", "Четверг", "Пятница", "Суббота"
    65.           ],
    66.           "weekdaysShort": ["Вс", "Пн", "Вт",
    67.             "Ср", "Чт", "Пт", "Сб"
    68.           ],
    69.           "weekdaysMin": ["Вс", "Пн", "Вт",
    70.             "Ср", "Чт", "Пт", "Сб"
    71.           ]
    72.         }
    73.       }
    74.     });
    75.   }
    76.   initCalendar(<?php echo $events; ?>);
    77. <?php //require_once 'add_events.php'; # Добавление записи ?>
    78. <?php //require_once 'delete_event.php'; # Удаление записи ?>
    79. <?php //require_once 'update_events.php'; # Обновление записи ?>
    80. </body>
    81. </html>
    Во-вторых, самой формы и даже где она выводиться должна - я тут не вижу
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Примерно сделал так:
    Код (Javascript):
    1. <script>
    2. $('.my_class').on('submit', function(e) {
    3.     e.preventDefault();
    4.     $.ajax({
    5.         url: 'function.php',
    6.         type: 'POST',
    7.         dataType: 'text',
    8.         data: $(this).serialize(),
    9.         success: initCalendar,
    10.         error: function(xhr, ajaxOptions, thrownError) {
    11.             console.log(thrownError + '; ' + xhr.statusText + '; ' + xhr.responseText);
    12.         }
    13.     });
    14. });
    15.  
    16. function initCalendar (data) {
    17.      var data = <?php echo $events; ?>;
    18.     // console.log(JSON.parse(data));
    19.     $('#eventCalendar').eventCalendar({
    20.         jsonData: data,
    21.         startWeekOnMonday: true, /*если труе будет правильно дни недели*/
    22.         openEventInNewWindow: true,
    23.         dateFormat: 'dddd DD-MM-YYYY',
    24.         showDescription: false,
    25.         locales: {
    26.             locale: "ru",
    27.             txt_noEvents: "Нет запланированных событий",
    28.             txt_SpecificEvents_prev: "",
    29.             txt_SpecificEvents_after: "события:",
    30.             txt_NextEvents: "Следующие события:",
    31.             txt_GoToEventUrl: "", /*url адрес*/
    32.             moment: {
    33.                       "months" : [ "Январь", "Февраль", "Март",
    34.                                        "Апрель", "Май", "Июнь",
    35.                                        "Июль", "Август", "Сентябрь",
    36.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    37.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    38.                                         "Апр", "Май", "Июн",
    39.                                          "Июл", "Авг", "Сен",
    40.                                          "Окт", "Ноя", "Дек" ],
    41.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    42.                                          "Среда","Четверг","Пятница","Суббота" ],
    43.              "weekdaysShort" : [ "Вс","Пн","Вт",
    44.                                          "Ср","Чт","Пт","Сб" ],
    45.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    46.                                        "Ср","Чт","Пт","Сб" ]
    47.             }
    48.         }
    49.     });
    50. }
    51.  
    52. // Вызываю функцию с параметром
    53. initCalendar(<?= $events; ?>);
    54. </script>
    Но если прерывать действие по умолчанию то форма не отправляется если закоментировать preventDefaul то форма отправляется но с перезагрузкой страницы.
     
  22. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Похоже на правду.
    Как это выяснили? В консоль смотрели?
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Упс не успел, ты быстрее меня это показал, считай я не подсмотрел) только увидел)
    Ах да заметил что у меня в примере не так, я 2 раза передаю значение в функцию при вызове ее и при инициализации)
    --- Добавлено ---
    Тыкал в кнопку отправить, не чего не происходило закоментил действие по умолчанию и сразу форма отправилась.
     
  24. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Когда идёт отладка JS, то консоль вообще не должна закрываться. Открываем её. Например, для Chrome - Ctrl+Shift+J и переходим на закладку Network. Для Firefox - Ctrl+Shift+K и закладка "Сеть". После того, как открыли, кликаем на форму и смотрим, что в консоли.
    --- Добавлено ---
    А также смотрим возможные ошибки на закладке Console (Chrome), Консоль (FF)
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Можно поправить вас? вы вызвали функцию раньше не много чем требуется.
    HTML:
    1.     });
    2.     initCalendar(<?php echo $events; ?>);
    3.   }
    или вы уже исправили?
    Просто у меня не выводился календарь, я за закрывающей вызвал и лишь тогда у меня календарь вывелся.
    --- Добавлено ---
    Ах нажатие срабатывает но выдает такое смотрим на скриншоте:
    --- Добавлено ---
    Не понял, что этим хотели сказать?
     

    Вложения:

    • sss.png
      sss.png
      Размер файла:
      5,9 КБ
      Просмотров:
      2