• Как доработать маленький код на JS?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    1. Ссылки не нужны, используйте спаны в пагинации
    <form method="get" id="testForm">
      <input type="text" name="name" class="page" />
      <input type="submit" name="search" id="search" value="Поиск"/>
      <input type="hidden" name="current_page" id="current_page" value="{current_page}">
    </form>
    
    <span id="pagination">
      <span class="toPage" data-num="1">1</span>
      <span class="toPage" data-num="2">2</span>
      <span class="toPage" data-num="3">3</span>
      <span class="toPage" data-num="4">4</span>
      <span class="toPage" data-num="5">5</span>
      <span class="toPage" data-num="6">6</span>
      <span class="toPage" data-num="7">7</span>
    </span>


    2. Такой JS:
    $(document).on("click", ".toPage", function () {
        var num = $(this).data("num");
        $(".page").prop("value", num);
        $("#testForm").trigger("submit");
    });
    Ответ написан
    6 комментариев
  • Как доработать маленький код на JS?

    Может как-то так? :)
    document.getElementById('current_page').value=elements[i].innerText;
    Ответ написан
    4 комментария
  • Как решить submit jquery?

    @Billy_Milligan
    добавьте id форме
    <form id="myForm" method="get">
      <input type="text" name="name" value="Ваше имя">
      <input id="send" type="submit" name="send" value="Отправить">
    </form>

    и можно отправить по клику на вашу кнопку
    $( "#btn-yes" ).click(function() {
      $( "#myForm" ).submit();
    });

    укажите атрибут action у form
    Ответ написан
    Комментировать
  • Как решить submit jquery?

    @kirill-93
    $('#btn-yes').on('click', function() {
        $('form').submit();
    });
    Ответ написан
    1 комментарий
  • Всплывающие окно предупреждения JS?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    <form method="get" id="delForm">
      <input id="dell" type="button" name="dell" value="Delete">
    </form>


    Создаем простую кнопку вместо Submit.

    function checkButton()
    {
      var hid = document.getElementById('hidden'); //Находим id всасывающегося окна
      var yes = document.getElementById('yes'); // id кнопки ДА
      var no = document.getElementById('no'); // id кнопки НЕТ
      
      yes.onclick  = function(e) //если будет нажата кнопка ДА
      {
        var frm = document.getElementById('delForm'); //Находим id формы
        this.onclick = null;
        hid.className = ''; // скрывается окно подтверждения
        frm.submit();  //// отправка на сервер происходит
        e.stopPropagation();
        e.preventDefault();
      };
      no.onclick = function(e) // Если будет нажата кнопка НЕТ
      {
        var hid = document.getElementById('hidden'); //Находим id всасывающегося окна
        this.onclick = null;
        hid.className = ''; //скрывается окно подтверждения
        // отправка на сервер не происходит
        e.stopPropagation();
        e.preventDefault();
      }
    
       // Oтображается окно подтверждения.
       hid.className = 'substrate';
    }
    
    window.onload = function(e)
    {
      var myf = document.getElementById('dell');
      myf.onclick = checkButton; //Подписка на событие клика по кнопке УДАЛИТЬ
      e.stopPropagation();
      e.preventDefault();
    }

    И привязываем события, а не проверяем наличие привязаного события на кнопках yes и no

    И еще поправим CSS:
    .show-none{
      display:none;       /* просто прячем окно, а не задвигаем его в минуса */
    }
    .substrate{
    ...
    Ответ написан
  • Как составить регулярку php поиска по 2 вариантам?

    @Billy_Milligan
    /{[ \t]*foreach[ \t]*\$_*[A-Za-z]+[A-Za-z0-9_]*[ \t]*as[ \t]*\$_*[A-Za-z]+[A-Za-z0-9_]*(?:[ \t]=>[ \t]*\$_*[A-Za-z]+[A-Za-z0-9_]*)?[ \t]*}.*{[ \t]*\/foreach[ \t]*}/gi


    можете поубирать [ \t]*, если уверены что там точно один пробел и не может быть таба.
    _*[A-Za-z]+[A-Za-z0-9_]* - это думаю понятно почему
    Ответ написан
    5 комментариев
  • Конфликт 2 скриптов JS?

    @gracer
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
    $j('ul.tabs1 li').css('cursor', 'pointer');
    $j('ul.tabs1 li').click(function(){
      var thisClass = this.className.slice(0,2);
      $j('div.t1').hide();
      $j('div.t2').hide();
      $j('div.t3').hide();
      $j('div.t4').hide();
      $j('div.' + thisClass).show();
      $j('ul.tabs1 li').removeClass('tab-current');
      $j(this).addClass('tab-current');
      });
    });
    
    $j( document ).ready(function() {
      $j(":input[type=button]","#searchform").click(function() {
        $j(this).closest('form').find(':input','option:selected')
         .not(':button, :submit, :reset, :hidden')
         .val('')
         .removeAttr('checked')
         .removeAttr('selected');    
      });
    });
    Ответ написан
    Комментировать
  • Как сделать запрос mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT `u`.`user_group`, `g`,`name`, COUNT(`u`.`user_group`)
        FROM `users` AS `u`
        JOIN `groups` AS `g` ON `g`.`id` = `u`.`user_group`
        GROUP BY `u`.`user_group`
    Ответ написан
    2 комментария
  • Как сделать запрос mysql?

    Defman21
    @Defman21
    SELECT `g`.`id` g_id, `g`.`name` g_name, COUNT(`u`.`id`) g_count FROM `groups` g LEFT JOIN `users` u ON `g`.`id` = `u`.`user_group`
    Ответ написан
    3 комментария
  • Как сделать запрос mysql?

    rich
    @rich
    SELECT `id` AS g_id, 
    `name` , 
    (
    SELECT count( * )
    FROM `users`
    WHERE `users`.user_group = g_id
    ) AS user_in_group
    FROM `groups`
    Ответ написан
    3 комментария
  • Как задать правила на регулярном выражении php?

    @jennik
    Что-то типа такого приходит на ум...
    $res = preg_match('/[^a-zA-Z0-9\/\-\?\=]|(\?{2,}|\-{2,}|\/{2,})/' , $url);
    Ответ написан
    Комментировать
  • Как сделать простой php маршрутизатор (роутер)?

    devg
    @devg
    I am Yenior software developer
    Очень простой роутер, не без недостатков, но довольно быстрый и легко использовать, дописывать под себя.

    <?php
    /**
     * Простой роутер
     * @devg
     */
    final class RouterLite {
    
      public static $routes = array();
      private static $params = array();
      public static $requestedUrl = '';
    
      /**
       * Добавить маршрут
       */
      public static function addRoute($route, $destination=null) {
        if ($destination != null && !is_array($route)) {
          $route = array($route => $destination);
        }
        self::$routes = array_merge(self::$routes, $route);
      }
    
      /**
       * Разделить переданный URL на компоненты
       */
      public static function splitUrl($url) {
        return preg_split('/\//', $url, -1, PREG_SPLIT_NO_EMPTY);
      }
      
      /**
       * Текущий обработанный URL
       */    
      public static function getCurrentUrl() {
        return (self::$requestedUrl?:'/');
      }
    
      /**
       * Обработка переданного URL
       */
      public static function dispatch($requestedUrl = null) {
    
          // Если URL не передан, берем его из REQUEST_URI
          if ($requestedUrl === null) {
            $uri = reset(explode('?', $_SERVER["REQUEST_URI"]));
            $requestedUrl = urldecode(rtrim($uri, '/'));
          }
    
          self::$requestedUrl = $requestedUrl;
    
          // если URL и маршрут полностью совпадают
          if (isset(self::$routes[$requestedUrl])) {
            self::$params = self::splitUrl(self::$routes[$requestedUrl]);
            return self::executeAction();
          }
    
          foreach (self::$routes as $route => $uri) {
            // Заменяем wildcards на рег. выражения
            if (strpos($route, ':') !== false) {
              $route = str_replace(':any', '(.+)', str_replace(':num', '([0-9]+)', $route));
            }
    
            if (preg_match('#^'.$route.'$#', $requestedUrl)) {
              if (strpos($uri, '$') !== false && strpos($route, '(') !== false) {
                $uri = preg_replace('#^'.$route.'$#', $uri, $requestedUrl);
              }
              self::$params = self::splitUrl($uri);
                
              break; // URL обработан!
            }
          } 
          return self::executeAction();
      } 
    
     /**
       * Запуск соответствующего действия/экшена/метода контроллера
       */
      public static function executeAction() {
        $controller = isset(self::$params[0]) ? self::$params[0]: 'DefaultController';
        $action = isset(self::$params[1]) ? self::$params[1]: 'default_method';
        $params = array_slice(self::$params, 2);
    
        return call_user_func_array(array($controller, $action), $params);
      }
    
    }
    ?>


    Пример использования:
    <?php
    // маршруты (можно хранить в конфиге приложения)
    // можно использовать wildcards (подстановки):
    // :any - любое цифробуквенное сочетание
    // :num - только цифры
    // в результирующее выражение записываются как $1, $2 и т.д. по порядку
    
    $routes = array(
      // 'url' => 'контроллер/действие/параметр1/параметр2/параметр3'
      '/' => 'MainController/index', // главная страница
      '/contacts' => 'MainController/contacts', // страница контактов
      '/blog' => 'BlogController/index', // список постов блога
      '/blog/:num' => 'BlogController/viewPost/$1' // просмотр отдельного поста, например, /blog/123
      '/blog/:any/:num' => 'BlogController/$1/$2' // действия над постом, например, /blog/edit/123 или /blog/dеlete/123
      '/:any' => 'MainController/anyAction' // все остальные запросы обрабатываются здесь
    ));
    
    // добавляем все маршруты за раз
    RouterLite::addRoute($routes);
    
    // а можно добавлять по одному
    RouterLite::addRoute('/about', 'MainController/about');
    
    // непосредственно запуск обработки
    RouterLite::dispatch();
    ?>


    UPDATE (07.08.2017):
    Дальнейшее развитие данного роутера см. в проекте Litero (https://github.com/bit55/litero)
    Ответ написан
    1 комментарий
  • Дайте совет по написанию своей cms на ооп php

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с перспективой дальнейшего развития

    Сразу рекомендую отбросить эти наивные мечты. Вам придется пяток раз переписать это дело, если вы действительно только начинаете.

    "Правильной" CMS пожалуй и нету. Да и понятие "правильная" довольно абстрактно.

    Рекомендую написать свой фреймворк для начала. Тут больше простора для фантазии, и затем можно на базе оного уже делать CMS.
    Ответ написан
    2 комментария