Задать вопрос
  • Запись больших xml в MYSQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Жжжуть. Делать выборку в цикле для каждой строки, да ещё и генерируя каждый раз запрос - это, наверно, худший из возможных вариантов.
    В таблицу `products` добавляете колонку `price`. Вешаете на эту таблицу триггеры на вставку и изменение строки, которые при добавлении или изменении цены заносят её в таблицу `prices`. Напрямую с таблицей `prices` из этого скрипта не работаете.
    В цикле формируете и накапливаете наборы данных для вставки. Как только накопится некоторое количество, вставляете их одним запросом. Используете ON DUPLICATE KEY UPDATE для перезаписи изменённых значений. По окончании цикла выгружаете оставшиеся наборы.
    Примерно так
    $data = [];
    while ($z->name === 'offer') {
      ...
      $data[] = '("'.$id.'","'.htmlspecialchars(urldecode($url)).'","'.$today.'",'.(int)$price.')';
      if (count($data) > 99) {
        $sql = 'INSERT INTO `products` (`id`,`url`,`date`,`price`) VALUES ' 
             . implode(',', $data)
             . 'ON DUPLICATE KEY UPDATE `url` = VALUES(`url`), `price` = VALUES(`price`)';
        mysqli_query($link6,$sql);
        $data = [];
      }
      ...
    }
    if (count($data) > 0) {
      $sql = 'INSERT INTO `products` (`id`,`url`,`date`,`price`) VALUES ' 
           . implode(',', $data)
           . 'ON DUPLICATE KEY UPDATE `url` = VALUES(`url`), `price` = VALUES(`price`)';
      mysqli_query($link6,$sql);
    }
    Ответ написан
  • Как сделать кириллицу читабельной в HTTP_REFERER?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $str = 'test.ru/?utm_source=%D0%A2%D0%95%D0%A1%D0%A2';
    print urldecode($str);

    test.ru/?utm_source=ТЕСТ
    Ответ написан
    Комментировать
  • Как отсортировать массив?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В ассоциативном массиве PHP порядок всегда соответствует последовательности добавления в него ключей.
    $array = [
      [
        "gq_address" => "188.120.254.140",
        "gq_hostname" => "•   RGPlay | DarkRP [Быстрая загрузка]",
        "gq_maxplayers" => 128,
        "gq_numplayers" => 0,
        "gq_online" => true,
        "gq_port_client" => 27015,
      ], [
        "gq_address" => "62.109.18.242",
        "gq_hostname" => "Default Breach Server",
        "gq_maxplayers" => 128,
        "gq_numplayers" => 0,
        "gq_online" => true,
        "gq_port_client" => 27015,
      ]
    ];
    $array = array_map(function($el) {
      return [
        'gq_hostname' => $el['gq_hostname'],
        'gq_address' => $el['gq_address'],
        'gq_port_client' => $el['gq_port_client'],
        'gq_online' => $el['gq_online'],
        'gq_numplayers' => $el['gq_numplayers'],
        'gq_maxplayers' => $el['gq_maxplayers']
      ];
    }, $array);
    var_dump($array);

    array(2) {
      [0] => array(6) {
        ["gq_hostname"] => string(55) "•   RGPlay | DarkRP [Быстрая загрузка]"
        ["gq_address"] => string(15) "188.120.254.140"
        ["gq_port_client"] => int(27015)
        ["gq_online"] => bool(true)
        ["gq_numplayers"] => int(0)
        ["gq_maxplayers"] => int(128)
      }
      [1] => array(6) {
        ["gq_hostname"] => string(21) "Default Breach Server"
        ["gq_address"] => string(13) "62.109.18.242"
        ["gq_port_client"] => int(27015)
        ["gq_online"] => bool(true)
        ["gq_numplayers"] => int(0)
        ["gq_maxplayers"] => int(128)
      }
    }
    Ответ написан
    3 комментария
  • Хранимые функции, как вернуть исключение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А вы при подключении к базе нужный режим установили?
    php.net/manual/ru/pdo.error-handling.php

    В самом MySQL можно генерировать ошибку командой SIGNAL
    Ответ написан
    2 комментария
  • Как выбрать последние записи по определенному полю?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT `k`.*
      FROM (
        SELECT `serial`, MAX(`event_date_time`) AS `event_date_time`
          FROM `keys`
          GROUP BY `serial`
      ) AS `d`
      JOIN `keys` AS `k`
        ON `k`.`serial` = `d`.`serial` AND `k`.`event_date_time` = `d`.`event_date_time`
    Ответ написан
    Комментировать
  • Возможно ли дехеширование при определенных условиях?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Хэширование, в общем случае, необратимо, потому что сам алгоритм хэширования не гарантирует взаимно-однозначного соответствия исходных данных и их хэша.
    Если исходные данные по размеру больше хэша, то очевидно, что найдётся несколько различных исходных данных с одинаковыми хэшами. Например, хэш-функция выдаёт 0 или 1 (один бит), а на вход поступили цифры от 0 до 7 (три бита).
    Если размер данных меньше или равен размеру хэша, то зависит от алгоритма. Промышленные алгоритмы строятся с хорошей равномерностью распределения хэшей, поэтому можно допустить, что на таких данных функция хэширования имеет примерно однозначное соответствие.
    Но, в любом случае, у функции хэширования нет простого алгоритма обратного преобразования.
    Ответ написан
    Комментировать
  • Как правильно работать с событием EVENT?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А откуда MySQL узнает, что надо выполнить этот эвент, если он лежит где-то в файле, а не в базе данных?
    Ответ написан
    Комментировать
  • Кто подскажет в чем трабл?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Переменная key не определена. Вы перепутали местами ключи и значения в объекте.
    Ответ написан
    Комментировать
  • А есть софт для форматирования диска при вводе неправильного пароля?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А смысл? Если диск зашифрован, то без правильного пароля или резервного ключа его всё равно не прочитать. А если не зашифрован, то просто подключаем его к другому компьютеру и сливаем всё не вводя никаких паролей.
    Ответ написан
    6 комментариев
  • Html в pdf что посоветуете?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Что-то вы не то делаете.
    <?php
    require_once 'mPDF/vendor/autoload.php';
    
    $mpdf = new mPDF('s','A4',8,'freesans',20,10,10,10);
    $mpdf->WriteHTML('<html><head></head><body><h1>Hello, world!</h1></body></html>');
    $mpdf->Output("hello_world.pdf", 'I');

    https://www.dropbox.com/s/f1os5qjit1y49rm/hello_wo...
    Ответ написан
    1 комментарий
  • Почему данный код не работает?

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Я так понимаю, что в результате в массиве routes у вас получается что-то наподобие #^#action/login$#. Собственно регулярным выражением при этом будет #^#, а всё, что записано дальше рассматривается как набор модификаторов.
    Ответ написан
    Комментировать
  • Что делает эта функция(вычислительная геометрия, Си)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это просто один из методов выделения памяти.
    Если мало n байт, выделим 2n. Если и этого мало, то 4n, 8n, ... 2kn.
    А 4 - это стартовое значение, оно используется если p->alloc ещё нулевое.
    Ответ написан
    5 комментариев
  • Как делают title жирным?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Легко
    https://unicode-table.com/ru/blocks/mathematical-a...
    Правда, часть символов в другом месте
    https://unicode-table.com/ru/blocks/letterlike-symbols/
    Ну и отображение будет зависеть от установленных в системе шрифтов.
    Ответ написан
    Комментировать
  • Как получить ближайшего родителя с уникальным селектором?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В цикле поднимаетесь по родителям элемента и проверяете каждый на "уникальность".
    Для id всё просто, если id есть, то он уникален.
    Для тэга тоже несложно, getElementsByTagName и проверяете список на количество элементов.
    Хуже всего для классов. Тут надо перебрать все их сочетания как отдельно, так и с именем тэга.
    А есть ещё и data-атрибуты, которые также можно использовать в селекторах в сочетании с классами и именем тэга.
    Ну и самое неприятное, на динамических страницах то, что было "уникальным" может перестать им быть в любой момент. Достаточно, например, убрать класс, обеспечивавший уникальность.

    Кстати, для li у вас уникальным родителем будет ul.
    Ответ написан
  • Как спроектировать БД с множеством связей?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Просто опишите сущности, которые у вас есть:
    шкаф (id, номер, описание)
    клеммник (id, id_шкафа, номер, описание)
    кабель (id, id_шкафа1, id_шкафа2, номер, описание)
    жила (id, id_кабеля, id_клеммника1, id_клеммника2, номер, описание)
    Ответ написан
    Комментировать
  • Как сделать выборку в MySQL из двух таблиц с исключением совпадений во второй?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT ...
      FROM `orders`
      WHERE `id` NOT IN (
        SELECT `order_id`
        FROM `order_items` 
        WHERE `item_id` IN (
          SELECT `id`
          FROM `items`
          WHERE `name` LIKE '%красн%'
        )
      )
    Ответ написан
    Комментировать
  • Как правильно написать триггер?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Перед созданием триггера:
    DELIMITER $$
    После создания:
    $$
    DELIMITER ;

    Иначе точки с запятыми внутри команды CREATE TRIGGER рассматриваются как её завершение.
    Ответ написан
  • Не работает javascript - preventDefault как сделать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    (elements[i].id === id).addEventListener(...)
    А зачем навешивать слушатель на логическое значение? Результат операции === либо true, либо false.
    Ответ написан
    Комментировать
  • Одна ошибка на 4 прогоне [в Test 7] в MemTest86, страшно ли это и что делать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Если вас не пугают абсолютно непонятные глюки компьютера и потеря информации, то, конечно, некритична.
    2. Шансов нет, аппаратные проблемы переустановкой Windows не решаются.
    3. Прогонять по одной, потом, если ничего не найдётся, то в различных комбинациях. При этом каждый тест проводить длительное время (до суток) или до выявления ошибки.
    Ответ написан
    3 комментария