За последние 24 часа нас посетили 19226 программистов и 994 робота. Сейчас ищут 692 программиста ...

Как добавить в календарь на datepicker ссылки на страницы?

Тема в разделе "PHP для новичков", создана пользователем JohnWarner, 26 апр 2024.

Метки:
  1. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Приветствую всех.
    Пытаюсь переделать (точнее, выкинул) календарь на новостном небольшом сайте, ибо дюже грузит сервер; на локальном сервере даже иногда загрузка прекращается за истечением времени.
    Календарь используется глав. редактором для выбора дней, когда на сайте постилась новость на передовице.
    Решил взять простой (как мне показалось) календарь на jquery-ui datepicker, но я с жабоскриптом не дружу, и вообще занимаюсь описанным выше вынужденно, и не по профессии, так уж вышло.
    Собственно, задача стоит именно как-то добавить в дейтпикер обращение к БД и "вкукоживание" ссылки.

    Помогите разобраться.

    datepicker-ru.js:
    Код (Javascript):
    1. /* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
    2. /* Written by Andrew Stromnov (stromnov@gmail.com). */
    3. ( function( factory ) {
    4.     if ( typeof define === "function" && define.amd ) {
    5.  
    6.         // AMD. Register as an anonymous module.
    7.         define( [ "../scripts/datepicker" ], factory );
    8.     } else {
    9.  
    10.         // Browser globals
    11.         factory( jQuery.datepicker );
    12.     }
    13. }( function( datepicker ) {
    14.  
    15. datepicker.regional.ru = {
    16.     closeText: "Закрыть",
    17.     prevText: "<Пред",
    18.     nextText: "След>",
    19.     currentText: "Сегодня",
    20.     monthNames: [ "Январь","Февраль","Март","Апрель","Май","Июнь",
    21.     "Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ],
    22.     monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн",
    23.     "Июл","Авг","Сен","Окт","Ноя","Дек" ],
    24.     dayNames: [ "воскресенье","понедельник","вторник","среда","четверг","пятница","суббота" ],
    25.     dayNamesShort: [ "вск","пнд","втр","срд","чтв","птн","сбт" ],
    26.     dayNamesMin: [ "Вс","Пн","Вт","Ср","Чт","Пт","Сб" ],
    27.     weekHeader: "Нед",
    28.     dateFormat: "dd.mm.yy",
    29.     firstDay: 1,
    30.     isRTL: false,
    31.     showMonthAfterYear: false,
    32.     yearSuffix: "" };
    33. datepicker.setDefaults( datepicker.regional.ru );
    34.  
    35. return datepicker.regional.ru;
    36.  
    37. } ) );
    Старый тормозной календарь calendar.php:
    PHP:
    1. <?php
    2. function main_calendar($fill='') {
    3.     global $rubric;
    4.     global $tplEx, $phpEx, $template, $siteurl, $site_root, $now;
    5.     global $db, $connection;
    6.  
    7.     $month_names=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
    8.     if (isset($_GET['y'])) $y=$_GET['y'];
    9.     if (isset($_GET['m'])) $m=$_GET['m'];
    10.     if (isset($_GET['date']) AND strstr($_GET['date'],"-")) list($y,$m,$d)=explode("-",$_GET['date']);
    11.     if (!isset($y) OR $y < 1970 OR $y > 2037) $y=date("Y");
    12.     if (!isset($m) OR $m < 1 OR $m > 12) $m=date("m");
    13.     if (!isset($d) OR $d < 1 OR $d > 30) $d=date("d");
    14.  
    15.     $month_stamp=mktime(0,0,0,$m,1,$y);
    16.     $day_count=date("t",$month_stamp);
    17.     $weekday=date("w",$month_stamp);
    18.     if ($weekday==0) $weekday=7;
    19.     $start=-($weekday-2);
    20.     $last=($day_count+$weekday-1) % 7;
    21.     if ($last==0) $end=$day_count; else $end=$day_count+7-$last;
    22.  
    23.     $prev=date('Y-m',mktime (0,0,0,$m-1,$d,$y));
    24.     $next=date('Y-m',mktime (0,0,0,$m+1,$d,$y));
    25.     $i=0;
    26.     echo "<table class=\"calendar\">";
    27.     echo "<tr>";
    28.     echo "<td colspan=\"7\">";
    29.     echo "<table id=\"month-selector\">";
    30.     echo "<tr>";
    31.     echo "<td align=\"left\"><a href=\"/news/?date=",$prev,"\"><img src=\"/images/arrow-left.png\" alt=\"\"></a></td>";
    32.     echo "<td align=\"center\"><strong>",$month_names[$m-1]," ",$y,"</strong>","</td>";
    33.     echo "<td align=\"right\"><a href=\"/news/?date=",$next,"\"><img src=\"/images/arrow-right.png\" alt=\"\"></a></td>";
    34.     echo "</tr>";
    35.     echo "</table>";
    36.     echo "</td>";
    37.     echo "</tr>";
    38.     echo "<tr><td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td><span class=\"red\">Сб</span></td><td><span class=\"red\">Вс</span></td><tr>";
    39.     for($d=$start;$d<=$end;$d++) {
    40.         if(!($i++%7)) echo "<tr>";
    41.         if ($d < 1 OR $d > $day_count)
    42.             echo "<td class=\"day\">","&nbsp";
    43.         else{
    44.             $pubtime1=mktime(0,0,0,$m,$d,$y);
    45.             $pubtime2=mktime(0,0,0,$m,$d+1,$y)-1;
    46. //            $q_news = "SELECT * FROM news WHERE news.pubdate>='$pubtime1' AND news.pubdate<='$pubtime2'";
    47.             $q_news = "SELECT * FROM `" . ARTICLES_TABLE . "` WHERE date >= '" . $pubtime2 . "' AND date <= '" . $pubtime1 . "'";
    48.             if (!empty($rubric)) {
    49.                 $rubric = (int)$rubric;
    50.                 $q_news .= " AND FIND_IN_SET($rubric, rubrics) > 0";
    51.             }
    52.             $r_news=$mysqli->query($q_news) or die("can't execute query news");
    53.            $n_news=$r_news->num_rows;
    54.  
    55.             $now="$y-$m-".sprintf("%02d",$d);
    56.             $currentDay = date("d");
    57.             if(is_array($fill) AND in_array($now,$fill)) {
    58.                 echo "<td class=\"day-active\">";
    59.             } else if ($currentDay == $d) {
    60.                 echo "<td class=\"day\" style=\"background-color: #D8E9F7\">";
    61.             } else {
    62.                 echo "<td class=\"day\">";
    63.             }
    64.             if($n_news>0)    echo "<a href=\"/news/?date=",$now,"\" class=\"noline\">","<div style=\"padding:2pt 3pt;\">",$d,"</div>","</a>";
    65.             else            echo "<div style=\"padding:2pt 3pt;\">",$d,"</div>";
    66.         }
    67.         echo "</td>";
    68.         if(!($i%7)) echo "</tr>";
    69.     }
    70.     echo "</table>";
    71. }
    72. ?>
    73. <div style="width: 240px; margin: 0 auto 20px">
    74.     <h6 style="text-align: center">Архив</h6>
    75.  
    76.     <div>
    77.         <?php
    78.         main_calendar(array($_GET['date']));
    79.         ?>
    80.     </div>
    81. </div>
    Собственно, из оригинального тормозного календаря, я хочу взять обращения к БД, но как их вкукожить в Javascript, не знаю.
    С уважением.
    ЗЫ Совсем забыл.
    Сейчас у меня календарь подключен так:
    HTML:
    1.     <div style="width: 240px; margin: 0 auto 20px">
    2.         <h6 style="text-align: center">Архив</h6>
    3.         <div>
    4.             <label>Дата:</label><input type="text" id="datepicker" size="10" value="{NOW}">
    5.         </div>
    6.     </div>
    7.  
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    287
    Симпатии:
    56
    Адрес:
    Бавария, Германия
    Добрый день!

    Календарь грузит сервер из-за того, что после каждого клика по ссылке страница полность перезагружается
    PHP:
    1. if($n_news>0)  echo "<a href=\"/news/?date=",$now,"\" class=\"noline\">","<div style=\"padding:2pt 3pt;\">",$d,"</div>","</a>";
    1.Сама функция main_calendar судя по mktime немолодая.
    Её можно улучшить, но если она работает как надо, то можно переделать только ссылку
    PHP:
    1. if($n_news>0) echo "<div class=\"noline\" role=\"link\" onClick=\"reloadCalender('$now')\" style=\"padding:2pt 3pt;\">",$d,"</div>";
    2. Hеобходимо добавить id в div
    PHP:
    1. <div id="calender-container">
    2.   <?php
    3.   main_calendar(array($_GET['date']));
    4.   ?>
    5. </div>
    3. Нужно добавить JS функцию reloadCalender, которая должна отправлять AJAX Get-Request
    и получив HTML Response актуализировать контен в div id="calender-container" без перезагрузки страницы
    Если интересует, могу показать как это сделать.
    Удачи!

    P.S. Не понято откуда берутся $_GET['y'] и $_GET['m'] в функции main_calendar
     
    JohnWarner нравится это.
  3. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Видимо, сам календарь спрашивает, когда жмёшь стрелку.
    Спасибо, испытал, работает лучше.
    Да, интересует.
     
  4. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Ну, и чтоб два раза не вставать, как говорится.
    Вопрос есть - ни у кого случайно нету файла поддержки mysqli для phpBB2?
    Очень надо.
    Это должно быть что-то типа mysqli.php
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.833
    Симпатии:
    739
    Адрес:
    Татарстан
    а что интернет заблокировали и оставили только этот форум?
     
  6. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    287
    Симпатии:
    56
    Адрес:
    Бавария, Германия
    За один заход не получится т.к. не могу протестироать код.
    Предлагаю сделать следущее:
    1. Добавить несколько CSS директив
    Код (CSS):
    1. .calendar img{cursor:pointer}
    2. .bg{background-color: #D8E9F7}
    3. .day div{padding:2pt 3pt}
    2. Изменить функцию main_calendar, убрав из неё echo и вернув HTML string
    PHP:
    1. function main_calendar($fill='') {
    2.     global $rubric;
    3.     global $tplEx, $phpEx, $template, $siteurl, $site_root, $now;
    4.     global $db, $connection;
    5.     $month_names=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
    6.     if (isset($_GET['y'])) $y=$_GET['y'];
    7.     if (isset($_GET['m'])) $m=$_GET['m'];
    8.     if (isset($_GET['date']) AND strstr($_GET['date'],"-")) list($y,$m,$d)=explode("-",$_GET['date']);
    9.     if (!isset($y) OR $y < 1970 OR $y > 2037) $y=date("Y");
    10.     if (!isset($m) OR $m < 1 OR $m > 12) $m=date("m");
    11.     if (!isset($d) OR $d < 1 OR $d > 30) $d=date("d");
    12.     $month_stamp=mktime(0,0,0,$m,1,$y);
    13.     $day_count=date("t",$month_stamp);
    14.     $weekday=date("w",$month_stamp);
    15.     if ($weekday==0) $weekday=7;
    16.     $start=-($weekday-2);
    17.     $last=($day_count+$weekday-1) % 7;
    18.     if ($last==0) $end=$day_count; else $end=$day_count+7-$last;
    19.     $prev=date('Y-m',mktime (0,0,0,$m-1,$d,$y));
    20.     $next=date('Y-m',mktime (0,0,0,$m+1,$d,$y));
    21.     $i=0;
    22.     $calenderHTML = <<<HTML
    23.     <table class="calendar">
    24.     <tr>
    25.     <td colspan="7">
    26.     <table id="month-selector">
    27.     <tr>
    28.     <td align="left">
    29.         <img src="/images/arrow-left.png" onClick="reloadCalender('$prev')">  
    30.     </td>
    31.     <td align="center">
    32.         <strong>{$month_names[$m-1]} $y</strong>,
    33.     </td>
    34.     <td align="right">
    35.         <img src="/images/arrow-right.png" onClick="reloadCalender('$next')" >
    36.     </td>
    37.     </tr>
    38.     </table>
    39.     </td>
    40.     </tr>
    41.     <tr>
    42.         <td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td>
    43.         <td><span class="red">Сб</span></td>
    44.         <td><span class="red">Вс</span></td>
    45.     <tr>
    46.     HTML;
    47.  
    48.     for($d=$start;$d<=$end;$d++) {
    49.         if(!($i++%7)) echo "<tr>";
    50.         if ($d < 1 OR $d > $day_count)
    51.             echo "<td class=\"day\">","&nbsp";
    52.         else{
    53.             $pubtime1=mktime(0,0,0,$m,$d,$y);
    54.             $pubtime2=mktime(0,0,0,$m,$d+1,$y)-1;
    55. //           $q_news = "SELECT * FROM news WHERE news.pubdate>='$pubtime1' AND news.pubdate<='$pubtime2'";
    56.             $q_news = "SELECT * FROM `" . ARTICLES_TABLE . "` WHERE date >= '" . $pubtime2 . "' AND date <= '" . $pubtime1 . "'";
    57.             if (!empty($rubric)) {
    58.                 $rubric = (int)$rubric;
    59.                 $q_news .= " AND FIND_IN_SET($rubric, rubrics) > 0";
    60.             }
    61.             $r_news=$mysqli->query($q_news) or die("can't execute query news");
    62.             $n_news=$r_news->num_rows;
    63.             $now="$y-$m-".sprintf("%02d",$d);
    64.             $currentDay = date("d");
    65.             if(is_array($fill) AND in_array($now,$fill))
    66.             {
    67.                 $calenderHTML .= "<td class=\"day-active\">";
    68.             }
    69.             else if ($currentDay == $d)
    70.             {
    71.                 $calenderHTML .= "<td class=\"day bg\" >";
    72.             }
    73.             else
    74.             {
    75.                 $calenderHTML .= "<td class=\"day\">";
    76.             }
    77.             if($n_news>0)
    78.                 $calenderHTML .= "<div class=\"noline\" role=\"link\" onClick=\"reloadCalender('$now')\" >$d</div>";
    79.             else
    80.                 $calenderHTML .= "<div>$d</div>";
    81.         }
    82.          $calenderHTML .= "</td>";
    83.         if(!($i%7))
    84.             $calenderHTML .= "</tr>";
    85.     }
    86.     $calenderHTML .= "</table>";
    87.     return $calenderHTML;
    88. }
    3.Изменить вызов функции
    PHP:
    1. <div id="calender-container">
    2.   <?php
    3.   echo main_calendar(array($_GET['date']));
    4.   ?>
    5. </div>
    Необходимо это отладить и переходить к JS.
    Удачи!
     
    JohnWarner нравится это.
  7. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Такой файл есть на "phpbb2 refugees", но они закрыли доступ из России.
    Если б я мог взять файл, я б по пустому не спрашивал.
    --- Добавлено ---
    Спасибо, буду дома, проверю и отпишусь.
     
  8. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    287
    Симпатии:
    56
    Адрес:
    Бавария, Германия
    https://github.com/phpbb/phpbb/blob/master/phpBB/phpbb/db/driver/mysqli.php
     
    JohnWarner нравится это.
  9. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    борода.jpg
    Забейте. Также долго, также вымирает.
    Есть мнение, всё-таки, как-то в datepicker вкукожить ссылки, но только как.
    --- Добавлено ---
    Нифига себе!
    Спасибо, испытаю.
     
  10. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    287
    Симпатии:
    56
    Адрес:
    Бавария, Германия
    Добрый день!
    Какая версия PHP?
    Код (Text):
    1. function main_calendar($fill='') {
    2.     global $rubric;
    3.     global $tplEx, $phpEx, $template, $siteurl, $site_root, $now;
    4.     global $db, $connection;
    5.     $month_names=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
    6.     if (isset($_GET['y'])) $y=$_GET['y'];
    7.     if (isset($_GET['m'])) $m=$_GET['m'];
    8.     if (isset($_GET['date']) AND strstr($_GET['date'],"-")) list($y,$m,$d)=explode("-",$_GET['date']);
    9.     if (!isset($y) OR $y < 1970 OR $y > 2037) $y=date("Y");
    10.     if (!isset($m) OR $m < 1 OR $m > 12) $m=date("m");
    11.     if (!isset($d) OR $d < 1 OR $d > 30) $d=date("d");
    12.  
    13.     $month_stamp=mktime(0,0,0,$m,1,$y);
    14.     $day_count=date("t",$month_stamp);
    15.     $weekday=date("w",$month_stamp);
    16.     if ($weekday==0) $weekday=7;
    17.     $start=-($weekday-2);
    18.     $last=($day_count+$weekday-1) % 7;
    19.     if ($last==0) $end=$day_count; else $end=$day_count+7-$last;
    20.  
    21.     $prev=date('Y-m',mktime (0,0,0,$m-1,$d,$y));
    22.     $next=date('Y-m',mktime (0,0,0,$m+1,$d,$y));
    23.     $i=0;
    24.     $month_name = $month_names[$m-1];
    25.     $calenderHTML = <<<HTML
    26.     <table class="calendar">
    27.     <tr>
    28.     <td colspan="7">
    29.     <table id="month-selector">
    30.     <tr>
    31.     <td align="left">
    32.         <img src="/images/arrow-left.png" onClick="reloadCalender('$prev')">
    33.     </td>
    34.     <td align="center">
    35.         <strong>$month_name $y</strong>
    36.     </td>
    37.     <td align="right">
    38.         <img src="/images/arrow-right.png" onClick="reloadCalender('$next')" >
    39.     </td>
    40.     </tr>
    41.     </table>
    42.     </td>
    43.     </tr>
    44.     <tr>
    45.         <td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td>
    46.         <td><span class="red">Сб</span></td>
    47.         <td><span class="red">Вс</span></td>
    48.     <tr>
    49.     HTML;
    50.  
    51.     for($d=$start;$d<=$end;$d++) {
    52.         if(!($i++%7)) echo "<tr>";
    53.         if ($d < 1 OR $d > $day_count)
    54.             echo "<td class=\"day\">","&nbsp";
    55.         else{
    56.             $pubtime1=mktime(0,0,0,$m,$d,$y);
    57.             $pubtime2=mktime(0,0,0,$m,$d+1,$y)-1;
    58. //           $q_news = "SELECT * FROM news WHERE news.pubdate>='$pubtime1' AND news.pubdate<='$pubtime2'";
    59.             $q_news = "SELECT * FROM `" . ARTICLES_TABLE . "` WHERE date >= '" . $pubtime2 . "' AND date <= '" . $pubtime1 . "'";
    60.             if (!empty($rubric)) {
    61.                 $rubric = (int)$rubric;
    62.                 $q_news .= " AND FIND_IN_SET($rubric, rubrics) > 0";
    63.             }
    64.             $r_news=$mysqli->query($q_news) or die("can't execute query news");
    65.             $n_news=$r_news->num_rows;
    66.  
    67.             $now="$y-$m-".sprintf("%02d",$d);
    68.             $currentDay = date("d");
    69.             if(is_array($fill) AND in_array($now,$fill))
    70.             {
    71.                 $calenderHTML .= "<td class=\"day-active\">";
    72.             }
    73.             else if ($currentDay == $d)
    74.             {
    75.                 $calenderHTML .= "<td class=\"day bg\" >";
    76.             }
    77.             else
    78.             {
    79.                 $calenderHTML .= "<td class=\"day\">";
    80.             }
    81.             if($n_news>0)
    82.                 $calenderHTML .= "<div class=\"noline\" role=\"link\" onClick=\"reloadCalender('$now')\" >$d</div>";
    83.             else
    84.                 $calenderHTML .= "<div>$d</div>";
    85.         }
    86.          $calenderHTML .= "</td>";
    87.         if(!($i%7))
    88.             $calenderHTML .= "</tr>";
    89.     }
    90.     $calenderHTML .= "</table>";
    91.     return $calenderHTML;
    92. }
    Вы не поняли, для ускорения д.б.изменён PHP код,
    в который встроен календарь и подключена JS reloadCalender.
    PHP:
    1. <?
    2. /*
    3. здесь должно быть обязательно подключение к БД
    4. м.б любой PHP код, но не должно быть echo и HTML
    5. */
    6. // здесь  д.б. Подключена функция main_calendar
    7. if(filter_input(INPUT_GET, 'date')){
    8.     echo main_calendar(); // не надо указывать $_GET как параметр - superglobal variables
    9.     exit;
    10. }
    11. ?>
    12. ...
    13. ...
    14. <div id="calender-container">
    15.   <?php
    16.   echo main_calendar();
    17.   ?>
    18. </div>
    19. ...
    20. </body>
    21.  
    22. <script>
    23. calenderContainer = document.getElementById("calender-container");
    24. function reloadCalender(date){
    25.     const req = new XMLHttpRequest();
    26.     req.addEventListener("load", function(){
    27.     calenderContainer.innerHTML = this.responseText;
    28.     });
    29.     req.open("GET", "/news/?date=" + date);
    30.     req.send();
    31. }
    32. </script>
    Если нужно ещё в datepicker вкукожить ссылки, то их нужно обрабатывать аналогично.
    Удачи!
     
    #10 Vladimir Kheifets, 28 апр 2024
    Последнее редактирование: 28 апр 2024
  11. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Добрый вечер!
    PHP Version 7.2.34
     
  12. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    287
    Симпатии:
    56
    Адрес:
    Бавария, Германия
    Это версия выдала ошибку на {$month_names[$m-1]} в строке.
    Я исправил функцию main_calendar и убрал это, но рекомендую Вам перейти на актуальную версию PHP
     
    JohnWarner нравится это.
  13. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Добрый вечер!
    В общем, так...
    От календаря я отказался совсем. Он нужен был редакторам, чтобы статьи отслеживать.
    Вместо него я написал другой функционал, но уже в админку, а не на главную страницу: теперь там файлик articles.php, позволяющий управлять статьями новостей полностью - находить, править, также добавил функционала, который просили давно - а именно, добавил систему премодерации и блокировки.
    Вроде все довольны.
    Без календаря, главная страница летает, но пока на тестовом сервере. Допилю шаблоны, и закину на основной сервер.
    По версии.
    Как оказалось, на сервере версия актуальная, но код сайта в целом отсталый, да (например, найдены куски уворованного автором кода, со ссылкой на сайт, отключённый ещё в 2011-м, это уже мною исправлено). Поэтому стоит костыль через композер, понижающий требования к версии. Через него тоже тормоза, не без этого.
    Отключать тот костыль и переходить на акутальную версию я пока не могу ввиду того, что я и сам малость отстаю в уровне, увы :)
    ПХП это не моё основное занятие, я автоэлектрик, и кодю вынужденно.
    Также, переписал полностью немного разного - например, исправил некоторые обращения к БД, так как криво и косо было, и тоже глючно.
    Например, новости на одни только передовицу и слайдер грузились через восемь зацикленных обращений к БД - каждый раз за одной мелочью, но с загрузкой целой строки таблицы, и не одной местами. Исправил на адресные конкретные запросы, один запрос вне цикла и по одному в цикле - итого, три. Стало быстрее.
    Посему, тему с календарём можно считать исчерпанной.
    Но вам спасибо большое - я не мог решиться, но решился и переписал кучу всего сам :)
     
  14. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Возвращаясь к теме.
    Я сумел-таки влезть на phpBB3refugees, и слил mysqli.php для phpBB2 - если кому надо, могу сюда закинуть.
     
  15. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.833
    Симпатии:
    739
    Адрес:
    Татарстан
    в цикле запросов не должны быть .. хоть одного, хоть 8
     
    JohnWarner нравится это.
  16. JohnWarner

    JohnWarner Новичок

    С нами с:
    16 ноя 2022
    Сообщения:
    16
    Симпатии:
    0
    Я и это исправил. Надо было лишь немного осознать, что именно мне надо.
    У меня на Главную вызываются:
    1) 6 новостей на слайдер
    2) 10 новостей на передовицу
    3) 10 прочих новостей
    4) 4 рекл. блока.
    Теперь это всё вне циклов и двумя запросами - первый на новости, второй на рекл. блоки.