• Почему не вносятся изменения в БД?

    @alexalexes
    1. Нужно использовать подготовленные запросы, а не делать по старинке через mysqli_real_escape_string.
    2. Если вы текстом написали запрос update, он еще не начнет выполнятся, где-то нужно запустить execute.
    if(isset($_POST['ref_button']) )
    {
        $send_ref = $_POST["send_ref"];    
        $stmt = msqli_prepare($con, "SELECT * FROM usertable WHERE referral= ?");
        mysqli_stmt_bind_param($stmt, 's', $send_ref);  // s - тип данных строка, i - число, если не тот тип данных - нужно исправить
        $result = mysqli_stmt_execute($stmt);
        if(mysqli_num_rows($result) > 0)
        {
            $stmt = msqli_prepare($con, "UPDATE usertable SET owner = ? WHERE email = ?");
            mysqli_stmt_bind_param($stmt, 'ss', $send_ref, $email); // s - тип данных строка, i - число, если не тот тип данных - нужно исправить
            $result = mysqli_stmt_execute($stmt);
        }
    }
    Ответ написан
    Комментировать
  • При каких знаниях первого яп можно начинать изучение второго?

    @alexalexes
    Пока не начнете делать проект, решающий какую-то насущную потребность (вашу - без денежного вознаграждения, или чужую - за денежное вознаграждение), можете всю жизнь просто интересоваться хоть одним языком программирования, хоть несколькими.
    Запомните, пока вы вне таких проектов что-то делаете, вы просто интересуетесь инструментарием, вы ничего не учите.
    Ответ написан
    Комментировать
  • Почему sql запрос не определяет имя таблицы, если записывать имя через prepare?

    @alexalexes
    1. В качестве входных параметров никогда не использовались имена таблиц в подготовленных запросах - это попытка забивать микроскопом гвозди.
    2. Метки для входных параметров - это не тип данных, это просто название места куда будет подставлено значение этой метки по ключу из массива значений.
    Причем, именованные метки нужно связывать со значением с помощью специальной функции:
    $stmt = $db->prepare("SELECT * FROM moya_tablitsa WHERE id = :metka_parametra_identifikatora");
    $stmt->bindParam(':metka_parametra_identifikatora', 123);
    $stmt->execute();

    Но можно не использовать именованные метки (если их несколько в запросе, то нужно вставлять значения по порядку)
    $stmt = $db->prepare("SELECT * FROM moya_tablitsa WHERE id = ?");
    $stmt->execute([123]);

    Можно использовать связывающую функцию, указав порядок метки.
    $stmt = $db->prepare("SELECT * FROM moya_tablitsa WHERE id = ?");
    $stmt->bindParam(1, 123); // 1 - это номер метки, 123 - значение параметра
    $stmt->execute();
    Ответ написан
    Комментировать
  • Внешний винт LaCie сломан USB-C разъем, поможет ли донор?

    @alexalexes
    1. Старый Usb-3 адаптер может не мочь перекодировать команды Sata больше 1Tb емкости. Будет либо видеть первые 700 с лишним Гб, если диск не форматировался раньше, либо считать поврежденным раздел, так как не может транслировать всю емкость диска.
    2. Если диск подключить напрямую по Sata и не в древнюю мать, и использовать либо Linux систему, либо дисковую утилиту, например, Paragon Disk Manager, то все прекрасно прочитается.
    3. Если у Type-C разъема отошла только пайка, а он сам целый, то его починит любой умелец с маломощным паяльником или паяльным феном.
    Ответ написан
    1 комментарий
  • Есть ли бесплатное API для получения всех улиц и домов конкретного города?

    @alexalexes
    https://fias.nalog.ru/Updates
    Тут есть полный архив адресов и разностные файлы на определенную дату.
    Ответ написан
    Комментировать
  • Как определить объем поддерживаемых браузеров в компании при разработке сайтов?

    @alexalexes
    Берете статистику использования браузеров в проектах, которые охватывают основную аудиторию.
    Смотрите наиболее старые версии браузеров, которые используют более 1% пользователей - это будет нижняя планка поддерживаемых браузеров. Узнаете названия движков этих браузеров и их версии - эти данные вписываем в тех. задание.
    Через год снова смотрим статистику, и примечаем, как изменились версии, какие версии ушли ниже 1%.
    Если ваш начальник или какой-то ключевой пользователь, находящийся в этом 1%, упорно сидит на старом браузере, то этот момент прописываем отдельным пунктом в ТЗ - также регулярно интересуемся, не изменились ли у него предпочтения, чтобы занести эти изменения.
    Ответ написан
    Комментировать
  • Подсчёт кол-ва детей у сотрудников access?

    @alexalexes
    Подскажите пожалуйста - в каком направлении думать.

    Подтянуть знания:
    1. Псевдонимы таблиц и полей в SQL.
    2. Соединения таблиц (join, left/right/cross join).
    3. Использование группировок в выборке.
    4. Агрегирующие функции (count, max, min и т.д.).
    В перспективе:
    5. Оконные функции.
    6. Подзапросы для получения скалярного значения (используется в секции select или в where)
    7. Подзапросы в секции from
    Select w.`Код`, w.`Фамилия`, w.`Имя`, w.`Отчество`, 
               count(ch.*) as Child_Count -- кол-во детей
               -- count(distinct ch.`Фамилия`, ch.`Имя`, ch.`Отчество`, ch.`Дата рождения`) as Child_Count -- кол-во детей по группе уникальных полей по таблице Дети, без использования идентификатора
    from `Список` w
    join `Дети` ch on ch.`КодСотрудника`  = w.`Код`
    group by w.`Код`, w.`Фамилия`, w.`Имя`, w.`Отчество`
    Ответ написан
  • CSS как сверстать вертикальное расположение? либо JS как правильно находить элемент в DOOM?

    @alexalexes
    Можно указывать нужный элемент с помощью псевдоселекторов:
    let life = lifesBlock.querySelector("span:first-child");

    или
    let life = lifesBlock.querySelector("span:last-child");
    Ответ написан
    Комментировать
  • Сколько Google платит за устранение ошибок в его продуктах?

    @alexalexes
    Ошибки вы нашли, а что вам помешало нагуглить их сайт, где как раз и решают этот вопрос?
    https://bughunters.google.com
    Ответ написан
    Комментировать
  • Как правильно указать цикл для вывода только домена?

    @alexalexes
    for($i = 0; $i < count($api['answer']['result']); $i++)
      echo $api['answer']['result'][$i]['domains'][0]['fqdn'];

    По хорошему, нужно бы еще проверять есть ли массив результата по $api['answer']['result'], если массив в $api['answer']['result'][$i]['domains'].
    Ответ написан
  • Совместимы ли бп и материнка?

    @alexalexes
    Такая ультра бюджетная мать по умолчанию заработает от любого ATX блока питания от 400 ватт.
    Главное, не купить слишком прожорливый процессор по TDP, на эту мать можно ставить процы, которые кушают не более 65 ватт, иначе будет перегрев цепей питания материнской платы.
    С видеокартой тоже нужно смотреть на потребляемую пиковую мощность, а не на объем памяти и частоты. Или посмотреть, какую видюху ставят в готовые системники с блоком питания такой мощности.
    Ответ написан
    Комментировать
  • Есть ли разница куда ставить SSD?

    @alexalexes
    Без разницы как устанавливать. Sata и Slim Sata только физически по размерам отличаются, в адаптере только соединение дорожек от одного разъема к другому без всяких сложных схем. Для БИОС оба Sata одинаково равноценны.
    PS: Вполне возможно различие в версии поколения Sata. На оптическом приводе может быть версия по старее - Sata II, а на HDD - Sata III. На саму возможность подключения любого Sata устройства это не влияет, а на скорость его работы - влияет.
    Ответ написан
  • Как подключить жесткий диск к док станции?

    @alexalexes
    Если по USB обеспечивается ток выше стандартных 500mA (нужно уверенных 1,5...2A), то 2,5 диски могут завестись без 12 вольт. А так, 12 вольт нужны.
    Ответ написан
    Комментировать
  • Как сделать фото с камеры HTML js?

    @alexalexes
    Комментировать
  • Можно ли как-то поставить в условие case значение переменной?

    @alexalexes
    switch потребует от параметров при case быть константными - в этом недостаток всей конструкции switch. Так как компилятор перестраховывает себя для выбора единственного значения case.
    Чтобы можно было использовать переменные (не константы), придется использовать только каскадный if. В нем вы явно задаете возможность выполнения альтернативы через else, чего не хватает в конструкции switch.
    int counter;
    int param1 = 0;
    int param2 = 10;
    if(counter == param1)
    {
      //набор инструкций 1
    }
    else if(counter == param2)
    {
      //набор инструкций 2
    }
    Ответ написан
    2 комментария
  • Как правильно составить запрс с двумя INNER JOIN?

    @alexalexes
    Очевидно, что нужны алиасы к таблицам, особенно к тем, которые несколько раз присоединяются.
    select psc.*, 
      pt1.`value` as `picture`, 
      pt2.`value` as `sort_pos`
     from `pref_site_content` as psc
        inner join `pref_site_tmplvar_contentvalues` as pt1 on pt1.`contentid` = psc.`id` and pt1.`tmplvarid` = 37 
        inner join `pref_site_tmplvar_contentvalues` as pt2 on pt2.`contentid` = psc.`id` and pt2.`tmplvarid` = 111 
        where psc.`id` not in (898, 899, 900, 902)
           and (`template` = 40 and `published` = 1) -- тут, возможно, тоже можно добавить, если в таблицах поля одинаково названы
    Ответ написан
  • Вставил флешку в ноутбук и он выключился, теперь не работает. Как решить проблему?

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

    @alexalexes
    Вот способ с parse_url, вместе с вариантами обработки ошибок.
    $url_comps = parse_url($url, PHP_URL_HOST | PHP_URL_PATH);
    if(!isset($url_comps['host']) || $url_comps['host'] !== 'music.yandex.ru')
    {
      echo 'Не Яндекс.Музыка!';
       exit;
    }
    if(!isset($url_comps['path']) || strllen($url_comps['path']) == 0 || strpos($url_comps['path'], 'album') === false || strpos($url_comps['path'], 'track') === false)
    {
      echo 'Нет параметров альбома и трека!';
    }
    $url_path_params = explode('/', $url_comps['path']);
    $url_path_params_count = count($url_path_params);
    $album = null; $track = null;
    
    for($i = 0; $i < $url_path_params_count; $i += 2)
    {
      if(isset($url_path_params[$i]) && isset($url_path_params[$i + 1]) && is_numeric($url_path_params[$i + 1]))
      {
        if($url_path_params[$i] === 'album')
           $album = $url_path_params[$i + 1];
         if($url_path_params[$i] === 'track')
           $track = $url_path_params[$i + 1];
      }
    }
    if(is_null($album))
    {
      echo 'Не задан числовой параметр альбома!';
      exit;
    }
    if(is_null($track))
    {
      echo 'Не задан числовой параметр трека!';
      exit;
    }
    $output = "https://music.yandex.ru/iframe/#track/".$album."/".$track."/";
    Ответ написан
  • Если можно зашифровать открытым ключом и расшифровать закрытым, то можно ли зашифровать закрытым и расшифровать открытым?

    @alexalexes
    Если речь об RSA, то да.
    Когда пара ключей сгенерирована, то у них нет разницы в каком направлении пользоваться ими для шифрования и расшифрования. Роль закрытого ключа выбирают после генерации - "вот этот ключ мы спрячем, а вот этот - путь будет публичный".
    Ответ написан
    2 комментария
  • Возможно ли сверстать таблицу с уникальной шириной колонок на каждой строке?

    @alexalexes
    Только если каждая строка - отдельная таблица с нулевым margin сверху и снизу. Еще придется повозиться с толщиной границ с использованием table:first-child, table:last-child, но это мелочи.
    Ответ написан
    Комментировать