Задать вопрос
  • Как отобразить соответствия массива php?

    flapflapjack
    @flapflapjack
    на треть я прав
    данные на входе именно в виде
    //деревья
    $array=["Дуб","Ель","Ольха"];
    //зафиксированы долгожители
    $Dub=300;
    $elka=250;
    $olha=400;


    ? если да то фейспалм. Особенно
    айти соответствия через ifelse,


    Если еще что-то можно изменить, то
    $trees=[
    [
            'name'=>"Дуб",
            'years'=>300
    ],
    [
            'name'=>"Ель",
            'years'=>250
    ],
    [
            'name'=>"Ольха",
            'years'=>400
    ],
    [
            'name'=>"Юкка",
            'years'=>250
    ]
    
    ];
    
    function sort_trees($a,$b)
    {
    $a=$a['years'];
    $b=$b['years'];
    if ($a == $b) {
        return 0;
      }
      return ($a < $b) ? -1 : 1;
    }
    
    uasort($trees,'sort_trees');
    
    foreach($trees as $tree)
    {
    print $tree['name']." живет ".$tree['years']." лет\n";
    }


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

    Предложенный мною массив с деревьями пополняется командой:
    <?
    $trees[]=['name'=>'Брюква', 'years'=>2];
    $trees[]=['name'=>'Топинамбур', 'years'=>1];
    и т.д.

    Также можно упростить задачу, и воспользоваться ksort()
    Ответ написан
    3 комментария
  • Почему не срабатывает toggleClass?

    @Firsov36
    full-stack web developer
    А с чего должно что-то срабатывать, если у вас нету блоков с такими классами?
    Ответ написан
    5 комментариев
  • Почему не советуют писать await после return в функции?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Потому что нет try catch конструкции, а это уже deprecated по умолчанию..
    Во втором случае вам промис вернётся и уже за функцией можно обрабатывать ошибку. В противном случае у вас двойная обработка(как минимум) получится
    Ответ написан
    4 комментария
  • Что означает данный блок кода?

    inavo
    @inavo Автор вопроса
    В общем, применив метод прогрессивного гугления, я понял, что здесь запятая используется как оператор.
    Оператор запятая выполняет каждый из его операндов (слева направо) и возвращает значение последнего операнда. (подробнее по ссылке)
    Т.е. по идее, я могу записать это так:
    var self = this;
    self.callback = $(".class");
    _.each(self.callback.find("item"), function (e) {
        //some code
      });
    self.callback.find(".class2").before('<div class="class3""></div>')

    Но лучше так вообще не делать.
    Ответ написан
    2 комментария
  • Время интернет-магазинов прошло?

    alexyarik
    @alexyarik
    Битрикс разработчик
    Вы верно подметили для малого / среднего бизнеса и для этого есть предпосылки:
    1) Спад Российской экономики шестой год подряд. Меньше денег, меньше покупают
    2) За 2019 закрылось более 700 000 предприятий (ИП и т.д.), за 2018 год закрылось 300 000 предприятий
    3) Гораздо реже стали открывать новый бизнес
    4) Повышение НДС, онлайн-кассы, сборы давят продажи.
    5) Способов привлечения трафика больше не стало, как и его удешевления не наблюдается. Яндекс совсем обнаглел, стал хуже Гугла. Золотая реклама в директе, бриллиантовое продвижение в поиске.
    6) Покупательский спрос сильно упал, все прогнозы на 2020 год об ещё большем падении спроса.
    7) Старт интернет-магазина для малого бизнеса стал дороже
    Речь идёт про 2018, но не думаю, что в 2020 ситуация по цене старта стала дешевле.
    8) Трудно конкурировать с крупными игроками. Например, по доставке и по оптовым ценам. Оптовая цена закупки для малого бизнеса напрямую зависит от объёмов. В том же беру доставка 100 рублей, у частного интернет-магазина не будет такой цены доставки.
    Ответ написан
    23 комментария
  • Как скрывать элемент при клике вне его?

    Stalker_RED
    @Stalker_RED
    document.body.addEventListener('click', evt => {
      if (!evt.target.closest('.my_window')) {
        // клик вне окна, закрываем
      }
    })
    Ответ написан
    Комментировать
  • Необходимо осуществить выход с профиля именно сессией как мне это осуществить?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Как правило переход "назад" в браузере заставляет браузер показать предыдущую страницу из кеша браузера. В результате страница не перезапрашивается с сервера. А следовательно она остаётся такой-же, без авторизации пользователя. Потом нажимаете "вперёд" в браузере, и опять данные из кеша браузера, и оп-па, пользователь авторизован.

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

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Сессии блокируются по дефолту, и пока первый запрос не завершен доступа к файлу сессий не будет у второго запроса.

    Чтобы запросы сразу отпускало надо закрыть сессию на запись через session_write_close();

    И естественно после этого нельзя редактировать будет $_SESSION.
    Чтобы начать работать с сессией надо будет снова сделать session_start();

    Так что
    session_start();
    // делаем что-нибудь
    session_write_close();

    И вкладки висеть не будут.
    Ответ написан
    1 комментарий
  • Как правильно экранировать символы в SQL запросы, если нужно отправить HTML-код?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    $data =
    <<< start
    <img src=\"$NewFileDir\" alt=\"$NewFileDir\" class='responsive-img' id='dynamic$maxIDNumberMobile'>
    <script>
        document.getElementById('$maxIDNumberMobile').addEventListener('click', function() {
            lightGallery(document.getElementById('$maxIDNumberMobile'), {
                dynamic: true,
                thumbnail: true,
                dynamicEl: [{
                    "src": '$NewFileDir',
                }]
            })
    
        });
    </script>
    start;

    Как вариант Heredoc
    Ответ написан
    2 комментария
  • Как правильно экранировать символы в SQL запросы, если нужно отправить HTML-код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    HTML никак специально экранировать не нужно. И вообще ничего экранировать не нужно. Экранирование - это треш, угар, прошлый век и инъекции. Данные в БД надо просто посылать отдельно от запроса.

    Удивительно, что на этот вопрос подписалось ещё столько народу.
    Ну это я не знаю - как подписаться на вопрос "сколько будет шестью шесть?". Не "дважды два", но близко.
    Работа с БД - это самые основы пхп, которые обсосаны в каждом учебнике со всех сторон. Неужели всё так плохо, что этот вопрос вызывает столь живой интерес, чтобы попасть в список интересных на тостере?

    Причем твоя лично проблема здесь совсем не в том, "как экранировать". HTML никак особо экранировать не нужно, базе данных абсолютно всё равно, что ты внее вставляешь. Твоя проблема в том, что ты в принципе не знаешь пхп и путаешься в основах языка, используешь устаревшую версию, которая не будет работать на живом сайте. И даже самый базовый синтаксис тебя пугает. Поэтому извини, я буду писать ответ не для тебя, а для тех, кто, в который раз, задается этим вечнозеленым вопросом, но по какой-то причине не смог освоить базовые навыки работы с гуглем/яндексом.

    Чтобы вставить данные в mysql, и вообще никогда не думать ни про какое "экранирование", надо
    1. Все переменные в запросе заменить на знаки вопроса
    2. Подготовить запрос к исполнению
    3. Привязать переменные к знакам вопроса
    4. Выполнить запрос.

    Как я уже говорил, функций, которые начинаются на mysql, в языке давно нет. Остаются только те, которые начинаются на mysqli и PDO. Вот для них я и приведу примеры.

    mysqli
    $type = 'testing';
    $reporter = "John O'Hara";
    $query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменем
    $stmt = $mysqli->prepare($query); // подготавливаем
    $stmt->bind_param("ss", $type, $reporter); // привязываем
    $stmt->execute(); // исполняем

    Важно! Чтобы этот код работал, сначала надо правильно установить соединение mysqli
    PDO
    $type = 'testing';
    $reporter = "John O'Hara";
    $query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменяем
    $stmt = $pdo->prepare($query); // подготавливаем
    $stmt->execute([$type, $reporter]); // привязываем и исполняем

    Важно! Чтобы этот код работал, сначала надо правильно установить соединение PDO

    Также можно использовать сторонние библиотеки, с которыми все еще проще. Но использование сторонних библиотек почему-то пугат новичков хуже чем зомби на кладбище в безлунную ночь, поэтому настаивать не буду
    Ответ написан
    18 комментариев
  • Почему в данном примере this вызывается в контексте window и как это изменить?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    I. Чтобы разобраться, вставьте повсюду console.log().
    Так узнаете, где this – ваш объект, а где становится «вдруг» window:
    console.log("внутри timeout", this);

    II. Освежите отличия стрелочных функций (callback) => { ... } от обычных function() { ... }
    В исходном коде
    this.response = function() { .. тут собственный this.. }
    Когда передаёте аргументом ..(t.response), он улетает из контекста Window, поэтому в нём this == window.
    Попробуйте использовать стрелочную функцию:
    this.response = () => { .. тут this на момент обращения к нему .. }


    III. Посмотрите на исходный код и скажите, что раньше исполнится: callback() или this.data = "Steve Jobs" ?

    Вот так, вроде бы, работает, как ожидается. С минимальными изменениями:
    spoiler
    function test() {
      
      this.data = null;
      this.response = function() {
        console.log(this, this.data);
      }
      this.connect = function(callback) {
        setTimeout(() => {
          this.data = "Steve Jobs";
          callback.call(this);
        }, 500);
      }
    }
    
    t = new test();
    t.connect(t.response);
    Ответ написан
    Комментировать
  • Как найти источник загрузки сторонней рекламы в браузерах?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Химичит провайдер. У вас кстати кто?
    На этом попались
    Теле2
    Ростелеком
    Мегафон
    Билайн

    В общем случае это происходит на http сайтах, производится вставка скрипта в начало страницыы

    https://github.com/vkorotenko/kickout-ads
    Ответ написан
  • Как оптимизировать скорость загрузки сайта с картой?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    1. Как оптимизировать скорость загрузки сайта с картой?


      Не загружайте скрипты карты изначально вообще. В место где должна быть карта можно вставить заранее подготовленную картинку карты, это нужно для тех случаев если ваш скрипт по каким-то причинам не загрузится. Позже она будет подменяться на настоящую карту.
    2. Далее, используйте Intersection Observer API чтобы определить когда пользователь доскролит до карты, чтобы начать её загружать.
    3. Про ленувую загрузку скриптов в интернете полно материалов (например тут).
    4. Подскажите пожалуйста способ загружать второй скрипт

      У объекта script есть события onload onerror. В обработчике события onload вы удаляете картинку, и на её месте вставляете карту со всеми необходимыми параметрами.
    Ответ написан
    1 комментарий
  • Почему данные не выводятся?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    У тебя в соседнем вопросе была mysqli а тут вдруг снова mysql_query(). Этой функции уже много лет как нет в языке РНР. возвращайся к mysqli
    Ответ написан
    Комментировать
  • Как создать кодировку подключения?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На будущее: пишешь в адресной строке своего браузера, mysqli задать кодировку соединения
    И тебе сразу показывает, как это сделать. Попробуй - это очень удобно.
    Ответ написан
    1 комментарий
  • Как найти обработчик формы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Открываем для себя такую штуку Инструменты разработчика в браузере.
    Нажимаем Ф12, вкладка Сеть, на всякий случай ставим галку preserve log, отправляем свою форму и смотрим какой запрос пошел к сайту
    Ответ написан
    6 комментариев
  • Насколько оправдано хранить информацию о файлах в базе данных?

    @RuComMarket
    Битрикс FullStack разработчик
    есть еще такой вариант:
    при загрузке файла, он компилируется в small medium full и сохраняется original
    в базе имея один id ты имеешь 4 файла, которые можно использовать например для адаптивности, или вывода preview или detail, а также 3 вида минимизируются для уменьшения объема трафика
    Ответ написан
    2 комментария
  • Насколько оправдано хранить информацию о файлах в базе данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я пока в описании проблемы не увидел ни одной причины хранить инфу о файлах в БД.
    Любое действие должно вызываться насущной необходимостью, а не абстрактными рассуждениями.
    Какая проблема найти версию в нужном разрешении, приписав к имени файла постфикс с разрешением - загадка

    Другие проекты поступают так, как требуется в их конкретном случае.
    Если никакой дополнительной информации о файле хранить не требуется, то и в бд их пихать не нужно.
    Если файл встраивается в БД - например, может относиться к сразу нескльким категориям, то без БД просто не обойтись, и таких вопросов в принципе не возникает.
    Ответ написан
    4 комментария
  • Комментарии в коде?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    Не учите меня программировать.
    Комментарии лишними не бывают.
    5e30e1be57646442252796.gif
    // Когда я начинал это писать, только Бог и я понимали, что я делаю
    // Сейчас остался только Бог


    // иногда мне кажется, что компилятор игнорирует все мои комментарии


    // пьян, исправить позже

    // Магия. Не трогать.

    /**
     * Всегда возвращает true.
     */
    public boolean isAvailable() {
        return false;
    }
    Ответ написан
    2 комментария