• Можно ли синхронизировать базы данных с Phpstrom?

    Screamie
    @Screamie
    Full-stack разработчик
    Можно. В PhpStorm в правом верхнем углу есть вертикальная вкаладка Database. Нажимаете туда. В открывшемся окне нажимаете + и на вкладке Data Source выбираете нужный вид БД. Далее откроется окно с подробными настройками. Там уже в зависимости от ваших доступов заполняете поля и готово.
    Ответ написан
    Комментировать
  • $for = R::find(kotegoriyalar,id ,array(0)); Что вернет Как мне получить доступ к ним?

    Screamie
    @Screamie
    Full-stack разработчик
    Вы вызываете метод find() у класса R. Соответственно нужно искать ответ в определении этого метода в классе R.
    Ответ написан
    Комментировать
  • Как показать контент под углом?

    Screamie
    @Screamie
    Full-stack разработчик
    Лучше делайте изображением. В теории можно сделать, если выдать блокам
    transform: skewX(-20deg);

    А текстовому содержимому внутри:
    transform: skewX(20deg);

    Но тогда придется очень четко готовить изображения. Это трудно. Лучше одним SVG изображением.
    Ответ написан
    Комментировать
  • Добавить одинарные кавычки в начало и конец текста?

    Screamie
    @Screamie
    Full-stack разработчик
    Эм...

    $string = 'Какая-то строка';
    $string = '\'' . $string . '\'';
    Ответ написан
    Комментировать
  • Как вызвать функцию из файла загруженного через spl_autoload_register?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте! Что-то у вас странный код.

    // это файл index.php
    function loading($classname) {
        // Зачем вы инициализируете переменную $ClassFilePath если нигде ее не используете?
        $ClassFilePath = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $classname . '.php';
    
            require 'web.php';  // Этой строчкой вы подключаете 'web.php' из текущей директории.
    }
    spl_autoload_register('loading');
    $web_page = new web();
    echo $web_page->get('https://ya.ru'); // <- тут ни чего не происходит


    Если web.php находится в той же папке, что и index.php, то проверяйте доступность метода и что он должен возвращать. Возможно, он возвращает вам пустую строку. Но, лучше сделать нормальный autoload файл, подключить его в index.php и прописывать namespace-ы у классов.

    <?php
    
    // Содержимое файла _autoload.php
    function autoload($className)
    {
        if (strpos($className, '\\') !== false) {
            $classFile = str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
    
            if ($classFile === false || !is_file($classFile)) {
                return;
            }
    
        } else {
            return;
        }
    
        include($classFile);
    
        if (!class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) {
            die("Unable to find '$className' in file: $classFile. Namespace missing?");
        }
    }
    
    spl_autoload_register('autoload');


    И еще советую вам посмотреть PSR рекомендации для оформления кода PHP. Именовать классы с маленькой буквы это не очень хорошо.
    Ответ написан
  • Как индексируются php страницы?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте! Индексироваться они будут, но лучше настроить ЧПУ с помощью .htaccess файла. Можете начать отсюда, подробнее об этом здесь
    Ответ написан
    Комментировать
  • Как в PHP выполнить очистку POST для массива?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте! Вы уверены, что нигде нет логической ошибки? Например, вы дампите переменную $video, которая в вашем приведенном коде не инициализируется. Может нужно дампить $filter['video']? Или это просто опечатка?

    К тому же, судя по фильтрам, вы должны получать false для ['url'] и ['translators'] а в дампе тот же 'test', такое ощущение, что ваш $_POST вообще не фильтруется.
    Ответ написан
  • Как сделать расписание игр команд?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте! Воспользуйтесь вложенным циклом. Например так:

    $clubs = [
          0 => ["club" => "arsenal", "group" => 1],
          1 => ["club" => "barcelona", "group" => 1],
          2 => ["club" => "chelsea", "group" => 1],
          3 => ["club" => "bayern", "group" => 1],
          4 => ["club" => "liverpool", "group" => 2],
          5 => ["club" => "mu", "group" => 2],
          6 => ["club" => "real", "group" => 2],
          7 => ["club" => "psg", "group" => 2],
        ];
    
    foreach ($clubs as $club) {
        
        foreach ($clubs as $opponent) {
            if($club['club'] === $opponent['club'] || $club['group'] != $opponent['group']) {
                continue;
            } else {
                echo "Group ". $club['group'] .": " . $club['club'] . " vs " .$opponent['club'] . "<br>";
            }
        }
    
    }
    Ответ написан
  • Как создавать страницы по нажатию?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте! Для начала, у вас логическая проблема, которая связана с недопониманием, как работает PHP. Рекомендую лучше разобраться в основах языка. Но это на будущее, а пока попробую помочь с тем, что есть.

    Во-первых, код создания файла и записи счетчика лучше всего вынести в отдельную функцию, которая возвращает адрес файла или false в зависимости от того создан файл или нет. Сам код я не рассматриваю, но его можно сильно улучшить (например: посмотрите вот эти функции: 1 2)

    Далее, вызываем функцию создания файла в момент, когда форма успешно обработана. Так она не будет создаваться сразу.

    Затем, если функция вернула не false, то делаем редирект на созданную страницу через

    header('Location: http://www.example.com/newpage.html');


    Дополню ответ псевдокодом, для наглядности:

    function createCounterPage() {
     // Здесь пишем логику создания файла и счетчика
     // Функция будет возвращать путь к файлу или false если его не удалось создать
    }
    
    //  Обработка формы (ее лучше хранить отдельно от функции)
    
    if (isset($_POST['btn_submit']) && !empty($_POST['btn_submit'])) {
    
        // Обрабатываем форму...
        // Если нет ошибок - запускаем логику
        $counterPage = createCounterPage();
        send_mail($message)
    
        if($counterPage && is_file($counterPage)) {
            header('Location: http://www.example.com/' . $counterPage);
        }
    
    }
    Ответ написан
    4 комментария
  • Убрать кнопку показать еще, подкгрузка на автомате?

    Screamie
    @Screamie
    Full-stack разработчик
    У вас есть функция, которая запускается по клику на кнопку и подгружает контент. Напишите скрипт, который запускает эту же функцию в зависимости от скролла, и можете смело удалять кнопку. Информации в сети очень много.

    Например тут
    Ответ написан
    Комментировать
  • Как реализовать компонент в модуле yii2?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте.

    Модуль это по сути экземпляр приложения и он позволяет использовать сервис локатор и DI как и сам Yii2.

    Если я правильно понимаю ваш вопрос, то вам нужно подключить в конфигурации модуля ваш компонент через DI контейнер. Тогда он будет доступен из модуля.

    В конфигурации это может выглядеть примерно так:

    //...
    'modules' => [
    
            'shop' => [
                'class' => 'common\modules\shop\Module',
                'components' => [
    
                    'cart' => [
                        'class' => 'common\modules\shop\components\Cart',
                        'property' => 'value',
                    ],
                ],
            ],
    ],
    //...


    В классе common\modules\shop\Module заводите публичные поля components и cart. А в методе common\modules\shop\Module::init() осуществляете инициализацию вашего компонента Cart через
    $this->cart = Yii::createObject($this->components['cart']), как написано в оф.доках:

    // create an object using a configuration array
    $object = Yii::createObject([
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ]);


    Можно все это сделать и без конфигурирования, просто используя DI в методе init() вашего модуля. Но тогда код будет сильно связанным и вы не сможете конфигурировать ваш компонент без правок кода модуля.
    Ответ написан
    1 комментарий
  • Как использовать плагин?

    Screamie
    @Screamie
    Full-stack разработчик
    Вероятно на вашей машине не установлен интерпретатор языка php. В доках по плагину написано:

    Please note that this extension uses the PHP executable to run its analysis tools so PHP must be installed on your machine and available globally.

    То есть необходимо установить PHP и сделать его доступным в глобальной области видимости. Как устанавливать PHP зависит от вашей системы. Под Windows можно скачать OpenServer, в сборку которого входит сразу несколько версий PHP, а затем указать путь к исполняемому файлу php в переменной PATH. Под Linux можно поставить Php отдельно или в сборке LAMP/XAMPP
    Ответ написан
  • Как проверить существоние объекта в Yii2?

    Screamie
    @Screamie
    Full-stack разработчик
    Можно сделать проверку через Yii::$app->user->isGuest
    Ответ написан
    6 комментариев
  • Как настроить .htacces?

    Screamie
    @Screamie
    Full-stack разработчик
    Используйте RewriteEngine в .htaccess в корне сайта с определенными RewriteCond

    Что-то на подобии этого

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/public/
    RewriteRule ^(.*)$ site.ru/public/$1 [L,R=301]
    Ответ написан
    Комментировать
  • Как лучше ассоциировать модель и файлы/изображения относящиеся к ней?

    Screamie
    @Screamie
    Full-stack разработчик
    На мой взгляд лучше всего подойдет связующая таблица. И не нужно создавать запись с null при сохранении модели, на тот случай если у модели не будет прикрепленного файла, что бы не плодить пустые записи в БД.

    Структура БД может быть такой

    resource
    -----------
    id:PK
    name
    description

    resource_file
    ---------------
    resource_id:PK
    file_id:PK

    file
    ---------------
    id:PK
    path
    description

    И создать индексы для всех таблиц и внешние ключи для resource_file.resource_id и resource_file.file_id.

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

    Screamie
    @Screamie
    Full-stack разработчик
    Замените в вашем Codepen и заведется. Если требуется объяснение - пишите.

    .logo {
    	width:73px;
    	height:56px;
    	margin-left:35px;
    	margin-top:42px;
      margin-right:25px;
    	background: #222222 url("../img/logo.png") no-repeat;
    	float:left;
    }
    h1 {
    	color:#3c3c3c;
    	font-family:"Helvetica CE Regular";
    	font-size:34px;
      height: 56px;
      line-height: 56px;
      margin-top: 42px;
    }
    Ответ написан
    Комментировать
  • Как уведомления о неправильных данных поместить рядом с формой?

    Screamie
    @Screamie
    Full-stack разработчик
    Есть несколько вариантов решения.

    1. Если форма не прошла проверку, отрисовывать ее заново и показывать ошибки рядом с полями.
    2. Ajax валидация. При вводе данных в input и потере этим инпутом фокуса отправлять введенные данные на PHP скрипт, который будет проверять данные и возвращать ответ. Подробнее здесь
    Ответ написан
    Комментировать
  • Имитировать клик по фильтру у конечных категорий?

    Screamie
    @Screamie
    Full-stack разработчик
    Не совсем понятен вопрос и система на которой все это работает. Но если есть возможность, то можно передавать переменную, когда пользователь дошел до конца. Или в самой вьюхе конечного раздела создать скрытый блок div с классом js_last-cat например и по событию on('load') чекать на наличие этого блока в DOM и если он есть - раскрывать список.
    Ответ написан
  • Как избавиться от ошибки foreach?

    Screamie
    @Screamie
    Full-stack разработчик
    В foreach вы передаете переменную $notification, а где ее инициализация? В этой переменной должен содержаться массив объектов. А приходит, видимо, null.
    Ответ написан