• Как проверить принадлежат ли массивы из одной таблицы массивам в другой?

    @alexalexes
    С помощью функции json_to_recordset проводите нормализацию таблиц, чтобы на выходе pair получилась вот такая псевдотаблица-выборка:
    pair
    id_group, name
    1, "ананас",
    1, "апельсины",
    2, "ананас",
    2, "арбуз"
    ...
    Дальше тоже самое делаете с order_list.
    Ну, а дальше все приведено в 3-ю нормальную форму, можно, наконец, использовать SQL-ные сравнения/соединения этих псевдовыборок и высчитывать кол-ва того-сего.
    PS: Такое решение годится как разовое для получения результата, например, если вам нужно срочно сделать нестандартный отчет для руководства, а структура таблиц спроектирована из рук вон плохо.
    Нужно изначально планировать структуру базы так (приводить к 3-й нормальной форме), чтобы не прибегать к декомпозиции полей с помощью функций JSON, если компоненты внутри JSON будут использоваться для соединения между таблицами.
    Ответ написан
  • Как передавать один параметр, а не 3?

    @alexalexes
    FROM views v JOIN memes m JOIN comments c
    Вы конечно, не указали, в какой СУБД пишете, но странно видеть JOIN без ON или USING.
    Если это эквивалент синтаксиса с USING, то вы увидите статистику, если по пользователю есть И просмотры, И мемы, И комментарии. Если в одной из таблиц не будет записей, то пользователь вывалится из статистики.
    Если это эквивалент:
    FROM views v, memes m, comments c
    То такое декартово произведение таблиц с использованием distinct будет не производительно.
    Рационально вам написать такое:
    SELECT (select COUNT(v.id) from views v where v.user_id = u.user_id )      AS просмотры,
           (select COUNT(DISTINCT v.meme_id) from views v where v.user_id = u.user_id) AS [уникальные просмотры],
           (select COUNT(m.id) from memes m where m.user_id = u.user_id)      AS [выложено мемов],
           (select COUNT(c.id) from comments c where c.user_id = u.user_id)      AS [написано комментариев]
      FROM users u -- лучше связаться с таблицей users
     WHERE u.user_id = 1

    Тогда каждый подзапрос будет работать по своей агрегации (да, если по какой-то таблице не будет записей, то вы увидите по ней ноль, а не пустую строчку по всем параметрам), дистинктовать вам нужно только по параметру уникальные просмотры - но его использование не связано с размножением записей при объединении таблиц, так что он посчитает его достаточно быстро.
    PS: Если вы не забыли создать индексы для v.user_id, v.meme_id, m.user_id, c.user_id, то должно все летать на космической скорости.
    Ответ написан
  • Как копировать текст вместе с буллитами?

    @alexalexes
    Все зависит от стороны, откуда копируют в буфер обмена, и от стороны куда вставляют из буфера обмена.
    Если приложение, из которого копируют текст не засылает разметку в буфер обмена, то проблема в этом приложении.
    Если приложение, в которое вставляют текст из буфера обмена не воспринимает разметку, то проблема в нем.
    Чтобы узнать, в какой части проблема, нужно провести обмен текстом в третьем приложении, которое точно может работать с разметкой в буфере обмена, например, в офисном текстовом редакторе (не путать с простыми блокнотами), и посмотреть с каким из двух приложений не происходит обмен разметкой.
    Ответ написан
  • Как вывести id?

    @alexalexes
    1. Вычисляете агрегированную выборку - подзапрос A.
    2. Сортируете выборку в том порядке, как собираетесь нумеровать - подзарос B.
    3. Нумеруете строки доступной функцией в конкретной СУБД (в Oracle это rownum, в остальных средах есть row_number, в MySQL 5 версии нужно делать костыль из пользовательской переменной @ и if-a).
    select rownum, B.*
    from (select A.*
                from (SELECT v.user_id,
                      u.nickname,
                     COUNT(DISTINCT v.meme_id) as meme_count
                    FROM views as v
                       join  users u on u.id = v.user_id
                   GROUP BY v.user_id, u.nickname) A
            order by A.meme_count desc) B
    Ответ написан
  • Как закрыть доступ к странице, если пользователь не авторизован?

    @alexalexes
    Ну, так основное правило в вебе касаемо кейса "сделать ресурс закрытым от пользователей, у которых нет прав" - это не спрятать ссылки на этот ресурс (в вашем случае дать пользователю редирект). А не давать пользователю получать данные на самом ресурсе, куда ведут ссылки.
    То есть, вам нужно чекать авторизацию и набор необходимых прав (если есть разделение на роли, помимо наличия факта авторизации), не только для редиректа, но и на самом ресурсе, куда пользователь может попасть любым путем (на personal_product.php).
    PS:
    $select = mysqli_query($conn, "SELECT * FROM employers WHERE username='$username' AND password='$password'");

    За склейку параметров запроса в виде строки, нужно давать высшую меру наказания и вам, и автору статьи, откуда вы срисовали этот пример. Используйте, подготовленные запросы. Наказание отяжелено еще тем, что в mysqli_* функциях есть весь инструментарий, чтобы сделать запросы безопасными, и не учить никого как это делать иначе.
    Ответ написан
    1 комментарий
  • Почему лагает курсор мыши при запуске торрентов?

    @alexalexes
    Можно в роутере зафиксировать канал wifi в крайнее меньшее или большее значение, если он свободен (точки доступа соседей не мешают).
    Либо отключить в роутере диапазон частот 2,5ГГц (в этом диапазоне работают большинство радиомодулей мышей и клавиатур), оставить только 5ГГц. Если все устройства могут подключаться по 5ГГц и держать приемлемый уровень сигнала.
    Ответ написан
    Комментировать
  • Как позвонить с пк или ноутбука Windows 10 если нет Bluetooth?

    @alexalexes
    В Windows 10 есть форма "Приложения по умолчанию", где связываются приложения и расширения файлов - какие файлы каким приложением открывать.
    Если обратить внимание, то в этой форме есть переход на другую форму - "Выбор стандартных приложений для протоколов". В этой форме вас интересует протокол TEL (url:tel). Именно, то что вы установите в качестве приложения в этом протоколе будет вызываться браузером, когда будете кликать на телефонные ссылки на странице.
    Ответ написан
    1 комментарий
  • Как сделать категории в интернет магазине?

    @alexalexes
    Пишется один рекурсивный запрос одного из видов (или оба вида, чтобы два раза не вставать).
    1) Получения списка детей, если известны параметры родителя (до определенного уровня, с пропуском неважных уровней).
    2) Получения списка предков (до определенного уровня, с пропуском неважных уровней), если известны параметры ребенка.
    Выносите эти запросы в секцию with, даете им понятные псевдонимы.
    Далее ниже по тексту пишите уже привычные запросы, используя эти псевдонимы, словно это view или кеш-таблицы.

    PS: Если иерархическая выборка нужна в подзапросе, и она зависит от изменяемых в ходе выборки входных параметров ребенка/родителя, то тут нужно выносить 1 и 2 в хранимые функции, где результат функции будет табличный курсор. При использовании результата этого курсора, обычно, делают преобразование результата функции в тип "таблица" через выражения cast.
    Ответ написан
    Комментировать
  • Как работать с меню, где нет сетевых дисков?

    @alexalexes
    Можно создать на одном из дисков символическую ссылку на сетевой диск. С точки зрения такого проводника она будет восприниматься как каталог.
    Ответ написан
    Комментировать
  • Можно ли идентифицировать человека по измененному голосу?

    @alexalexes
    У речи помимо звуковых характеристик есть еще и другие.
    Скорость произношения, паузы между словами, ударения, дефекты произношения, акцент, говор.
    Если анализировать среди малой группы людей, то при детальном анализе речи, а не голоса, изменение голоса не поможет замаскироваться.
    Ответ написан
    Комментировать
  • Как сделать регулярное выражение на проверку телефона и замену первой цифры на 7?

    @alexalexes
    Любым способом посимвольного перебора строки чистите ее по такому принципу:
    1) Первый символ может быть + или цифра.
    2) Второй и последующие символы - только цифры.
    Далее, если в начало входит 8, значит заменяете на +7. И вообще, можете применить любое форматирование: где-то поставить скобки, где-то дефисы.
    Если у вас только российские номера, можете ругнуться, если что-то вначале идет не на 8 и не +7 (и не на 9, если пользователь не стал писать код, а сразу перешел к префиксу оператора, тогда автоматом нужно дописать +7).
    Ответ написан
    Комментировать
  • Как скрыть строку *?

    @alexalexes
    Припаркую свой велосипед.
    $input = 'Привет мир!';
    $input_len = mb_strlen($input);
    $output = join('', array_map(function($index, $char) use ($input_len)
                                 {
                                 	return $index > 1 && $index + 1 < $input_len ? '*' : $char;
                                 }, array_keys(mb_str_split($input)), mb_str_split($input)
                                )
                  );
    echo $output;
    Ответ написан
  • Как правильно округлять числа меньше нуля?

    @alexalexes
    Выводить с заданной точностью:
    printf("%.1f", c);
    Ответ написан
  • Какую подобрать видеокарту по таким параметрам?

    @alexalexes
    Из более-менее новых карт, и народных по распространенности - 1660 можно без super.
    Можно с ali, но осторожно.
    Все остальные более ранние карты - уже музейные экспонаты, или уже доживают свой ресурс.
    Ответ написан
    Комментировать
  • Обтекание блочного элемента: как реализовать?

    @alexalexes
    Если отсутствие поддержки Internet Explorer не пугает, то можете воспользоваться свойством shape-outside.
    htmlbook.ru/blog/vvedenie-v-css-shapes
    https://developer.mozilla.org/en-US/docs/Web/CSS/s...
    Ответ написан
    4 комментария
  • Что такое выражение в SQL?

    @alexalexes
    Выражение, это значит, что в месте между, например, select и запятой может не только выбираться значение столбца (выполняться тривиальное действие):
    select col1, -- извлекли содержимое колонки - вполне тривиальное действие
               col2 from table1

    Но выполнятся более функциональное действие, требующее от планировщика запросов разобрать что-то, что находится до селекта и запятой (почему что-то? - это и есть выражение))) ):
    select (col1 + col2) * 10 as result, -- а тут уже применили ариф. операции - написали выражение
               col2 from table1

    В аргументах функции вы можете передавать не только значения, которые содержатся в колонках, но и как-то предварительно их вычислять с помощью арифметики, склеивания строк, преобразования типа, выбора логического варианта с помощью case, вставлять другую функцию и т.д.
    Ответ написан
    Комментировать
  • Как получить все id подписчиков в VK через API?

    @alexalexes
    Давайте методом аналогии.
    У вас есть путь в 204938 мм, его нужно промерить линейкой в 1000 мм, чтобы "пощупать" каждый мм?
    Можно выставлять ноль линейки на offset количество мм, но нельзя удлинять линейку.
    Нужно взять линейку поставить ноль на 0 мм пути (offset = 0), сделать замер (выборку подписчиков) и переставить ноль линейки на 1000 мм вперед (offset = 1000), опять сделать выборку, потом опять переставить на тоже расстояние вперед (offset = 2000) и так, пока у вас offset не станет >= 204938, или пока вам API не запретит делать следующий замер.
    Ответ написан
  • Как найти максимальную мощность WiFi точки доступа?

    @alexalexes
    Есть к примеру airodump-ng но не отображается имя сети и нет графика который бы показывал мощность сигнала во времени.

    ESSID - же? Если имени сети нет, то оно скрыто настройками точки доступа и в трафике вы его не увидите. Если свою точку анализируете, то вы легко определите BSSID и ни с чем его не спутаете.
    График? А зачем вам рюшечки? Статистика и так собирается в реальном времени и обновляется в консоли - этого достаточно.
    Чтобы сделать более активный сбор статистики, то заставьте работать свою точку более активно. Включите, например, youtube, на другом устройстве, которое тоже подключено к вашей точки доступа, и точка доступа будет активно обмениваться пакетами и в мониторинге это будет видно.
    Ответ написан
    3 комментария
  • Блок Питания начал жестка шуметь, варианты?

    @alexalexes
    Несите свой ПК на обслуживание. Пусть мастер посмотрит что с вентиляторами. Может пора смазать или заменить вовсе, или банально убрать валик волос и пыли, или закрепить получше кабели, чтобы не провисали на лопасти.
    Ответ написан
    1 комментарий
  • Можно ли использовать две переменные в switch case?

    @alexalexes
    У true программистов всегда было много вопросов к switch (как в свое время к go to). Поэтому в любой непонятной ситуации используйте цепочку if else, так вы будите ближе к строгим стандартам.
    if(a > b) {
      alert(a + b)
    } else if(a < b) {
        alert('Lorem Ipsum terebismum')
    } else {
        alert('Isn"nt number')
    }
    Ответ написан
    Комментировать