Задать вопрос
  • Почему срабатывает условие, хотя, по идее, не должно?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Надо учиться отлаживать свой код самостоятельно.
    Ну то есть вы уже начали, это очень хорошо.
    Но выводить просто 'find data' не очень информативно. Вам надо понять, почему оно выводится.
    Добавьте к var_dump ('find data'); результат strpos($value,'г ') и посмотрите на результат. причина сразу станет ясна.

    И соответственно, код надо будет доработать, чтобы получить желаемый результат.
    Кстати, если у вас 8 версия РНР, то в нем есть готовая функция для такой проверки, вместо strpos
    Ответ написан
    Комментировать
  • Как добавить класс для элемента при checked?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Давайте вместе подумаем, почему ваш селектор, в котором чёрным по белому написано checkbox, не выбирает radio. Но есть вероятность, что придётся искать кого-то ещё и соображать на троих.
    Ответ написан
    2 комментария
  • Как структурировать код, архитектура проекта?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Проблема в том, что многие курсы рассказывают о различных web терминах, в
    результате чего возникает каша, поскольку не знаешь где и что применять
    Возьмём патерны проектирования, MVС, модуль и так далее. Насколько я понимаю они
    и решают проблему разбивки кода...
    В текущем, современном этапе разработки такими паттернами почти не пользуются. Сейчас у нас есть import/export - вот он ваш, нативный модуль. В остальном, просто положитесь на фреймворк.

    Как подходить к оформлению кода, если мы не используем фреймворк Vue или иной...

    Любой клиентский фреймворк - это уже своего рода архитектура, просто нужно следовать в начале пути общепринятым правилам. В отношении vue почитать про best practices. В этой папке компоненты, в этой папке сервисы, в этой папке утилиты, в этой папке типы и т.п. Разделяйте макет на части. Отдельный компонент фильтра, который состоит из множества компонентов самого фильтра, чекбокс фильтр, фильтр диапазона и т.п. Отдельно компонент товара и т.д.

    Дмитрий Лаврик сказал, что бэкенд программисты в последнее
    время создают API для сайтов. Так намного проще создавать бэк

    Ну в какой-то степени он прав, бекендерам не нужно заниматься отображением, т.к. этим должен заниматься фронт. А так же удобнее создавать микросервисную архитектуру, т.к. каждый сервис на вход ждёт лишь данные, что бы отдать данные. Во всём остальном по сути своей ничего не поменялось.

    Можно ли при помощи VUE создать fullstack приложения или без создания той же
    структуры базы данны никак?

    На vue нельзя написать фулстек, как и на react. Это браузерные фреймворки(клиентские), предназначенные для работы в браузере.

    База данных - это всего лишь термин, который говорит, что есть какое-то хранилище данных. Им может быть любая из популярных БД или просто файлик(или множество файликов). Просто где лежат записи. Любое ПО, в котором вы можете редактировать или создавать записи, должно иметь базу данных, иначе никак.

    выучил JS на уровне решении задач средней сложности

    Ну вам не кажется что из вышеперечисленного вами, вы не выучили js. Средней уровень сложности(хотя что можно считать "средним уровнем сложности" - это ещё вопрос), это наверно где-то джун+. А такие джуны уже умеют пользоваться инструментами.

    Личный мой вывод:
    Вы как и все начинающие окунулись в болото под названием js. Где царит хаос и анархия, когда можно всё, но не понятно как. У меня главный вопрос к таким людям, а зачем вам на данном этапе вашего развития "всё"? Ну вот серьёзно, зачем? Зачем вам сейчас знать, как устроена БД, как правильно создавать таблицы, как правильно создавать связи в них, зачем микросервисы, зачем, о госпади микрофронты, SSR, PWA, FullStack, Nodejs, Docker, Kubernetes, webpack, vite, TypeScript и прочая херня, которой полон мир фронтенда. Зачем вам всё это, если вы сами не можете ответить на этот вопрос. Зачем вам сейчас знать, как это работает. Если вы просто сайтик с чекбоксиками не можете сделать. Т.е. простая фильтрация html кода. Возьмите какую нибудь публичную rest api с фейковыми данными для своей песочницы и постройте маломальский сайтик с фильтром. Зачем вам фулстек? Почувствовать себя гением разработки? Забудьте про кучу не понятных терминов, просто выкиньте их из головы.
    Зачем вам вообще vue или реакт, или им подобные? У вас в голове хоть есть понимание, зачем придуманы эти штуки, какую задачу то они призваны решать? Почему все так "дрочат" на эти SPA? Почему +- 90% вакансий фронта требуют знания SPA фреймворков? Каждый инструмент призван решать какую-то задачу, пока вы не поймёте, почему вам реально нужен этот инструмент, не трогайте его, пускай лежит до лучших времён.

    Просто возьмите js или хрен с ним, возьмите vue, сделайте внутри ajax запрос, получите данные, отобразите их. Где в этих словах какие-то особенные или сложные термины? Вам идиоты напихали в голову сложных конструкций, вот вы и мучаетесь. Упростите себе жизнь, выкиньте из головы всякую хрень. Просто сядьте и пишите, не думая ни о чём! Просто берёте vue, разворачиваете как в доке написано и готово, работайте.
    А когда сделаете, перекурите, а потом сядьте и посмотрите на своё творение и подумайте, как можно улучшить, возможно упростить. Не ждите быстрого успеха!

    КОВАТЬ, КОВАТЬ И ЕЩЁ РАЗ КОВАТЬ! Только так можно научиться.

    Никакая архитектура вас не спасёт, пока вы сами не поймете, а зачем она мне. Вот пока у вас нет понимания, что мне нужна какая-то там архитектура, т.к. вы в этот момент поняли, какую проблему вам нужно решить, вот только тогда и начинайте что-то думать в эту сторону. К этому моменту, у вас уже будет что-то структурированное в голове и понимание.
    Ответ написан
    Комментировать
  • Экранирование sql запросов, достаточно ли функции?

    Adamos
    @Adamos
    Самописные "защиты от инъекций" вследствие непонимания автором того, что он вообще делает, обычно убивают двух зайцев сразу.
    И оставляют дыру в безопасности, и портят данные в базе.
    Для реальной защиты подготовленного запроса, как правило, достаточно. Но если очень постараться, дырку можно проделать и в нем.
    Ответ написан
    Комментировать
  • Какая функциональная разница между этими подходами создания объектов в JS?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Функционально - разницы никакой, т.к. по факту и то и другое реализует одинаковую логику: создание объекта с определенными свойствами. Третий вариант можно назвать функциональным подходом: мы создаем функцию, которая решает свою задачу и не привязываем её к какому-то классу. `new` - просто способ сказать как компилятору, что надо вызвать функцию-конструктор такого-то класса, так и программисту, читающему данный код в будущем, что вот тут мы создаем новый экземпляр такого-то класса. Так же и, например, {} просто упрощенная запись new Object() для создания объекта.
    Ответ написан
  • Почему функция обрабатывается лишь раз?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);
    Ответ написан
    2 комментария
  • Как валидировать телефон с регуляркой на JavaScript?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    /\+7\(\d{3}\)\d{3}-\d{2}-\d{2}/
    https://regex101.com/r/jXMk30/1
    Ответ написан
    Комментировать
  • Как игровые движки понимают инородные языки?

    Vindicar
    @Vindicar
    RTFM!
    1. Встраивают интерпретатор нужного языка, при необходимости урезают стандартную библиотеку (чтобы не давать коду плагинов лишних возможностей) и подсовывают туда средства общения с хост-программой.
    2. Если нет нужды изолировать плагин от остальной программы, то полагаю что да, накладные расходы на поддержку плагинов уменьшатся в случае, когда плагин написан на том же языке, что и программа. В противном случае организация "песочницы" может занять столько же усилий, сколько встраивание интерпретатора.
    3. Лучше, если язык плагина является или интерпретируемым (как Lua или JS), или компилируется в байткод (как Python/Java/C#). Также желательно, чтобы язык плагина имел средства интроспекции.
    Ответ написан
    Комментировать
  • Как чат-бот должен обращаться к пользователям: на вы или на ты?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    приличные пацаны предлагают formal и informal tone , пацанчик

    можешь дать выбирать, по дефолту лучше formal - вдруг он обидчивый и у него ствол
    Ответ написан
    Комментировать
  • Как определить текущую активную вкладку при помощи JS или pHP?

    @urinov Автор вопроса
    Вопрос решил. Использоватл такую функцию:

    <script>
        $("#tabbuilder ul li").click(function(e) {
        e.preventDefault();
        $("#tabbuilder ul li").removeClass('active');
        $(this).addClass('active');
        })
    </script>
    Ответ написан
    Комментировать
  • Как проверить вхождение диапазона дат в определенный диапазон?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Когда диапазоны НЕ пересекаются? Когда один из них идёт после другого. То есть, первый диапазон заканчивается раньше, чем начинается второй или наоборот, второй заканчивается раньше, чем начинается первый. Запишем формально:
    $isNotOverlapped = $range2start > $range1end || $range1start > $range2end;

    Когда диапазоны пересекаются? Очевидно, что нам просто нужна инверсия предыдущего условия.
    $isOverlapped = !($range2start > $range1end || $range1start > $range2end);

    Но, если вспомнить булеву алгебру, то !(A || B) = !A && !B. Значит можем записать:
    $isOverlapped = $range2start <= $range1end && $range1start <= $range2end;
    Ответ написан
  • Как проверить вхождение диапазона дат в определенный диапазон?

    Adamos
    @Adamos
    Два временных интервала не пересекаются, если начало и конец одного из них раньше начала второго. Элементарное условие.
    Ответ написан
  • Как разбирать код чужого сайта?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Я бы советовал посмотреть в сторону гитхаба.
    Там куча открытых исходников, притом - нормально оформленных и, нередко, хотя-бы с минимальным подобием документации.
    Выкачивая сайты же есть шансы получить как минимум обсфуцированный код, разбирать который можно до посинения.
    Ответ написан
    Комментировать
  • Как установить Windows 98 на телефон?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Интересно, такие бредовые идеи возникают отчего? От нежелания хоть немного узнать, что из себя представляет "телефон" с точки зрения вычислительной техники или просто от модно-стильно-молодежности? Это примерно как дети спрашивают "А если взять атом величиной с дом?"

    Нет, малчик, нЭльзя. нЭ тот архитектура.

    Хотя путь джедая конечно же есть. Найти исходники, перекомпилять под нужную архитектуру, написать драйвера, написать загрузчик - делов-то...
    Ответ написан
    Комментировать
  • Проблема с синтаксисом, как правильно написать?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    если не знаете как тогда простой и надёжный способ - немного дублировать код
    <?php if($logged === false): ?>
      <!-- выводим один блок, без foreach -->
    <?php else: ?>
      <!-- выводим другой блок -->
    <?php endif; ?>
    Ответ написан
    Комментировать
  • В чём ошибка в задаче?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Три подсказки.

    Проверить, что аргумент является строкой:
    typeof arg === 'string'
    // ещё можно длину проверить, а то, вдруг длинное пришлют
    arg.length === 1

    Проверить, что это буква и есть пара в другом регистре:
    arg.toLowerCase() !== arg.toUpperCase()
    // строка перевелась в разные кейсы

    В каком кейсе изначально была буква:
    arg.toUpperCase() === arg // значит, буква в верхнем регистре


    Из этих кирпичиков остаётся сложить домик. И чтоб не рухнул )
    Ответ написан
    1 комментарий
  • При изменении значений в ячейке таблицы вылетает ошибка mysqli_query(): Couldn't fetch mysqli, где я ошибся?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Couldn't fetch mysqli возникает в том случае, если соединение с БД уже было закрыто.
    Есть такие старательные любители везде пихать mysqli_close
    Надо им всегда бить по рукам, и отучать писать эту бессмысленную строчку.
    Ответ написан
    4 комментария
  • Как правильно записать строку?

    @werwolflg
    У вас параметры неправильно заданы, здесь у вас packages задано массивом
    "packages": [
        {
          "count": 1,
          "dimensions": {
            "weight": 1000,
            "length": 500,
            "height": 500,
            "width": 500
          },
          "price": 1000,
          "estimatedPrice": 1000
        }
      ]


    А здесь просто один элемент:
    "packages"=>[
            "count"=> 1,
            "dimensions"=> [
                "weight"=> 1000,
                "length"=> 500,
                "width"=> 500,
                "height"=> 500,
            ],
            "price"=> 1000,
            "estimatedPrice"=> 1000
        ],

    Надо так объявить
    "packages"=>[[
            "count"=> 1,
            "dimensions"=> [
                "weight"=> 1000,
                "length"=> 500,
                "width"=> 500,
                "height"=> 500,
            ],
            "price"=> 1000,
            "estimatedPrice"=> 1000]
        ],
    Ответ написан
    2 комментария
  • Как переносить строки в alert?

    @Cyber_bober
    alert(`строка 1 \n строка2`)
    Ответ написан
    Комментировать
  • Как внести изменение в ячейку БД?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Использование динамических запросов может привести к нарушению безопасности, поэтому я могу посоветовать следующий подход к этой проблеме:
    $stmt = $conn->prepare(
    	"UPDATE `sortlist` 
    	SET 
    		`count1` ='count1' + ? ,
    		`count2` ='count2' + ? ,
    		`count3` ='count3' + ? 
    	WHERE `id`= ? ;"
    );
    $stmt->bind_param('iiis', $count1, $count2, $count3, $row);
    
    foreach ($data as $value) {
    	list($row, $col) = explode("-", $value['id']);
    	
    	$count1 = 0;
    	$count2 = 0;
    	$count3 = 0;
    	
    	$column = "count" . intval($col); 
    	$$column = $value["count"];
    	
    	echo "$count1, $count2, $count3, $row";
    	
    	$stmt->execute();
    }


    Share PHP code online
    Ответ написан
    Комментировать