Ответы пользователя по тегу PHP
  • $for = R::find(kotegoriyalar,id ,array(0)); Что вернет Как мне получить доступ к ним?

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

    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 выполнить очистку 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 комментария
  • Как настроить .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 разработчик
    Есть несколько вариантов решения.

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

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