• Как разбить строку и сравнить 2 массива в SQL?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    SELECT resources.name
    FROM resources
    WHERE resources.code REGEXP (
        SELECT REPLACE(countries.code, ',', '|')
        FROM countries
        WHERE countries.name='test1'
        LIMIT 1
    )
    Ответ написан
    Комментировать
  • Как узнать кто какие ресурсы кушает?

    Immortal_pony
    @Immortal_pony
    top -o %MEM
    Сортировка по расходуемой оперативной памяти. Можно сортировать и по другим параметрам.
    Ответ написан
    Комментировать
  • Исчезновение див при скролле вверх, будучи скрытым через стиль сайта display: none до нажатия на кнопку?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    На событие "scroll" повесьте обработчик, который будет проверять, что расстояние от верхней точки документа (scrollTop) необходимое для сокрытия футера.
    Ответ написан
    2 комментария
  • Что не так с моей валидацией в yii2?

    Immortal_pony
    @Immortal_pony
    В представлении разрешите ajax-валидацию:
    <?php $form = ActiveForm::begin([
        'enableAjaxValidation' => true,
        'validationUrl' => ["site/entry"] // опциональный параметр, указывает метод для валидации. По умолчанию обработчик формы.
    ]); ?>


    В контроллере проводите валидацию:
    if (Yii::$app->request->isAjax) {
        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    
        $model->load(Yii::$app->request->post());
        return \yii\widgets\ActiveForm::validate($model);
    }


    PS В консоли разработчика браузера убедитесь, что запросы уходят и ответы корректные приходят. Это поможет в решении других ошибок ;)
    Ответ написан
    1 комментарий
  • Что использовать для администрирования MySQL?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    Лучший - SQLyog,
    Бесплатный - Valentina Studio.
    Ответ написан
    Комментировать
  • Как посчитать количество в json файле?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Если интересует только количество и объект "item" неизменен, то так:
    Object.keys(myObject.items).length

    Если же интересует какая-то более сложная логика, то, например, так:
    var fullCost = 0;
    
    for (itemIndex in myObject.items) {
        var item = myObject.items[itemIndex];
        var quantity = (typeof item.SIMPLE_BASKET_QUO !== 'undefined' ? Number(item.SIMPLE_BASKET_QUO) : 0);
        var price = (typeof item.SIMPLE_BASKET_PRICE !== 'undefined' ? Number(item.SIMPLE_BASKET_PRICE) : 0);
    
        fullCost += quantity*price;
    }
    Ответ написан
    Комментировать
  • Проблема с iPhone при скролле?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Многие Iphone'ы не умеют в position:fixed.
    Пример костыля
    Ответ написан
    Комментировать
  • Как создать массив и когда происходит POST добавлять в него значение?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Я так понимаю, что вы хотите сохранять данные о заказах. Для этого вам необходимо использовать какое-либо хранилище данных. Наилучшим выбором будет какая-нибудь база данных (MySQL, PostgrSQL, и т.д.). Примитивнейшим же способ хранения данных будет файл. Ниже предоставляю пример реализации. Прошу обратить внимание на то, что код не идеален, упрощен для наглядности. Перед использованием необходимо убедиться, что пользователь, от имени которого работает web-сервер имеет доступ на запись файлов.

    private $orders_filename = "orders.serialized";
    
    public function getOrders()
    { 
        // Создание массива по умолчанию
        $orders = [];
       
        // Попытка считывания данных их файла
        if (file_exists($this->orders_filename)) {
            // Чтение файла и запись его содержимого в переменную
            $file = file_get_contents($this->orders_filename);
    
            // Десериализация строки в массив
            $orders = unserialize($file);
        } 
    
    
        return $orders;    
    } 
    
    
    
    public function addOrder($order)
    { 
        // Получения списка заказов
        $orders = $this->getOrders();
        // Добавление нового заказа 
        $orders[] = $order;
        // Сериализация массива (превращение его в строку):
        $serialized_orders = serialize($orders);
        // Сохранение файла
        $result = file_put_contents($this->orders_filename , $serialized_orders, FILE_APPEND | LOCK_EX);
    
    
        return $result;
    }
    
    
    
    public function order()
    {
            $order = [
                '1' => 'банан',
                '2' => 'помидор',
            ];
    
           $this->addOrder($order);
    }
    Ответ написан
  • Как сверстать круглую шкалу?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Как правильно подключить MySQli в отдельном файле?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Для того, чтобы код работал, необходимо импортировать переменную $db из глобальной области видимости.
    function login($name, $password)
    {
        global $gb;
        $mysqli= $db->connect();
    }


    Чуть более правильным вариантом будет явное указание зависимости вашего класса от базы данных:
    class user {
        private $db;
    
        public function __construct(DataBase $db)
        {
            $this->db = $db;
        }
    
        public function login($name, $password)
        {
            $mysqli = $this->db->connect();
        }
    }
    
    // Инициализация класса будет выглядеть так:
    $user = new user($db);
    $user->login();


    PS Судя по коду, вы пытаетесь использовать какие-то устаревшие справочные материалы. Пожалуйста, ознакомьтесь с getjump.me/ru-php-the-right-way
    Ответ написан
    Комментировать
  • Как передать в функцию ID?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    В первом случае функция ожидает, что вы передадите product_id при вызове и вы, таки, это делаете:
    'add': function(product_id) { // в этой строке объявляется функция, которая ожидает в качестве аргумента product_id
    
    /* *** */
    
    onclick="instock.add('<?php echo $product['product_id']; ?>');" // при клике вызывается объявленная ранее функция и ей передается product_id


    Во втором же случае product_id нигде не передается. Исправить это можно так:
    <!-- Кнопке добавлется data-атрибут "data-product-id", куда записывается product_id: -->
    <button type="button" data-product-id="<?= $product['product_id'];?>" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="instock.add('<?php echo $product['product_id']; ?>');"><?php echo $buttonundersell_title; ?></button>


    $(document).on("click touchstart", "#undersell-order-submit", function (product_id) {
        var product_id = $(this).closest('form').find('button[data-product-id]').data('product-id'); // Получение product_id из data-атрибута.
    
        $.ajax({
            /* *** */
    Ответ написан
    Комментировать
  • RSS - без проблем открывается в браузере, но никак не загружается через PHP. Почему?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Данный код рабочий (проверил у себя). Результат: prntscr.com/bh7uvu
    $context = stream_context_create(array(
      'http' => array(
        'method' => 'GET',
        'protocol_version' => '1.1',
        'header' => array(
          'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0',
        )
      )
    ));
    $r = file_get_contents($url, false, $context); 
    var_dump($r);
    Ответ написан
    Комментировать
  • Как спарсить div со страницы?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Во-первых, у Ленты есть RSS, привязываться к верстке нежелательно:

    На момент запуска нового сайта доступны следующие RSS:

    /rss/news — новости
    /rss/top7 — самые свежие и самые важные новости
    /rss/last24 — главные новости за последние сутки
    /rss/articles — все статьи
    /rss/columns — колонки
    /rss/news/russia — новости рубрики «Россия»; после косой черты можно написать английское название любой рубрики — обращайте внимание на их url (например, /rss/news/world — это уже все новости рубрики «Мир»)
    /rss/articles/russia — все статьи рубрики «Россия»; управление рубриками аналогичное
    /rss/photo — все галереи
    /rss/photo/russia — все галереи рубрики «Россия»; управление рубриками аналогичное


    Во-вторых, что касается парсинга XML, то регулярные выражения для этого использовать также не лучшая идея. Их вообще лучше никогда не использовать при возможности. Распарсить XML можно с помощью SimpleXML или Nokogiri. И конкретно для RSS есть несколько библиотек.

    Пример:
    libxml_use_internal_errors(true); // Не провоцировать генерацию ошибок в php из-за ошибок разбора html 
    
    $html = file_get_contents("https://lenta.ru/news/2016/06/02/trol/");
    $page = new domDocument();
    $page->loadHTML("<?xml version='1.0' encoding='UTF-8'?>" . $html); // Явное указание кодировки полученных данных
    
    $article = "";
    $domXpath = new DOMXPath($page);
    $newDom = new DOMDocument();
    $newDom->formatOutput = true;
    
    $filtered = $domXpath->query("//div[@itemprop='articleBody']");
    $i = 0;
    while ($item = $filtered->item($i++)) {
        $node = $newDom->importNode($item, true);
        $newDom->appendChild($node);
    }
    
    $article = $newDom->saveHTML();
    libxml_clear_errors(); // Очищение буфера ошибок.
    Ответ написан
  • Как заменить одну ссылку в хлебных крошках?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    $('a[href="site/catalog/mylti_visu"]').attr('href', 'site/visa/multiviza');
    Ответ написан
  • Как импортировать php файла через js?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Думаю такое условие и на php можно задать

    Это мнение ошибочно. PHP-код выполняется на сервере до того как его получает клиент. Соответственно, в в момент выполнения система ничего не знает о клиенте.
    Ответ написан
  • Как получить значения из двух таблиц БД?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    А зачем вы заключаете названия столбцов в апострофы? Вы понимаете, что вы сравниваете эти строки, а не значения столбцов?

    Пример из вашего кода:
    ## Строка с лишними апострофами в условии:
    LEFT JOIN `users_info` ON 'order_info.id_user'='users_info.id_user'
    
    ## Код, идентичный предыдущему:
    LEFT JOIN `users_info` ON 'какая-то чепуха'='другая чепуха'


    Добиться необходимого результата можно, например, так:
    LEFT JOIN `users_info` ON order_info.id_user=users_info.id_user
    Ответ написан
    2 комментария
  • Можно ли хранить приватные данные пользователя в текстовых файлах вместо БД?

    Immortal_pony
    @Immortal_pony
    Решение имеет право на существование, именно так работают сессии в PHP.
    Ответ написан
    3 комментария
  • MySQL. Как избавится от одинаковых записей (i,j и j,i) в запросе?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    Не совсем указанным способом, но на мой взгляд решает задачу.
    Запрос ищет все модели, у которых совпадают значения RAM и SPEED. Также, я не стал ограничиваться парами, так как моделей может быть более двух.

    SELECT 
    	GROUP_CONCAT(pc.`model` SEPARATOR ', ') AS 'models',
    	pc.`speed`,
    	pc.`ram`
    FROM pc
    GROUP BY pc.`speed`, pc.`ram`
    HAVING COUNT(*) >= 2
    Ответ написан
    1 комментарий
  • Почему не определяется подключенный jquery в wordpress?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Во-первых, в wp_enqueue_scripts третьим аргументом передаются зависимости. Убедитесь, что при подключении своих скриптов вы выставляете им зависимость от jquery.

    Во-вторых, jquery в WP по умолчанию подключается в режим "noConflict", что означает, что используется переменная "JQuery", а не "$".
    Для использования переменной "$", вам необходимо написать следующий скрипт:
    var $ = jQuery.noConflict();
    ... и подключить стандартными средствами, не забыв указать и его в зависимостях у своих скриптов.
    Ответ написан
    1 комментарий
  • Логирование при микросервисной архитектуре?

    Immortal_pony
    @Immortal_pony Куратор тега PHP

    Вопрос как сопоставить это с логами от первой части системы, например если было передано 10 тыс. задач а выполнено 9,9 тыс.

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

    В приведенном вами примере у второй системы должна быть приблизительно следующая логика:

    1. Получили данные, записали в лог.
    2. Закинули данные в БД, записали в лог.
    3. Отправили первой системе квиток о принятии данных. Записали в лог.
    4. Начали обработку единицы данных. Поменяли ей статус в БД на "Обрабатывается". Записали в лог.
    5. Обработали данные. Поменяли статус в БД на "Успешно" или "Провалено". Записали в лог.
    ...
    Ответ написан