Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как получить параметры колонки при выборки данных через SELECT?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сколько ответов, и ни одного правильного

    PDOStatement::getColumnMeta
    Ответ написан
  • Можно ли при запросе из БД получить цифру?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перевожу на понятный язык ответ DevMan:

    Чтобы получить данный функционал, необходимо, чтобы были соблюдены два условия:

    - модуль pdo_mysql должен быть собран на базе mysqlnd. проверяется через phpinfo()
    - для запроса используются родные подготовленные выражения, что достигается установкой PDO::ATTR_EMULATE_PREPARES в false
    Ответ написан
    Комментировать
  • Что лучше, свой фреймворк или сторонний?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > "велосипед" который будет обновляться самой командой в соответствиями с требованиями проекта?

    Проблема в том, что требования бизнес-процесса всегда имеют больший приоритет перед необходимостью технической модернизации. И в реальности внутренний фремворк никогда не обновляется (ну, если только конечно вы не Баду с 100500 девопсов), и через пару лет разработчики начинают чувствовать себя питекантропами.

    Следует понимать, что используя мейнстримный фремворк, вы получаете обновления на халяву. Обновления, над которыми работают тысячи людей - ресурс, которого у коллектива системы "междусобочик" никогда не будет.

    > Но что если новая версия очень сильно отличается от старой, придется проделать много работы по переделке большого проекта на новую версию.

    Это значит, что фреймворк использовался только для украшения, а бизнес-логика писалась по-старинке, овнокодом.
    Мы месяц назад поменяли мажорную версию Симфони, с 2.3 на 3.2. Переделки потребовались, но чисто механические, по замене нескольких устаревших функций.
    Достаточно следовать рекомендованным практикам, использовать рекомендованные инструменты и апгрейд не будет настолько болезненным.

    Плюс я считаю, что болезненность апгрейда в любом случае преувеличена, и несравнима с переездом с самопала.

    > Как обычно поступают команды, когда используется сторонний фреймворк, постоянно обновляют его версию в проекте или остаются на старой версии?

    Хотя бы за мажорной версией следовать необходимо.
    Ответ написан
    3 комментария
  • Как получить данные трёхмерным массивом?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Интересная задачка.
    Клнечно, она была бы еще интереснее, если бы ты сразу написал нужный запрос, но и так хорошо.

    В общем, можно попробовать похимичить с константами PDO::FETCH_*. То есть запросить избыточные данные, с дублированием элементов меню, и упорядочить константами. На праздники поиграюсьпоиграюсь

    Хотя трехмерный получить наверное не получится. Ключами юудет имя меню а значениями - массив с сабменю
    Ответ написан
    Комментировать
  • Правильно ли это хранить целые огромные html коды в базе?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Именно такой код хранить неправильно, по очевидным причинам.

    А вообще, если это, скажем, статья с разметкой - почему нет?
    Ответ написан
    1 комментарий
  • Подготовленные запросы или подготовленные процедуры?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет, преимуществ не будет, а вот неудобства значительные. Чтобы поменять запрос или просто посмотреть его логику, придется лезть в бд, что очень неудобно.

    Да и старик Оккам не одобряет.
    Ответ написан
    1 комментарий
  • Какой способ подключения PHP к apache лучше?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для тех, кто спрашивает, лучший вариант - модуль. Чтобы потом не было вопросов "ой у меня это не работает!"

    С точки зрения производительности - nginx + php-fpm под линуксом
    Ответ написан
    4 комментария
  • Как лучше кэшировать данные postgresql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    У начинающих программистов кэширование - это какой-то фетиш. И они пытаются впихнуть его куда угодно, без малейшего повода. А точнее, повод - это собственные страхи, порожденные невежеством
    Ответ написан
  • Альтернатива checkbox или как его заставить возвращать false если он не активен?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Был старый-старый хак, думаю, что он работает и сейчас
    <input type = hidden name = cbx value = 0>
    <input type = checkbox name = cbx value = 1>


    Работает, как я понимаю, за счет того, что последующее значение затирает предыдущее.
    То есть, запрос выглядит как
    ..&cbx=0&cbx=1&...
    в итоге в скрипте получается что-то вроде идущих подряд
    $_GET['cbx'] = 0;
    $_GET['cbx'] = 1;

    И в итоге остается только один.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Открою тебе секрет: "подмонтировать" можно не только в "локальной сети".
    А отправлять форму надо на сервер приложений целиком.
    На раздающих же статику серверах пхп даже не установлен, и никаких проверок и обработок они не сделают.
    Поэтому шлёшь на один сервер, а он - после проверки и обработки - отдает на облако
    Ответ написан
    Комментировать
  • Какой должен быть синтаксис SQL запроса в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Синтаксис SQL не отличается ничем.
    Отличается только способ подстановки переменных.

    Во-первых, запросы должны исполняться не через mysql_query, а через PDO
    В-вторых, на месте переменных должны стоять знаки вопроса, а сами переменные - передаваться в запос при исполнении:
    $stmt = $pdo->prepare("UPDATE `users` SET `name`=? WHERE id=?");
    $stmt->execute(array($name, $id));
    Ответ написан
    2 комментария
  • Неправильно работает скрипт, что я делаю не так?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Проблем у тебя две
    1. Ты используешь mysqli, а должен использовать PDO
    2. Самая главная проблема - ты не читаешь описание функции в документации. За это в хороших местах бьют линейкой по пальцам. То есть вот ты сам себе выдумываешь назначение функции, втюхиваешь ее себе в код, а потом удивляешься, почему ничего не работает! Ну так естественно, что не работает - и не должно.

    В общем, так как ты хочешь, работает в PDO функция fetchAll(). Поэтому быстро переходишь на PDO. Как соединяться написано здесь, а код переписываешь так:
    $data = $db->query('SELECT * FROM news');
    foreach($data as $res){
    Ответ написан
    Комментировать
  • Почему запись в БД вставляется более одного раза?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    throw new DBException("Wrong table or parameters");

    Это такая шутка остроумная?
    Ответ написан
  • Как перебрать индексы не по порядку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я тоже не понимаю, что нужно, а автор - по старой доброй традиции, хотя и спрашивает "есть ли под задачу другой подход", но саму задачу не описывает. А только свои страдания в борьбе с ней.

    Из этого невнятного кода я могу предположить только такое
    $array = range(1,20);
    shuffle($array);
    foreach($array as $item)
    {
        echo $item, "<br>";
    }
    Ответ написан
    1 комментарий
  • Почему ничего не приходит в массив $_FILES?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    проверять надо не name, а error
    Ответ написан
  • Есть ли PHP User Group в Москве?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Есть РНРClub, который, в общем, поляну давно уже занял.
    Жаль в последнее время активность сильно снизилась.
    Веборубы были отличной, просто отличной идеей.
    Ответ написан
    Комментировать
  • Как получить кодированную строку urlencode() через json?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Родной.
    Здесь не кружок высокой словесности.
    А сайт о программировании.
    Не надо пересказывать программу своими словами.
    Надо просто показать её.

    проблема тут может быть только в твоей программе. Поскольку

    Как получить кодированную строку urlencode() через json?


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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    // setup
    $pdo->query("create table counter (id int auto_increment primary key)");
    // use
    $pdo->query("INSERT INTO counter VALUES (NULL)");
    $counter = $pdo->lastInsertId();
    Ответ написан
    1 комментарий
  • За счет чего Тостер может составить конкуренцию русскоязычному Stackoverflow?

    FanatPHP
    @FanatPHP Автор вопроса
    Чебуратор тега РНР
    Вот только что пришло в голову - добавить на Хабр колонку "Лучшее на Тостере".
    На Хабре ведь на самом деле тыщи неокученных атцов, которые вполне могли бы зайти и сказать пару веских. Но просто не видят же.

    Кстати, должна быть возможность поставить метку "Интересный вопрос" вручную, модератором.
    Это, кстати, очень важно, и всегда адски расстраивало меня на стаковерфлое: тупой вопрос от нуба тут же привлекает внимание таких же нубов, в то время как реально сложный и интересный вопрос остается вообще без внимания - и быстро утопает под новыми. Я на такие ставил мелкую баунти. Здесь подобного механизма тоже не хватает.

    Вообще, кстати, не хватает более прямого способа отметить значимость вопроса. Скажем, есть много вопросов, на которые я подписываться не хочу, но считаю их достойными блока "самое интересное". Я нажимаю "подписаться". Но это неправильно.

    Ну и да - возможно, как-то скрестить ужа с ежом - возможность назначать цену за ответ на базе механизма фрилансим. На таких условиях я бы даже грубить перестал ;)
    Ответ написан
    2 комментария
  • Как написать условие внутри переменной?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Отвечу на вопросы, которые остались без ответа

    1. На случай, если никто не умрет, получив сообщение с пустой ячейкой "Телефон", оставляем код как есть.
    2. На случай, если умрет и полей будет десяток

    $fields = array(
        'name'  => 'Имя',
        'phone' => 'Телефон',
        // ...
    ); 
    $message = '<table>';
    foreach ($fields as $key => $title)
    {
        if ($value = trim($_POST[$key]))
        {
            $message .= "<tr><td>$title:</td><td>$value</td></tr>";
        }
    }
    $message .= '</table>';
    Ответ написан
    1 комментарий