Задать вопрос
  • Как преобразовать последний символ каждого слова в строке в верхний регистр?

    @D3lphi
    1 Способ (Посложнее, с циклом и плюшками):
    $str = 'my name is boris';
    
    $arr = explode(' ', $str);    // Разбиваем строку по пробелам в массив
    
    foreach($arr as &$item) {
        $last = strtoupper(substr($item, -1));    // Вытаскиваем последний символ из слова и преобразуем его в верхний регистр. Если в строке есть кириллица,нужно использовать mb_strtoupper() (Далее, тоже, использовать аналоги функций из расширения mb).
        $item[strlen($item) - 1] = $last;   // Заменяем последний символ в строке, символом в верхнем регистре.
    }
    unset($item);
    
    $result = implode(' ', $arr);


    2 Способ (Попроще):
    $str = 'my name is boris';
    
    $reversed = strrev($str);   // Переворачиваем строку задом наперед
    
    $result = strrev(ucwords($reversed));   // Меняем первый символ в перевернутой строке символом в верхнем регистре, переворачиваем строку.
    Ответ написан
  • Вывод элемента массива с условием для другого элемента массива?

    @D3lphi
    Конечно, он не будет работать.
    $services[$i]['id_room'] == 1
    //                       /\ ТУТ ЗНАК сравнения(==), а у вас знак присвоения(=).
    Ответ написан
  • Какую БД выбрать?

    @D3lphi
    Если важна очень высокая скорость работы, то я бы, на вашем месте, посмотрел в сторону Redis. Key-value хранилище, поддерживающее несколько типов данных (в том числе, строки(strings), списки(lists) и хэш-таблицы(hashes)). Плюс - поддержка master-mater репликации, тоже будет полезно. Работает, как на windows, так и на linux'е. Реализация для C++ присутствует.
    Ответ написан
    9 комментариев
  • Как реализовать $_get="пурупам "при загрузке страницы?

    @D3lphi
    Единственный вариант - сделать редирект по адресу с уже подставленным id.
    Ответ написан
  • Какой метод лучше и почему?

    @D3lphi
    Потому что контроллер по своей сути не должен работать с данными, не должен содержать логику. Его задача - принять запрос, возможно, проверить данные на валидность и отдать ответ. Всё! Больше он делать ничего не умеет. Вся бизнес логика должна выноситься в сервисный слой. А из контроллера вы будете лишь вызывать метод этого сервиса и получать ответ. В принципе, в контроллере можно писать логику, если код короткий, тогда, конечно, создавать сервис будет излишним. С данными должен работать репозиторий (как по ссылке, которую вы привели)! Не нужно делать этого в контроллере.
    Мне привычно работать с моделью прямо в контроллере

    Может быть вам и привычнее, но это не правильно. Контроллеры разрастаются и становятся жирными. Отсюда же вытекает и то, что вам приходится дублировать код.
    $post = new Post;
    $post->slug = $request->slug;
    $post->name = $request->name;
    $post->story = $request->story;
    $post->save();

    Этот кусок вам, возможно, потребуется использовать еще где-то. И да, вот такой способ, если вашей целью является просто вставка данных, юзать не стоит. В этом нет смысла. Лучше воспользоваться методом create() или же insert().
    Ответ написан
    7 комментариев
  • Стоит ли учить полностью js?

    @D3lphi
    Вы уже определитесь, кем хотите быть... Или вы используете только готовые решения (Тот же jQuery): шаг влево, шаг вправо - расстрел, у вас недостаточно знаний и вы не можете видоизменить код под свои нужды. Или же вы умеете писать собственные решения. По-моему, ответ очевиден. Если хотите стать хорошим специалистом, то без глубокого понимания какого бы то ни было языка не обойтись. Кроме того, в современном мире jQuery отходит на второй план. На нем неудобно реализовывать многие вещи. В больших современных проектах его вообще не используют. Сейчас все больше начинают использовать js фреймворки. Начиная от vueJS и заканчивая Angular'ои и React'ом.
    Ответ написан
    4 комментария
  • Почему более сложный запрос работает быстрее?

    @D3lphi
    Потому что в первом случае, вы, фактически выполняете 2 запроса. При чем, данные из вложенного select'а сначала выгружаются в оперативную память, а уже потом подставляются, как новое значение для `published_at`. А во втором все делаете одним. JOIN сам по себе достаточно быстрый оператор.
    Ответ написан
  • Как поговорить с фасадом DB и узнать как он отработал?

    @D3lphi
    Метод delete() возвращает булевое значение (true/false), в зависимости от того, удался запрос или нет. По нему и проверяйте.
    Судя по вашему вопросу, вы не понимаете, что такое фасад. Фасад сам по себе ничего не реализует и не "отрабатывает", он лишь достает объект из контейнера и вызывает у него метод, который вы "вызвали у фасада".
    Ответ написан
    3 комментария
  • Как организовать хранение БД кучи проектов?

    @D3lphi
    Возможно есть какие-то более элегантные решения?

    - Есть, называется "миграция базы данных". Во многих современных фреймворках этот способ реализован. Суть в том, что вы храните php файл (хотя, формат данных может быть любой), в котором содержится описание таблиц, их структур. Для их развертывания в Laravel, например, достаточно прописать одну консольную команду и всё готово!

    Я та понимаю, этот способ вам не подходит, поэтому, остается только "физическое" хранение структуры базы данных либо на диске (в облаке и тд), либо, в системе контроля версий.
    Ответ написан
    Комментировать
  • Повлияет ли индекс на быстродействие БД при вставке и обновлении?

    @D3lphi
    Безусловно, индекс будет тормозить запросы на вставку, удаление. Ибо, во время этой процедуры индекс нужно изменить. То есть, вы удаляете элемент из середины таблицы, следовательно СУБД будет должна обновить индексы таблицы. На большой таблице при частых запросов этих типов вы будете получать просадку в скорости. На запросах с выборкой использование индексов дает большое преимущество в скорости. Из этого небольшого рассуждения можно понять, что все зависит от того, какой тип операций преобладает над этой таблицей.

    И еще, позвольте поинтересоваться, для чего поле "статус" реализовывать в виде строки? Не логичнее ли было сделать, например, smallint? Определенное число соответствовало бы определенному статусу. Работа с числовыми полями, а уж тем более, если по ним стоит индекс происходит на порядок (нет, на два порядка) быстрее. Да и места на диске будет сэкономлено.
    Ответ написан
    2 комментария
  • Правильна ли я понимаю логику создания формы laravel?

    @D3lphi
    Значит, смотрите: адрес_1 - адрес, по которому будет переходить пользователь, чтобы увидеть и заполнить эту форму. адрес_3 - обработчик формы. Здесь мы выполняем действия с формой. Например, если бы это была форма регистрации, то здесь бы располагалась логика регистрации пользователя. Опять же, под словом "здесь" я понимаю не именно контроллер. Всю бизнес логику лучше выносить в сервисный слой. Контроллер будет лишь вызывать методы этого сервиса и отдавать ответ пользователю.
    Ответ написан
    2 комментария
  • За что отвечает эта строка в htaccess?

    @D3lphi
    Перенаправляет всех, кто перешел по адресу example.com/.html на example.com/404.html
    Ответ написан
    Комментировать
  • КАК правильно составить запрос MYSQL на выборку от и до?

    @D3lphi
    Дописать:
    AND `age` BETWEEN 64 AND 99

    То есть, получится:
    SELECT `firstname`, `middlname`, `lastname`,`age`,`phone1`,`phone2`,`town` FROM profil WHERE `town` BETWEEN 4 AND 14 AND `age` BETWEEN 64 AND 99
    Ответ написан
    2 комментария
  • Как исключить сделать выборку низ БД всех записей, кроме одной записи?

    @D3lphi
    SELECT `field1`, `field2` FROM `table` WHERE `id` <> 5

    Выберет все записи из таблицы `table`, у которых идентификатор не равен 5. Вы должны подставить сюда id категории, которая открыта.
    Ответ написан
    Комментировать
  • Как записать данные HTML инпута в php сессию?

    @D3lphi
    Возьмем форму:
    <form method="get"> 
         <input type="text" name="add_group">
         <input type="submit" name="send">
    </form>


    Обработчик:
    session_start(); // Обязательно запускаем (возобновляем) сессию! Без этого работать не будет!
    
    // Если кнопка была нажата
    if (isset($_GET['send'])) {
         // Если инпут не пуст 
         if (!empty($_GET['foxy_add'])) {
              $_SESSION['foxy_add'] = $_GET['add_group'];
         }
    }
    // Эти 2 условия можно совместить, но я не стал этого делать для наглядности
    Ответ написан
    Комментировать
  • Как запретить переход на страницу если нет сессии?

    @D3lphi
    session_start();
    
    if (!isset($_SESSION['foxy_auth'])) {
        header('location: http://www.example.com'); // Редирект, если сессия не существует
    }
    Ответ написан
    1 комментарий
  • Как вывести 4 последних значения из бд?

    @D3lphi
    SELECT `field1`, `field2` FROM `history` WHERE `user_id` = 5 ORDER BY `created_at` ASC LIMIT 4

    created_at - метка времени, когда был зарегистрирован пользователь. Если нет других вариантов, можете использовать id вместо этой метки.
    Ответ написан
    2 комментария
  • Как правильно сделать ЧПУ на htaccess?

    @D3lphi
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)\.html$ $1.php
    Ответ написан
    1 комментарий
  • Дочерние функции класса не видят переменную внутри класса. Как?

    @D3lphi
    Set() - это НЕ статический метод. А вы обращаетесь к нему, будто он статический.
    Нужно вызывать его так:
    $hi->Set();
    И да, имена методов принято писать с маленькой буквы.
    Ответ написан
    1 комментарий
  • Как правильно распределить front-end файлы (css) в laravel?

    @D3lphi
    На мой взгляд, как вы выразились, этичнее, будет "перенести контент туда, куда просит css-шаблон". Благо, все современные фреймворки "требуют" одну и ту же структуру папок. Согласитесь, неудобно каждый раз лазить по файлам и заменять там пути к ресурсам.

    Код в этих файлах идет сплошными строками без пробелов/переносов

    Это называется "минимизация кода". Исходный код "скармливается" алгоритму, который убирает все пробелы, табуляции, переносы строк, комментарии и тд. Производится эта процедура для того, чтобы уменьшить размер файлов. Минимизированные файлы весят на порядок меньше не минимизированных, что способствует уменьшению времени загрузки сайта. Кстати, очень рекомендую воспользоваться сборщиком проектов GulpJS. После установки необходимых зависимостей и настройки gulp-файла он все минимизирует и соберет в один компактный js или css файл. Таким образом, все стили будут лежать только в 1 небольшом файле, а весь js код - в другом (Вместо десятка разных фалов с bootstrap - стилями, вашими родными стилями и тд). Такой подход уменьшает количество запросов к серверу и положительно сказывается на производительности.
    Ответ написан
    2 комментария