Задать вопрос
  • Как разобраться с сессиями и массивами в php?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Разбивайте задачу на подзадачи и вам станет легче разбираться с тем как решать каждую из них.

    Например вместо:
    • Записать в сессию какую кнопку нажал пользователь (на самом деле, вы хотите этого, а не то, что написали, судя по всему).

    Поставить задачи так:
    • Определить как пользователь будет выбирать рейсы на HTML-странице (заметьте, здесь никаких сессий, всё в контексте исключительно HTML-страницы в браузере пользователя). Здесь вы выберете какие HTML-элементы будете использовать в форме: выпадающий список, радиобаттон или чекбоксы.
    • Понять каким образом из формы в HTML-странице формируются значения для передачи на сервер. Здесь вы разбираетесь с тем, у каких элементов где value, понимаете для чего нужен атрибут name и т.д.
    • Разобраться как данные передаются из браузера при отправке формы на сервер (в PHP). Здесь вы узнаете про то, что у формы есть атрибут action, что бывают методы GET и POST (а на самом деле, их больше, но это сейчас неважно). Потом (именно потом!) можно ещё узнать про AJAX и запросы из JavaScript без перехода на другую страницу.
    • Научиться правильно обрабатывать входящие данные POST-запроса. Здесь вы разбираетесь с суперглобальными массивами, с функциями фильтрации и валидации в PHP вроде filter_input() и подобных. (на следующих итерациях решения подобной задачи можно попробовать для разнообразия добраться до вещей типа symfony/http-foundation)
    • Разобраться, где какие данные лучше сохранять между разными запросами. Здесь вы почитаете про сессии, про базу данных и в чём их плюсы и минусы (а точнее для каких целей их используют). Возможно ещё про что-то типа Memcached/Redis, но явно не в первые разы.
    • Научиться работать с выбранных под вашу цель хранилищем данных. Здесь вы поймёте как "положить" в ваше хранилище (будь то сессия или БД) то, что вы "вынули" из запроса, который пришёл из браузера.


    Все пункты "научиться", "разобраться", "понять" по большему счёту нужно будет делать по одному разу на каждую нетипичную задачу. Но если вы вместо комплексного восприятия "сделать хорошо" начнёте разбираться в том, что стоит за технологией, на которой вы пытаетесь разрабатывать - вы начнёте действительно учиться.
    А такие вот вопросы "как мне сделать вот именно это" - они просто научат вас повторять код за людьми с Toster или StackOverflow без понимания, что они делают.

    Так что разбирайтесь с тем, как работает веб в принципе: что такое HTML и что выполняется в браузере, что такое PHP и что выполняется на сервере, как браузер отправляет данные на сервер и т.д., и т.п.
    В итоге вы должны полностью понимать принцип работы вашей страницы и пути по которым передаются данные от того момента как страница генерируется до того момента, когда вы обработали форму полученную от пользователя и выдали ему сообщение об успехе или ошибке.
    Ответ написан
    Комментировать
  • Что делать если блок не вмещается в колонку Bootstrap?

    @justabit
    Делить на 4 колонки надо только там, где это действительно надо (как в нижней части картинки с 4 иконками). Верхняя часть будет 1 колонкой.

    Грубый пример:
    <div class="container">
      <div class="row">
        <div class="col">WE DESIGN THINGS</div>
      </div>
    </div>
    
    <div class="container">
      <div class="row">
        <div class="col">ICON</div>
        <div class="col">ICON</div>
        <div class="col">ICON</div>
        <div class="col">ICON</div>
      </div>
    </div>
    Ответ написан
    Комментировать
  • Как правильно форматировать время в vue-moment?

    0xD34F
    @0xD34F Куратор тега Vue.js
    <td>{{ item.open | moment('utc', 'HH:mm:ss') }}</td>
    Ответ написан
    Комментировать
  • Как лучше/проще/правильно сжимать фото для сайта?

    @Shinso
    Ну я лично этим пользуюсь https://tinypng.com/ я падения качества после него не заметил
    Ответ написан
    Комментировать
  • Выбор игрового движка для C++?

    TheTalion
    @TheTalion
    UE4, в целом, простое, уроков не особо много, но есть что-то, документация по отдельным частям движка нормальная.
    Ответ написан
    Комментировать
  • Лучший форум на PHP?

    @strelnikovstanislav
    21 год, front-end разработчик из Санкт-Петербурга
    phpBB хорошая альтернатива любого платного скрипта, вместе с XenForo для полноценного форума нужно докупать некоторые плюшки за не самые маленькие деньги
    Ответ написан
    Комментировать
  • Правильное написание?

    Stalker_RED
    @Stalker_RED
    Да, вы правы, лучше выносить шаблоны в отдельные файлы. Также можете ознакомиться с популярными шаблонизаторами, такими как twig, blade, smarty, и так далее. Даже если вы не станете ими пользоваться, посмотрите хотя-бы краткий обзор их возможностей и принципов работы - почерпнете идеи.
    Ответ написан
    Комментировать
  • Один компьютер забирает всю скорость интернета?

    GavriKos
    @GavriKos
    Проблема в роутере. У него слабый проц, и он просто не успевает прожевывать все запросы, начинает греться и страдать вот такой вот фигней.
    Ответ написан
    5 комментариев
  • Один компьютер забирает всю скорость интернета?

    VELIK505
    @VELIK505
    Руководитель департамента profitcentr.com
    Роутер не нищинский не пробывали использовать?
    Keenetic GIGA III например
    Ответ написан
    2 комментария
  • Как корректно установишь решение в CMS bitrix?

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

    Насчет вашей проблемы, мой вам совет, если нету никаких интеграций с 1С Битрикс, наймите нормального программиста который напишет сайт на другой системе, например WordPress (wordpress.org/), намного лучше, быстрее и красивше.

    И потом, /newsite как там оказался шаблон? Или файлы? Возможно именно в этой папке newsite и лежит ваш index.php файл? В битрикс всё завязано на файлах, поэтому и дохнут очень быстро физ. диски хостеров.

    И надо задавать вопрос не "Что нужно сделать чтобы новое решение поставилось как основное, в основную папку?", а "Кто может помочь с ...", потому что Битрикс - это место всевозможных возможностей. И "на глаз" сказать в чём проблема - нереально.

    ps. Мною было сделано 1 - проект на Bitrix. Хватило. (большой портал).
    Ответ написан
    2 комментария
  • Как подтвердить AJAX-удаление?

    EreminD
    @EreminD
    Кое-что умею
    Самое простое
    1. Убрать onclick
    2 Изменить обработчик
    $('span.delete').click(function() {
            let isConfirmed = confirm('Точно удалить?')
            if (isConfirmed) {
                ajax({
                    url: 'https://delete.url',
                    data: {
                        'val'
                    },
                    ok: function(d) {
                        message('Запись успешно удалена');
                    }
                });
            });
    }
    Ответ написан
  • Годный ли обработчик формы?

    GeneMoss
    @GeneMoss
    void
    Не делайте такие длинные методы. Не копипасте. Отделяйте построение запроса от данных. И не надо все делать static.

    public static function saveStaff($options) 
    {
        if (self::isValidStaff($options)) {
            $staffFields = self::getFilledStaffFileds($options);
            $qb = new QueryBuilder( Db::getConnection() );
            $qb->where('id = 1')->update('staff', $staffFields);
        }
    }
    
    public static function getFilledStaffFileds($options)
    {
        $staff = [];
        if ($options['director_surname']) {
            $staff['surname'] = $options['director_surname'];
        }
        if ($options['director_surname']) {
            $staff['name'] = $options['director_name'];
        }
        if ($options['director_surname']) {
            $staff['ot4'] = $options['director_ot4'];
        }
        if ($options['director_surname']) {
            $staff['oklad'] = $options['director_oklad'];
        }
        if ($options['director_surname']) {
            $staff['date_start'] = $options['director_date_start'];
        }
    
        return $staff;
    }
    
    function static function isValidStaff($options)
    {
      return isset($options['surname']) 
        || isset($options['name'])
        || isset($options['ot4']) 
        || isset($options['oklad'])
        || isset($options['date_start']);
    }


    И использовать какой-нибудь построитель запросов, типа такого:
    class QueryBuilder {
        protected $db;
        protected $where = '';
        
        public function __construct($db) {
            $this->db = $db;
        }
        
        public function where($where)
        {
            $this->where = trim($where);
            return $this;
        }
        
        public function update($table, $params)
        {
            $values = [];
            foreach ($params as $key => $value) {
                $values[] = "`{$key}` = :{$key}";
            }
            
            $sql = 'UPDATE `' . $table . '` SET ' . join(', ', $values);
            if ($this->where) {
                $sql .= ' WHERE ' . $this->where;
            }
    
            $result = $this->db->prepare($sql);
            foreach ($params as $key => $value) {
                $result->bindParam(':' . $key, $value, PDO::PARAM_STR);
            }
            return $result->execute();
        }
    }

    P. S. Лучше пользоваться готовыми компонентами.
    P. P. S. Наверняка есть опечатки, набирал без IDE.
    Ответ написан
    Комментировать
  • Почему возникает ошибка в синтаксисе?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $a=4;
    $b=10;
    $z= $a*$b;
    
    if ($a && $b > -1) { 
        echo $a-$b;
    }
    elseif ($a && $b < 0) {
        echo $a * $b;
    }    
    elseif ($z < -1) {
        echo $a+$b;
    }

    20170726-054354.png
    Ответ написан
    Комментировать
  • Стоит ли учить Jquery в нынешнее время?

    ShadowOfCasper
    @ShadowOfCasper
    Middle User Interface Web Developer
    Стоит. Каждой задаче свой инструмент. Если ангуляр и реакт вошли в моду, это не значит, что способы упрощённой манипуляции домом из неё вышли. Если тебе кто-то говорит, что jQuery - костыль для людей, не умеющих нативно перебирать ноды или писать xmlhttprequest - скажи им, что компьютер - это костыль для людей, не умеющих жить без гугла и социалок. jQuery всегда будет популярен. Он упрощает простые обмены данных, классов в пределах DOM, умеет работать с ajax и значительно упрощает синтаксис.
    Ответ написан
    3 комментария
  • Какой ноутбук выбрать для разработки?

    kumaxim
    @kumaxim
    Web-программист
    Собираешь системник, который поставишь у себя дома. Главное на что надо обратить внимание - количество ядер/потоков ЦП(желательно 4/8) и объем оперативной памяти(у меня 12 ГБ = 8 + 4). Хороший монитор + клавиатура, мышь и гарнитура по вкусу.

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

    Также, пожалуй, затрону тему с SSD.
    В ПК три вида памяти: ЦП + ОЗУ + ПЗУ. Самая быстра - регистры ЦП, вторая по скорости - ОЗУ, третья - жесткий диск.
    Первые две связаны через северный мост, третья работает с южным. Я лично знаю два способа как можно реально ускорить систему: воткнуть SSD или увеличить объем ОЗУ.

    Если если с первым все понятно - у тебя жесткий диск более шустрый и за счет этого все начинает работать быстрее, то во втором случае, если у тебя в системнике стоит 64 ГБ ОЗУ, например, ты можешь сделать пару разделов tmpfs и при загрузке копировать туда с HDD свои основные рабочие файлы. В этом случае система загружается дольше, но при работе прирост производительности чувствуется достаточно не слабый, даже в сравнении с SSD.
    Ответ написан
    Комментировать
  • Почему после использования тэга, сайт показывается криво?

    @architawr
    "Ok, Google" и все твои проблемы решены
    Этот тег указывает браузеру, что у сайта есть "мобильная версия". Без этого тега показывается полная версия сайта. Если у Вас что-то вылезло - нужно смотреть в код. А картинки вылезают за экран из-за свойства :
    max-width: 500px
    Нужно выставить
    max-width: 100%
    Ответ написан
    3 комментария
  • Где найти хороший слайдер с фокусом на главное изображение?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Ответ написан
    Комментировать
  • Где найти хороший слайдер с фокусом на главное изображение?

    kenwheeler.github.io/slick
    См. пример с center mode
    Ответ написан
    Комментировать
  • Как вытащить посты где 'лайки > 10' (лайки в другом таблице, посты в другом)?

    SimBioT19
    @SimBioT19
    {{ user.about }}
    Вы подошли к этому вопросу не с той стороны.
    Вам нужно иметь счётчик лайков в таблице post и прибавлять к нему 1, когда пользователь ставит лайк.
    Тогда и посты с лайками > N будет получить легче легкого.
    Ответ написан
    7 комментариев