• Как обработать ссылки в htaccess если есть 2 гета?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9]+)$ ?page=$1
    RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ ?page=$1&referal=$2
    Ответ написан
  • Как решить задачу без применения if switch?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    var lang_array = [];
    lang_array['ru'] = ['Пн','Вт','СР','Чт','Пт','Сб','Вс'];
    lang_array['en'] = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
    var lang = 'ru';
    console.log(lang_array[lang]);
    Ответ написан
    Комментировать
  • Как текст пропадет при наведении курсора?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    .img_black:hover .vis
    {
        display:none;
    }

    Ответ написан
    Комментировать
  • Можно ли стилизовать checkbox и radio через -webkit-appearance: none и псевдоэлементы?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Я использую псевдоэлементы :before и :after у обертки label а сами checkbox и radio скрываю (активируя через for)
    Ответ написан
  • Форма авторизации PHP как исправить ошибку?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Научитесь писать читаемый код (отступы) и проверять открытие и закрытие скобок таких { и таких (

    Пробуйте должно работать:
    <?php
    require "db.php";
    $data = $_POST;
    if( isset($data['do_login']) )
        {
            $errors = array();
            $user = R::find('user', 'login = ?', array($data['login']));
            if($user)
            {  
                if( password_verify($data['password'], $user->password ) ) /* $user->password в скобки заключать бессмысленно */
                {
                    /* ТУТ Видимо авторизация */
                }else{ 
                    $errors[] = 'Неверное введён пароль!;';}
                }
            }else{
                $errors[] = 'Пользователь с таким логином не найден!;';}
            }
        }
    ?>
    Ответ написан
    Комментировать
  • Как вывести определенное значение массива первым?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Если знаешь позицию необходимого значение то выводишь его а потом всё остальное кроме него
    $a = array(1, 2, 3, 4);
    echo  $a[1].'</br>';
    foreach ($a as $b) {
    if($a[1] !== $b){ echo  $b.'</br>'; }
    }

    Если не знаешь то
    $a = array(1, 3, 2, 4);
    $key = array_search(2, $array);
    echo  $a[$key].'</br>';
    foreach ($a as $b) {
    if($a[$key] !== $b){ echo  $b.'</br>'; }
    }
    Ответ написан
    Комментировать
  • Как в списке по клику на элемент, добавить класс только ему, а у остальных убрать?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Моё решение было бы таковым:


    $(".dropdown > a").on("touchstart click", function (e) {
            e.preventDefault();
            if($(this).hasClass('mobile-submenu-active')){
                $(this).removeClass("mobile-submenu-active"); 
                $(this).next('.dropdown-menu').slideToggle(300);       
            }else{
                $(this).closest('.menu').find(".dropdown-menu").slideUp(300);  
                $(this).closest('.menu').find(".dropdown a").removeClass("mobile-submenu-active");
                $(this).addClass("mobile-submenu-active");  
                $(this).closest('.dropdown').find(".dropdown-menu").slideDown(300);   
            }
    Ответ написан
    1 комментарий
  • Проблема со slick slider, как переставить кнопки prev и next в другой контейнер?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    $('.slick-slider .slider-items').slick({
            infinite: true,
            slidesToShow: 1,
            slidesToScroll: 1,
            dots: true,
            arrows: true,
            dotsClass: 'nav slide-dots',
            prevArrow: '<div class="prev"></div>',
            nextArrow: '<div class="next"></div>',	
            appendArrows: '.slider-navigation',		
            appendDots: '.slider-dots',
        });

    appendArrows - Куда вставить кнопки
    appendDots - Куда вставить точки

    А в твоём случае это можно решить CSS - т.е контейнер с кнопками должен быть в длину фото
    .slider2-image-wrapper{
    width: (Тут длина фото)px;
    position: absolute;
    bottom: 0;
    z-index: 2;
    }
    Ответ написан
    2 комментария
  • Собираюсь убегать от 1С-Битрикс. А на что убегать-то?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Laravel - это PHP vs Node.js - это JavaScript = тут всё зависит от того что ВЫ знаете?
    PHP - более популярен среди разработчиков под Web (Laravel, Yii, Zend, CodeIgniter) и серверов настроенных под работу PHP много больше.
    Node.js - удобен при разработках продуктов типа SPA (single page application) - тут тебе и vue / react / angular несомненно это шустро и качественно работает при правильном проектировании приложения и разработке.
    К слову конфигурирование сервера и запуск / перезапуск проекта на Node.js отличаются от привычного PHP и в этом тоже нужно понимать.

    Готового решения под ваши задачи нет ни там ни там (так чтоб из коробки - взял + поставил = работает).

    При любом выбранном варианте Вас ожидает продолжительная разработка и отладка данного решения, постоянные доработки и т.д и т.п.
    НО при должном проектировании и продуманной системе в действительности может получиться быстрый подходящий продукт.

    Воспроизведение функционала доступного в 1С Битрикс (ИМ + 1С + CRM + Касса + Платежная система) займет от 2 до 6 месяцев разработки как следствие ценник.

    Вот и думайте оно Вам точно надо?

    Может быть вся беда в том что вы неэффективно используете 1С Битрикс или напротив перемудрили?
    1С Битрикс - это тоже на PHP но данную систему нужно правильно "кастрировать" и вычищать / отключать не используемое тогда и летать будет и работать как швейцарские часы.
    При наличии адекватного программиста перестать использовать стандартные компоненты для вывода и обработки, а использовать свои компоненты создав их с использованием API 1C Framework.

    P.s. Если всё же менять CMS 1С Битрикс то я бы предложил посмотреть в сторону OpenCart.

    Всё вышеизложенное является моим Личным мнением основанном на опыте и доступно для дискуссии : )
    Ответ написан
  • Как настроить вывод детального изображения раздела каталога на Битрикс?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Советую для начала вывести
    var_dump($arSection);
    var_dump($arResult);

    И вы поймете что вообще есть в этих переменных.
    Могу предположить что там нет массива ['DETAIL_PICTURE']['SRC'] и ['PICTURE']['SRC'] а лишь ['DETAIL_PICTURE'] и ['PICTURE'] с указанием ID файлов, а не пути до них.
    Для этого используйте:
    $image_src =  CFile::GetPath($arSection["PICTURE"]);
    echo '<img src="<?=$image_src?>">';

    Или как я делаю сразу ресайз :
    $image =  CFile::ResizeImageGet($arSection['PICTURE'], array('width'=>1024, 'height'=>768), BX_RESIZE_IMAGE_PROPORTIONAL, true);
    echo '<img src="'.$image['src'].'">';
    Ответ написан
    Комментировать
  • Как подсчитать при помощи php количество дней от рождения человека?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    $now = time(); 
    $your_date = strtotime("2019-06-10");
    $datediff = $now - $your_date;
    echo round($datediff / (60 * 60 * 24));
    Ответ написан
    Комментировать
  • Как заменить символьный код элемента на свойство артикул?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Попробуй так:
    <?
    AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("OBEAClass", "OBEA")); // объявляем обработчики 
    AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("OBEAClass", "OBEA"));
    class OBEAClass 
    {
        public static $disableHandler = false;
        function OBEA(&$arFields)
        { 
            if (self::$disableHandler){return;}        
            CModule::IncludeModule("iblock");
            if( $arFields["ID"]> 0 && $arFields["IBLOCK_ID"] == "33") // ID основного каталога товаров
            {
    
                $db_props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], Array("sort"=>"asc"), Array("CODE"=>"CML2_ARTICLE"));
                if($ar_props = $db_props->Fetch()){
                    $arLoadProductArray = Array("CODE" => mb_strtolower($ar_props["VALUE"]));
                    if($res = $el->Update($arFields["ID"], $arLoadProductArray)){
    
                    }
                }
                self::$disableHandler = true; //отключаем
            }         
        }
    }
    ?>
    Ответ написан
  • Как вывести сумму переменных на экран с помощью двух функций?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    function summa(x,y){
      return x+y;    
    }
    function show (){
      document.getElementById("r").innerHTML=summa(1,2);
    }
    show();
    Ответ написан
    Комментировать
  • Как в JQuery сделать переход по вкладкам при помощи next и previous?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    HTML:
    <div class="tab_block">
        <div class="tab">Content#1</div>
        <div class="tab">Content#2</div>
        <div class="tab">Content#3</div>
    </div>
    <div class="nav_block">
        <a href="#" class="prev">prev</a>
        <a href="#" class="next">next</a>
    </div>

    CSS:
    .d-none{
      display: none;
    }
    .tab{
      display: none;
    }
    .tab.selected{
       display: block; 
    }

    JavaScript:
    $(document).ready(function(){
        $('.tab:first').addClass('selected');
      
        $('.nav_block a').click(function(e){
            e.preventDefault();   
            let this_selected_tab = $('.tab.selected');
            if($(this).hasClass('prev')){
              if(this_selected_tab.prev('.tab').length > 0){
                this_selected_tab.prev('.tab').addClass('selected');    
              }else{
                $('.tab:last').addClass('selected');
              }       
            }
            if($(this).hasClass('next')){
              if(this_selected_tab.next('.tab').length > 0){
                this_selected_tab.next('.tab').addClass('selected');     
              }else{
                $('.tab:first').addClass('selected');
              }
            }
          this_selected_tab.removeClass('selected');
        });
    });


    Ответ написан
    3 комментария
  • Как подключиться к базе данных?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Дружище - "А оно тебе надо, а?" (с) У тебя сейчас в голове такая же каша как и в тексте. Давай я попробую тебя научить формировать вопросы для гугла:
    1) Что такое Web-Сервер - И изучаем что такое Apache+PHP или Nginx а так же узнаём про MySQL или другие системы баз данных
    2) Что такое OpenServer - И изучаем как он устроен и что где храниться (например phpmyadmin храниться примерно тут OpenServer\modules\system\html\openserver\phpmyadmin но тебе к файлам phpmyadmin точно не надо)
    3) Основы PHP + работа с БД на PHP- И изучаем

    И вот когда будет базис стоит уже писать сюда

    P.s Пример #1 Пример использования mysqli_connect()
    <?php
    $link = mysqli_connect("Адрес сервера MySQL", "ПОЛЬЗОВАТЕЛЬ", "ПАРОЛЬ", "БАЗА ДАННЫХ КОТОРАЯ УЖЕ ДОЛЖНЫ БЫТЬ СОЗДАНА");
    
    if (!$link) {
        echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
        echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
        exit;
    }
    
    echo "Соединение с MySQL установлено!" . PHP_EOL;
    echo "Информация о сервере: " . mysqli_get_host_info($link) . PHP_EOL;
    
    mysqli_close($link);
    ?>
    Ответ написан
    Комментировать
  • Как бы вы реализовали этот блок именно через бутсрап 4 [фото]?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Я бы сделал так:
    <div class="d-flex flex-wrap">
        <div class="block">1</div>
        <div class="block">2</div>
        <div class="block">3</div>
        <div class="block">4</div>
        <div class="block">5</div>
        <div class="block">6</div>
    </div>


    .block{
        max-width: calc(100%/3 - 20px); 
        margin: 10px;
        border: 1px solid #000;
    }
    Ответ написан
    Комментировать
  • Есть ли у bootstrap следующая возможность?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    У bootstrap - НЕТ но написать такое дело 3 минут.

    $(document).on("click","[data-triger-class]",function(e){
            e.preventDefault();
            let target = $(this).data('triger-class');
            $('.'+target).addClass('new_class');
        });
    Ответ написан
    6 комментариев
  • Как сделать слайдер-карусель блоков в данном примере?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Например есть слайдер Slick а разметку я бы сделал примерно так:

    <div class="slider slick">
        <div>
            <h3>Понедельник</h3>
            <div class="d-flex">
                <div><img src="" alt=""><p>Блюдо 1</p></div>
                <div><img src="" alt=""><p>Блюдо 2</p></div>
                <div><img src="" alt=""><p>Блюдо 3</p></div>
                <div><img src="" alt=""><p>Блюдо 4</p></div>
                <div><img src="" alt=""><p>Блюдо 5</p></div>   
            </div>
        </div>
        <div>
            <h3>Вторник</h3>
            <div class="d-flex">
                <div><img src="" alt=""><p>Блюдо 1</p></div>
                <div><img src="" alt=""><p>Блюдо 2</p></div>
                <div><img src="" alt=""><p>Блюдо 3</p></div>
                <div><img src="" alt=""><p>Блюдо 4</p></div>
                <div><img src="" alt=""><p>Блюдо 5</p></div>   
            </div>
        </div>
        ...
        <div>
            <h3>Воскресение</h3>
            <div class="d-flex">
                <div><img src="" alt=""><p>Блюдо 1</p></div>
                <div><img src="" alt=""><p>Блюдо 2</p></div>
                <div><img src="" alt=""><p>Блюдо 3</p></div>
                <div><img src="" alt=""><p>Блюдо 4</p></div>
                <div><img src="" alt=""><p>Блюдо 5</p></div>   
            </div>
        </div>
    </div>
    Ответ написан
    Комментировать
  • Как копировать цену из таблицы цен в форму во всплывающем окне?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Добавь к кнопке data-price и в форме скрытое поле price
    <button class="site-btn sb-gradients bth-top-margin order-btn" data-price="77605">Оформить заказ</button>
    ...
    <inpu type="hidden" class="modal_price" name="phone">

    $(". order-btn").on('click',function(e){
      $('.modal_price').val( $(this).data('price') );
    });
    Ответ написан
    5 комментариев
  • Bitrix. Интернет магазин. API работы с закаом. Как получить PAY_SYSTEM_ID по Id заказа?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    В заказе может быть не одна оплата поэтому:

    $paymentCollection = $order->getPaymentCollection();
    
    foreach ($paymentCollection as $payment) {
        $sum = $payment->getSum(); // сумма к оплате
        $isPaid = $payment->isPaid(); // true, если оплачена
        $isReturned = $payment->isReturn(); // true, если возвращена
    
        $ps = $payment->getPaySystem(); // платежная система (объект Sale\PaySystem\Service)
        $psID = $payment->getPaymentSystemId(); // ID платежной системы
        $psName = $payment->getPaymentSystemName(); // название платежной системы
        $isInnerPs = $payment->isInner(); // true, если это оплата с внутреннего счета
    }
    Ответ написан