• Как типизировать ключ и значение массива?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Типизировать ключи особого смысла нет, а для значений/структуры массива нативного решения нет, надо делать руками.
    Если под "типизацией ключей" имеется строго определенный набор ключей, то это называется DTO/ValueObject. То есть тупо вместо массива используется объект, в котором структура его свойств может быть четко определена.

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я тоже долго тупил, но потом понял. Скорее всего, человеку требуется аналог fetch_assoc в РНР. То есть словарь, в котором уже есть имена полей, которые не нужно будет писать руками.
    sqlite_connection = sqlite3.connect('sqlite_python.db')
    sqlite_connection.row_factory = sqlite3.Row
    cursor = sqlite_connection.cursor()
    sqlite_select_query = """SELECT * from sqlitedb_developers"""
    cursor.execute(sqlite_select_query)
    records = cursor.fetchall()
    records = [dict(row) for row in records]
    print(records)

    В итоге получится это самое загадочное "все получить одним returnprint" без цикла.
    Ответ написан
  • Как отформатировать строку SQL запроса?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Проблема здесь не с форматированием.
    А со структурой БД.
    Подставлять имя таблицы в запрос требуется исключительно редко, и это, очевидно, не ваш случай.

    Я понимаю, что у вас нет достаточных знаний, и это не ваша вина. Питон - это новый пхп. Писать ботов на питоне ринулись массы не имеющих отношения к программированию индивидуумов: домохозяйки, школьники, наркоманы в ремиссии и бывшие миллиционеры. В принципе это нормально, мы всем рады.

    Но если уж взялся, то надо понимать: программирование - это не прогулка по парку с девочкой (ну или с мальчиком - кому как больше нравится). Вашими страданиями с форматированием строки проблемы не заканчиваются. Они тут только начинаются. Чтобы освоить программирование, надо очень много учиться. И в частности, изучать основы построения баз данных. Я рекомендую книжку Святослава Куликова - она бесплатная.

    В вашем случае не должно быть зоопарка таблиц для каждого города. Таблица должна быть только одна. В которой есть поле city. Значение для которого подставляется стандартно во WHERE.
    Ответ написан
    1 комментарий
  • Как сгрупировать значения multiselect инпута в подмассивы если в форме несколько multiselect инпутов с одним названием tags[]?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если в форме несколько multiselect инпутов с одним названием tags[], то, разумеется, никак.
    Чтобы при сохранении формы значения из отдельных инпутов были в подмассиве массива tags, надо добавить эти подмассивы. Л - Логика.
    tags[0][]=
    tags[1][]=
    и так далее
    Ответ написан
    9 комментариев
  • Как сделать так чтобы код был виден постоянно без скролинга?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Надо научиться писать код нормально и не городить огромные лестницы из условий.
    Во-первых, надо не ваять огромные простыни кода, а разбивать его на боле мелкие функции.
    Во-вторых, если какой-то код выполняется только при определенном условии, то надо сначала проверить условие, и если оно не выполнилось, то сразу завершить обработку. То есть
    if (something == false) {
        return
    }
    // дальнейший код
    if (something selse) {
    }

    вместо
    if (something == true) {
        // дальнейший код
        if (something selse) {
        }
    }


    А просто длинные строки - например SQL запросы - переносить средствами кода, разбивая на несколько. Через heredoc или конкатенацию.
    Ответ написан
    Комментировать
  • Есть ли сайт, на котором можно узнать разницу между двумя английскими словами?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Интересный вопрос.
    Как минимум есть неинтерактивный сервис, https://ell.stackexchange.com/, где можно задать этот вопрос в ручном режиме.

    А насчет автоматического ответа - ну, наверное, самый смешной вариант - это использовать всем известный сервис.

    То же самое касается и запроса
    ввести слово и приложение/сайт выдал контекст, в котором оно употребляется.
    Ответ написан
    Комментировать
  • Как добавить новую запись в существующую таблицу?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В целом направление верное, надо только соблюдать верный синтаксис. То есть выбирать сущевтвующие поля по отдельности, а не склеивать их зачем-то в одно через CONCAT

    Плюс вы выполняете не тот запрос, который показываете, а какой-то, в котором iNSERT написано с маленькой буквы, и перед ним еще зачем-то болтается `goods_categories`
    Ответ написан
    Комментировать
  • Когда стоит начинать учить фреймворки?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну, по-хорошему, ещё рановато.
    Всё-таки, фреймворки служат для ускорения разработки веб-приложений, а не одностраничных черновиков.
    При чем это очень важный момент.
    Не использовав в своей работе всё, что требуется при разработке веб-приложения (в том числе безопасность, следование рекомендациям протокола НТТР, валидация данных, и примрно ещё десяток нужных вещей) - то не сможешь реально понять, как много фреймворк делает за тебя.
    Ответ написан
    Комментировать
  • Какой максимальный диапазон чисел в for i in range?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Господи, ну нельзя заниматься программированием с такими представлениями о логике.
    Причем не о какой-то там хитрой математической логике, а о логике своих действий.

    Неужели так трудно проверить свое собственное утверждение?
    for i in range(200000, 500000):
        if (i < 200005):
            print(i)
        if (i == 200005):
            print('...')
        if (i > 499995):
            print(i)


    Где здесь 0? Где здесь 208?
    С чего вы взяли, что эти цифры вообще берутся из этого цикла, а не откуда-то еще?

    Программист всегда должен проверять свои догадки.
    И если они не подтвердились, то искать другое объяснение своим проблемам.
    Ответ написан
    1 комментарий
  • Как удалять файлы с сервера по условию, что они не используются в текущий момент?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    В таких условиях надо делать вытесняющий кэш.
    Если при запросе нового файла выясняется, что для него нет места, то удаляется самый старый файл.

    Хотя конечно непонятно, как это всё поможет в ситуации, когда заходят посмотреть сразу 20 разных событий.
    Ответ написан
    1 комментарий
  • Мощнее ли пароль, содержащий китайские иероглифы?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Осталось понять, чем иероглиф лучше английского слова.

    Для непонятливых могу пояснить:

    Всем хуже
    У английского слова устойчивость так же, но при этом нет проблем с вводом пароля с любого устройства или интерфейса.
    Ответ написан
    Комментировать
  • Почему не работает php внутри html?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Причин может быть примерно миллион.
    Например, сервер смотрит на файлик .htaccess и в упор его не видит
    Для начала надо уточнить, что все это крутится под веб-сервером Апач и что в нем включена директива AllowOverride
    Ответ написан
  • Почему функция sort не сортирует, а выдает bool?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Наверное потому что она так устроена? И это поведение описано в документации?
    Ответ написан
    3 комментария
  • Как выполнить вызов метода в другом методе?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    call_user_func нинужна
    class A
    {
        function execute($function, $params = []) {
            return $function(...$params);
        }
        function payload($param) {
            return $param * $param;
        }
    }
    $a = new A;
    echo $a->execute([$a, 'payload'], [5]);


    а можно ещё так, если объект тот же самый

    class A
    {
        function execute($function, $params) {
            return [$this,$function](...$params);
        }
        function payload($param) {
            return $param * $param;
        }
    }
    $a = new A;
    echo $a->execute('payload', [5]);
    Ответ написан
  • Как можно охлаждать помещение?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Решение очевидное. Поскольку из этого всего толком шумит только нас, то поменять этот металлолом на SSD
    Ответ написан
  • Как понять что делает данный код php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Гадость.
    Тут даже смотреть не надо чтобы понять, что код делает гадость

    код ниже после __halt_compiler(); никак не интерпретируется языком PHP, что явно следует из названия этой функции.
    Ответ написан
    1 комментарий
  • Насчет экспорта таблицы MySQL в Excel средствами PHP?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну например можно генерить html

    Кстати, в этом примере просто попробуйте Content-Type: text/csv
    только вместо разделителя тогда лучше использовать точку с запятой.
    Ответ написан
    2 комментария
  • Как в mysql.connector отключить добавление одинарных кавычек?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Никак.
    Собирать запрос через f-word и выполнять без параметров.
    Ответ написан
    Комментировать
  • Как создать архитектуру БД для заказов продуктов и услуг в приложений?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    У вас какой-то странный магазин был изначально.
    Обычно делается две таблицы, orders и order_details, во вторую пишется состав заказа, в котором фиксируется цена, скидка и все такое прочее.
    Доставка - это не дополнительная услуга, а отдельная сущность, привязанная к заказу, со своими заморочками.
    Остальные доп. услуги - это обычные товары, которые кладутся в корзину.
    Вип статус - плюшка пользователя, а не покупки. При оформлении заказа она просто учитывается при подсчете стоимости.
    Ответ написан
  • Как вставить данные в две таблицы сразу?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    1. Вставить в первую
    2. Вставить во вторую.

    При возникновении ошибок - прочитать и исправить.
    Ответ написан
    5 комментариев