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

    @alexalexes
    Если save_id - внешний ключ (некий идентификатор конфига), то полноту наличия всех параметров (и width_surface, и height_surface), а также отсутствие других параметров можно трактовать так:
    Select t1.save_id, t1.meta_key, t1.meta_value, t2.meta_key as t2_meta_key, t2.meta_value as t2_meta_value
    from cpl_save_meta t1
    join cpl_save_meta t2 on t1.save_id = t2.save_id
                    and t1.meta_key = 'width_surface'  and t1.meta_value = '2.6'
                    and t2.meta_key = 'height_surface' and t2.meta_value = '3.53'
    where (select count(*) from cpl_save_meta t3
            where t3.save_id = t1.save_id
              and t3.meta_key not in ('width_surface', 'height_surface')) = 0
    Ответ написан
  • Как найти дубли в массивах postgres?

    @alexalexes
    Если это можно декомпозировать до 3-ей нормальной формы базы данных, то лучше сделать это, иначе придется использовать костыль из 4 функций, чтобы выйти на значения в этих массивах и хоть как-то работать потом с ними в запросах.
    select a.* from
    (
      select b.id, b.split_value, count(b.id) over (partition by b.split_value) as v_count
      from
      (
        select c.id, cast(unnest(string_to_array(translate(c.value,'{}',''),',')) as INTEGER) as split_value
        from
        ( -- имитация данных таблицы
          (select 0 as id, '{1,2,3}' as value) union all
          (select 1, '{4, 5}') union all
          (select 2, '{3, 6}') 
        ) c
      ) b
    ) a
    where a.v_count > 1

    Решение Б (исходные данные - тип массив).
    select a.* from
    (
      select b.id, b.split_value, count(b.id) over (partition by b.split_value) as v_count
      from
      (
        select c.id, unnest(c.value) as split_value
        from
        ( -- имитация данных таблицы
          (select 0 as id, array[1,2,3] as value) union all
          (select 1, array[4,5]) union all
          (select 2, array[3,6]) 
        ) c
      ) b
    ) a
    where a.v_count > 1
    Ответ написан
    2 комментария
  • OpenWRT+PHP7 "Ошибка Call to undefined function mysqli_connect()" не понимаю что делать?

    @alexalexes
    Поиск по OpenWRT ресурсам говорит, что, возможно, проблема в конкретной сборке OpenWRT.
    Попробуйте воспользоваться советом:
    Try this. Check /etc/php7/

    Rename 20_mysqli.ini to 30_mysqli.ini, or delete 20_mysqli.ini if both exist. If you also have 20_openssl.ini there, rename that to 10_openssl.ini.
    Above change is needed to load the modules in the correct order.
    This should now be fixed in the latest builds, but you could be running older code, or suffering from the bug that was there earlier.
    Ответ написан
    1 комментарий
  • Зачем присваивать переменной результат readdir()?

    @alexalexes
    Функция readdir(), как правило, используется вместе с while.
    За один цикл нужно только один раз вызвать readdir, чтобы можно было поработать с дескриптором элемента каталога, не перейдя на другой элемент, поэтому появится такая неуклюжесть :
    while(true)
    {
      $f = readdir($d);
      if($f === fasle)
      {  break; }
      // Сделать что-то с $f в противном случае.
    }

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

    @alexalexes
    Перечислите, какие столбцы вставить, и забейте недостающие данные null-ами, если допускается null-значение в колонке, если нет, то каким-нибудь значением по умолчанию.
    insert into orders (column_1, column_2, column_3)
    select column_1, column_2, 'default_value' fake_column
    from basket

    PS: fake_column может быть не только задано статичным значением из текста запроса, но и вычислено подзапросом (и даже хранимой или какой-нибудь функцией), возвращающим скалярное значение:
    insert into orders (column_1, column_2, column_3)
    select column_1, column_2, (select count(*) from basket) fake_column
    from basket
    Ответ написан
    2 комментария
  • Как перекрасить таблицу?

    @alexalexes
    У таблицы есть класс white_border, если он используется только на этом элементе, то можете использовать такой селектор после всех селекторов, описывающие общие стили таблиц:
    table.white_border,
    table.white_border th,
    table.white_border td
    {
        border-color: ваш цвет;
    }
    Ответ написан
  • Как правильно преобразовать text в дату?

    @alexalexes
    Используйте STR_TO_DATE() вместо DATE_FORMAT, атрибута DOC_TIME это тоже касается.
    PS: Использование этого поля без функции преобразования для операций сравнения не имеет смысла. В этом преступление предыдущего разработчика, выбравшего не тот тип данных.
    Ответ написан
    Комментировать
  • Как сменить select средствами jquery?

    @alexalexes
    Для такой тривиальной операции jquery не нужен:
    document.querySelector('select[name="product[status]"]>option[value="0"]').selected = true;
    Ответ написан
    Комментировать
  • Где найти смену ссылки в jS?

    @alexalexes
    Скрипт обфусцирован. Логику его работы можно понять только по поведению dom-элементов.
    5de931052ee5a459163007.png
    a-контейнер одного элемента img лежит точно над другим a-контейнером другого img-элемента.
    И попеременно меняется style у a-контейнеров. В переходном процессе используется изменение свойства прозрачности и отображения, за счет чего достигается плавная смена одного изображения на другое.
    Ответ написан
    Комментировать
  • Как подключить на одной странице к одному phpmailer-файлу две формы?

    @alexalexes
    Можно. Самое главное, мы не подключаем php-скрипт, а отправляем данные этих форм на обработку этим php-скриптом. Так проще прийти к пониманию, как оно работает.
    Чтобы php-скрипт мог воспринимать данные первой формы, он должен уметь пренебрегать наличием параметра user_car.
    А делается это таким образом:
    строчка:
    $car = $_POST['user_car'];
    исправляется на:
    $car = array_key_exists('user_car', $_POST) ? $_POST['user_car'] : null;

    и другая строчка:
    $mail->Body    = '' .$name . ' хочет перегнать машину ' .$car. '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;

    исправляется на:
    $mail->Body    = $name . ' хочет перегнать '.(is_null($car) ? 'неуточненную машину' : 'машину ' .$car). '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;

    PS:
    Чтобы вам не прислали js-инъекцию на почту, все принимаемые параметры, из которых формируется текст письма, следует экранировать.
    $name = htmlspecialchars($_POST['user_name']);
    $phone = htmlspecialchars($_POST['user_phone']);
    $car = array_key_exists('user_car', $_POST) ?  htmlspecialchars($_POST['user_car']) : null;
    $from = htmlspecialchars($_POST['from']);
    $to = htmlspecialchars($_POST['to']);
    Ответ написан
    Комментировать
  • Как работает цикл while в моем примере?

    @alexalexes
    Сделайте подробную трассировку решения.
    Код объяснит себя сам как он работает.
    let j = 1;
      while (i > 0) {
        i--;
        out15.textContent += 'шаг цикла=' + j + '; ' + 'i='+ i + '; (10-i)='+(10-i)+'<br/>';
       j++;
      }
    Ответ написан
    Комментировать
  • Как удалить добавленный класс?

    @alexalexes
    Скорее всего код удаления класса будет выглядеть так:
    $('.close-popup').on('click', function(event){
        $('.clicked').removeClass('clicked');
        event.stopPropagation();
      });

    PS: Обратите внимание на наличие дескриптора event во входном параметре обработчика события.
    PPS: Справка по теме всплытие и погружение в JS.
    Ответ написан
    Комментировать
  • Как закодировать URL utf8 в cp1251?

    @alexalexes
    Если проанализировать сервис https://service.webboss.pro/urlencode-urldecode , то в нем используется файл https://webboss.pro/js/plugin/urlencode.js , в котором есть функция convert_to_cp1251(str).
    Возможно, этого вам будет достаточно.
    Ответ написан
    3 комментария
  • Несколько массивов вместо одного?

    @alexalexes
    $description1[] = array([..................])
    Обратите внимание сколько раз тут объявлен массив в массиве.
    array([]) - это аналогично [[]] или array(array())
    PS: Для того, чтобы не путаться впредь, перестаньте использовать один из способов.
    Либо array() если у вас php 5.6-
    либо [] если php 5.6+ (это предпочтительней - стильно, модно молодежно, похож на JS)
    Ответ написан
  • Не могу понять работу метода .map?

    @alexalexes
    **
    Пройдемся по массиву и вернем новый массив с такими элементами:
    Если шагнули на нулевой элемент (index == 0), то вернем слово как элемент в новый массив как есть (.... ? word : ....)
    Если шагнули на ненулевой элемент, то Меняем регистр у первой буквы (... : word[0].toUpperCase() + word.slice(1)...) и вернем результат как элемент в новый массив.
    Ответ написан
    Комментировать
  • Winwheel.js Как высчитать на каком сегменте остановится колесо?

    @alexalexes
    Читайте комментарий.
    // This formula always makes the wheel stop somewhere inside prize 3 at least
    // 1 degree away from the start and end edges of the segment.

    Сектор "Приз 3" находится за 90-ым градусом по часовой стрелке.
    Чтобы попадать туда, минимально число должно генериться чуть более 90, например, 91.
    Рандом генерирует веществ. числа в интервале 0...1.
    Нам нужно не выбежать из сектора за верхнюю границу.
    Секторов 8, на один сектор приходится 45 градусов.
    91 + 45 = 136 градусов, убежали в следующий сектор.
    Берем 44, оказываемся на границе секторов.
    Берем 43 - то, что надо, нашли верхний предел генерации параметра (134 градуса).
    PS:
    91 - это минимальный параметр;
    43 - макс. внутрисекторное смещение.
    Ответ написан
    2 комментария
  • Как определить переменную в зависимости от размера картинки?

    @alexalexes
    Определяете с помощью метрики - пропорции:
    $p = $imgwidth * 1.0 / $imgheight; // пропорция; умножение на 1.0 чтобы перевести число в float;
    $delta_q = 0.1; // Дельта ощущения "квадратности" изображения
    switch(true)
    {
      case $p > (1.0 +  $delta_q): echo 'альбомный формат изображения'; break;
      case $p < (1.0 - $delta_q): echo 'книжный формат изображения'; break;
      default: echo 'изображение, вероятно, квадратное'; 
    }

    Когда у вас пропорция $p == 1.0 , то изображение строго квадратное.
    Чтобы избавиться от строгости, вводится дельта $delta_q, дабы считать квадратными изображения, в пропорции "слегка" меньше единицы и "слегка" больше единицы.
    Ответ написан
    Комментировать
  • Как производить расчёты в процентах?

    @alexalexes
    1) Вычисление процентных долей - это вопрос к методу вычисления.
    2) Разделитель добавляется с помощью метода join при выводе массива:
    text.innerHTML = arr.join(', ');
    Дисконт лучше считать вне цикла, и завести под него отдельный массив:
    var dis = arr.map(function (item)
    {
      return Math.round(item - item * (5 / 100.0));
    });

    https://codepen.io/anon/pen/rgLBpd
    Ответ написан
    Комментировать
  • Учить PHP 5 или 7?

    @alexalexes
    Пока не появится реальная задача - вообще бесполезное метание.
    Читать про то и про другое, потом что-то пытаться накодить.
    Однако, по-настоящему вы освоите ту или иную версию, когда будете работать над реальным серверным приложением/сайтом.
    Ответ написан
    Комментировать