Задать вопрос
  • Можно ли удалить последний параграф из строки mysql?

    @alexalexes
    Лучше для такой операции написать отдельный скрипт на php или python. В СУБД очень бедный функционал на функциях регулярных выражений. А в скрипте вы сможете как извлечь данные, так обрезать все лишнее, а потом обновить данные в базе. Если данные записаны в виде HTML или JSON, то удобнее их декодить или строить DOM дерево и обрезать лишнее в преобразованной структуре с последующим преобразованием в вид для сохранения в базе.
    Ответ написан
    Комментировать
  • База данных на 32 гигабайта, как сделать?

    @alexalexes
    Если цель хранения данных - логирование состояния приложения, и это нужно делать только локально, то подойдет SQLite. Если нужно общее хранилище данных для нескольких экземпляров приложения, или нужно иметь общий доступ к данным по сети, то нужно брать СУБД по-функциональнее, например, PostgreSQL или MySQL (желательно 8 версии).
    Для решения данной задачи нужно изучить следующие моменты:
    1. Какими средствами администрировать СУБД: чтобы создать пользователя, создать базу данных, создать необходимые таблицы, просматривать данные.
    2. Как подключиться к СУБД из программной среды.
    3. Как выполнять запросы вставки, выборки по условию, с параметрами запроса средствами SQL с использованием библиотеки работы с СУБД из программной среды.
    Ответ написан
    2 комментария
  • Как проверить на совпадение в бд?

    @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 комментариев
  • Как присвоить цикл foreach переменной?

    @alexalexes
    Странно звучит, но то что можно присвоить переменной и потом выполнить можно оформить примерно так:
    $cycle = function($first, $second)
    {
    foreach(xopa($first, $second) as $items)
    {
      echo $items;
    }
    };
    $cycle($first, $second);
    Ответ написан
  • При решении каких задач может пригодится команда 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.
    Ответ написан
    Комментировать