Задать вопрос
  • Как проверить на совпадение в бд?

    @alexalexes
    Динамически сформировать текст и список параметров запроса, в зависимости от критериев:
    $sql = "SELECT * FROM `shop` WHERE 1=1 "; // 1=1 - классическая заглушка, чтобы можно было удобно добавлять and.
    $params = []; // заготовка под входные параметры запроса.
    if(isset($_POST['criteria_1']) && $_POST['criteria_1'] == 'on') // выбрали нечто по первому критерию
    {
    // он проверяет только имя чего-то
    $sql .= 'and `name` = :name ' // добавляем условие в текст запроса
    $params['name'] = $_POST['name']; // добавляем параметры
    }
    if(isset($_POST['criteria_2']) && $_POST['criteria_2'] == 'on') // выбрали нечто по второму критерию
    {
    // он проверяет  например, страну и город
    $sql  .= ' and `country` = :country
                 and `city` = :city ' // добавляем условие в текст запроса
    $params['country'] = $_POST['country']; // добавляем параметры
    $params['city'] = $_POST['city']; // добавляем параметры
    }
    $stmt = pdo()->prepare($sql);
    $stmt->execute($params);
    if ($stmt->rowCount() > 0) {
        flash('Этот магазин уже существует.');
        header('Location: addshop.php'); // Возврат на форму регистрации
        die; // Остановка выполнения скрипта
    }
    Ответ написан
    Комментировать
  • Как отправить несколько записей?

    @alexalexes
    В самом примитивном варианте реализации.
    Даете тегу select атрибут multiple и name задаете как ключ-массив, чтобы отправляемая форма могла по данному name нести на сервер массив значений:
    <select name="category_id[]" form="data" multiple>
    ...
    </select>

    На стороне сервера на пост-параметре category_id вы увидите массив выделенных элементов:
    var_dump($_POST['category_id']);
    Ну, и остается перебрать этот массив, чтобы последовательно выполнить insert.
    PS: Однако, структуру базы вам придется изменить, добавив еще одну таблицу для хранения множественного выбора категорий, чтобы выполнить требования 3-ей нормальной формы нормализации данных.
    Ответ написан
  • У меня подгорела вилка на блоке питания для ноутбука, что делать?

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

    @alexalexes
    Как вариант, ajax-ом авторизоваться и вызвать обновление страницы.
    var request = new XMLHttpRequest();
        request.open("POST", "test.ru", false);
        request.setRequestHeader("Authorization", "Basic " + btoa(user + ":" + password));  
        request.loaded = function()
        {
          window.location.reload();  // обновление страницы
        };
        request.send();
    Ответ написан
    Комментировать
  • Как приветси GET-ответ в удобочитаемый вид?

    @alexalexes
    Можно хоть с браузера изучать содержимое JSON:
    1. Открываете средство разработчика в браузере F12.
    2. Открываете консоль.
    3. Пишите:
    Текст вашего JSON;
    4. После нажатия Enter появится строчка со скомпилированным результатом. Теперь можете бродить по внутренностям этого объекта как по дереву каталогов.
    Ответ написан
    Комментировать
  • Погнулась вилка на зарядке, можно ли пользоваться дальше?

    @alexalexes
    Небезопасно использовать без присмотра.
    Ответ написан
    Комментировать
  • Как правильно переопределить данную функцию в postgresql?

    @alexalexes
    1. Открываете функцию замены текста в тестовом редакторе.
    2. Включаете режим использования регулярных выражений.
    3. Используете регулярки:
    - для поиска:
    '([\-]*[\d]+)'
    - для замены:
    '$1'::character varying
    4. Если текстовый редактор подсвечивает результат поиска в тексте, то убедиться, что захватывается именно то, что нужно.
    5. Провести пошаговую замену текста (если не уверены в результате) или запустить полную замену.
    Ответ написан
    Комментировать
  • Как объединить строки в SQL?

    @alexalexes
    Лучше, конечно, вертикальную выборку перерабатывать в горизонтальную не в SQL, а в той процедурной прослойке, которая вызывает запрос.
    На SQL можно такое провернуть, но будет не универсально (фиксированное число столбцов в итоговой выборке).
    with main_tb (id, detal, mono, row_num) as (select id,
              detal,
              mono
             row_number() over (partition by detal order by id) as row_num
    from tb) 
    
    select t.id,
              t.detal, 
              t.name,
              (select t1.mono from main_tb as t1 where t1.detal = t.detal and t1.row_num = 1) mono,
              (select t1.mono from main_tb as t1 where t1.detal = t.detal and t1.row_num = 2) mono2,
              (select t1.mono from main_tb as t1 where t1.detal = t.detal and t1.row_num = 3) mono3
    from tb as t
    Ответ написан
    Комментировать
  • Есть ли аналог tinyint в PostgresSQL?

    @alexalexes
    Если экономить на спичках, то можно конвертировать число в символ, и вписаться в тип varchar(1), но мы же не будем делать из буханки хлеба троллейбус?
    Ответ написан
  • Как исправить ошибку Outlook 0x80004005?

    @alexalexes
    Попробуйте создать заново почтовые профили в Outlook, но предварительно сделайте резервные копии файлов *.pst, которые находятся по умолчанию в каталоге документов профиля Windows, чтобы сохранить архив писем (при создании профиля нужно будет указать местонахождение этих файлов).
    PS: Если файлы *.pst находятся не в этом каталоге, то проверьте права доступа к каталогу, могут ли сторонние программы сохранять в него файлы.
    Ответ написан
    Комментировать
  • Какой язык программирования учить системному администратору?

    @alexalexes
    Учите использование консоли linux/windows и все, что может автоматизировать выполнение сценария консольных команд по расписанию или в виде пакета.
    Ответ написан
    Комментировать
  • Как сформировать запрос?

    @alexalexes
    select u.*
      from users u
    where not exists(
                select 999
                  from user_statuses us
                where us.user_id = u.id 
                    and us.status_id = 1
                 )
    Ответ написан
    2 комментария
  • Неправильно отображается Оперативная память?

    @alexalexes
    Потому что с другой стороны материнской платы, ровно на том же месте находится 2-ой слот ОЗУ с точно такой же планкой памяти.
    Ответ написан
    5 комментариев
  • При решении каких задач может пригодится команда CROSS JOIN (SQL)?

    @alexalexes
    В задачах, где условия inner join нужно вывернуть наизнанку.
    Посмотреть выборки, которые не охватывают типичные запросы с присоединением.
    Ответ написан
    1 комментарий
  • Изготавливают ли сейчас современные материнские платы по типу Intel Q75 Express? Где такие можно найти?

    @alexalexes
    Я думаю, можно попробовать посмотреть в сторону Mini-ITX плат. Недостающие PCI-e порты прокидывать через переходники-райзеры.
    Ответ написан
    Комментировать
  • Как убрать лишнюю букву в дате комментария?

    @alexalexes
    Значит не полностью убрали время.
    Точнее, прекращения вывода времени недостаточно, нужно еще исправить шаблон формирования даты (+ время), чтобы предлог не выводился вообще, или выводился при непустой составляющей времени (или когда оно не равно 00:00).
    Ответ написан
    Комментировать
  • Как сделать переадресацию с www.поддомен.сайт.ru на поддомен.сайт.ru?

    @alexalexes
    У вас выписан сертификат для доменов 3 уровня .сайт.ru.
    Чтобы работало www.поддомен.сайт.ru без предупреждения о недействительном сертификате, нужен сертификат 4-го уровня .поддомен.сайт.ru.
    Ответ написан
    Комментировать
  • Как сменить формат большому количеству файлов?

    @alexalexes
    1. Открыть командную строку.
    2. С помощью команд смены диска, смены каталога выбрать текущий каталог, в котором нужно произвести переименование.
    3. Запустить команду:
    FOR /R %f IN (*.bin) DO REN "%f" *.exe
    которая переименует все файлы в текущем каталоге, в том числе и во вложенных тоже.
    Ответ написан
    Комментировать
  • Как получить все имена загруженных изображений из массива и записать в бд php, redbean php, ajax?

    @alexalexes
    Вам сначала нужно подготовить структуру таблиц базы данных, чтобы можно было хранить несколько изображений продукта. Сейчас таблица products хранит сведения об изображении в одном атрибуте image. Вам нужно создать еще одну таблицу, например product_images, в которой будут храниться записи сведений об изображениях продукта - с указанием внешнего ключа product_id в каждой записи.
    А в php поменяется это место:
    $product = R::dispense('products');
       $product->image = $_FILES[$input_name]['name'][0]; // СЮДА НАДО ЗАПИСАТЬ МАССИВ ИМЕН ИЗОБРАЖЕНИЙ (сейчас записано только имя первого изображения)<br>
       R::store($product);

    На что-то такое:
    $product = R::dispense('products');
    $product_id = $product->id;
     foreach($files as $file)
    {
      // Вставка сведений из $file в таблицу product_images с входным параметром $product_id
    }

    Вторым этапом будет изменение методов чтения сведений об изображениях продукта. Чтобы метод адаптивно читал (по старому формату хранения) атрибут image из записи таблицы products, а в случае его пустоты - пытался читать сведения из таблицы product_images (по новому формату хранения).
    Ответ написан
    Комментировать
  • Как написать запрос?

    @alexalexes
    Предположу, что в ORM нет возможностей для написания второго уровня вложенности подзапросов.
    Вероятно, ответ будет таков:
    $this->db->select('инструктор, дата, SUM(длительность)');
    $this->db->from('( SELECT DISTINCT инструктор, дата, начало, длительность
                                    FROM таблица ) AS алиас');
    $this->db->group_by(['инструктор', 'дата']);
    $query = $this->db->get();
    Ответ написан