Ответы пользователя по тегу PHP
  • Как изменить стили css по условию php?

    @Merzley
    <?
    $arStatusCss = [
      1 => 'btn-fresh',
      2 => 'btn-hot'
    ];
    ?>
    
    <?php foreach ($products as $product): ?>
    <div class="<?=$arStatusCss[$product['status_id']]?>">
      <?=$product['related_id'];?>
    </div>
    <?php endforeach; ?>
    Ответ написан
    Комментировать
  • Laravel.Комманда php artisan migrate выдает ошибку?

    @Merzley
    Вероятнее всего как раз драйвер и не установлен. Проверьте, установлен ли пакет php-pdo-mysql.
    Ответ написан
  • Как записать пути к файлам в массив, которые были загружены через форму?

    @Merzley
    Перенесите session_start() в начало файла. Дело в том, что до вызова session_start() переменной $_SESSION вообще не существует. Поэтому выполнение функции save_file() всегда выглядит так:
    • Пустая ли переменная $_SESSION['files'] - всегда да, т.к. переменной $_SESSION не существует
    • запускаем сессию - появляется переменная $_SESSION, в которой есть элемент ['files'], хранящий данные из прошлого запроса
    • очищаем элемент ['files'] - стирается всё, что приходило в прошлых запросах
    • помещаем туда данные текущего запроса

    При последующих запросах всё повторяется, поэтому и получается, что в сессии только одна запись сохраняется
    Ответ написан
    3 комментария
  • Php + json как получить все id?

    @Merzley
    Попробуйте так:
    $url = file_get_contents ('https://newvideo.tv/api/category-list?api_key=[your_api_key]&cat=film');
    $decode_url = json_decode($url, true);
    
    foreach($decode_url['data'] as $id){
        $currentId = $id['kinopoisk_id'] ;
    
        $url2 = file_get_contents ('https://newvideo.tv/api/videos?api_key=[your_api_key]&kinopoisk_id='.$currentId);
        $decode_url2 = json_decode($url2, true);
    
        foreach($decode_url2['data'] as $full_info){
            echo $full_info['title_ru']; echo '<br>';
            echo $full_info['year']; echo '<br>';
            echo $full_info['poster']; echo '<br>';
            echo '<hr>';
        }
    }


    UPD
    Единственное, 9к запросов за дополнительной информацией могут занять достаточно продолжительное время. Для генерации страниц на лету такой вариант не подходит.

    UPD2
    Во втором запросе забыл поменять $id['kinopoisk_id'] на $currentId
    Ответ написан
    Комментировать
  • Работа с selected в php где ошибка и как исправить?

    @Merzley
    Можно сделать так:
    В самом начале добавить массив (ID=>что-надо-подставлять) со всеми возможными вариантами

    $arDataSelectOptions = [
        1 => 'data-select-options="5,6,7,8,9,10"',
        5 => 'data-select-options="3,5,7"',
        10 => 'data-select-options="8,9,10"',
        ...
        'default' => 'data-select-options="1,2,3,4,5,6,7,8,9,10"'
    ];


    А затем строчку
    if($g['id'] == "1") { $usd = 'data-select-options="5,6,7,8,9,10"'; } else { $usd = 'data-select-options="1,2,3,4,5,6,7,8,9,10"'; }

    заменить на
    if(isset($arDataSelectOptions[intval($g['id'])]))
        $usd = $arDataSelectOptions[intval($g['id'])];
    else
        $usd = $arDataSelectOptions['default'];
    Ответ написан
    Комментировать
  • Notice: Array to string conversion, как исправить?

    @Merzley
    $bd=array($bd);
    В этой строчке переменная $bd становится массивом с одним элементом - тем, что раньше лежало в этой переменной.

    $result2 = json_decode(file_get_contents('https://api.vk.com/method/messages.getLongPollHist...'.$bd.'msgs_limit=200& ...

    А в этой строчке переменная $bd, которая сейчас является массивом, присоединяется к строке. Отсюда и предупреждение.
    Ответ написан
    Комментировать
  • Как сделатьотдельный php.ini для каждого проекта на Ubuntu?

    @Merzley
    Согласен с предыдущим ответом про докер. Но если хочется все-таки конфигами обойтись, то в Apache это делается достаточно просто. В nginx тоже, просто с ходу не напишу как. В общем, для Apache:
    Под каждый проект делается отдельный VirtualHost с отдельным конфигом в папке /etc/apache2/sites-available. И для каждого VirtualHost`a можно прописывать изменения стандартного конфига PHP. Эти изменения будут применяться только для запросов к этому VirtualHost`у.
    Вот что у меня было прописано для битрикса:
    php_admin_flag short_open_tag On
            php_admin_value opcache.revalidate_freq 0
            php_admin_value mbstring.func_overload 2
            php_admin_value mbstring.internal_encoding UTF-8
            php_admin_value max_input_vars 10000
            php_admin_value upload_max_filesize 5M

    Для изменения версии PHP достаточно отключить модуль Apache с одной версией, а с другой - подключить:
    sudo a2dismod php7.2 && sudo a2enmod php7.0
    Ответ написан
    Комментировать
  • Как удалить повторяющиеся значения в двумерном массиве?

    @Merzley
    Можно сделать так:
    //$arr - изначальный массив
    
            $arExistsTest = [];
            //здесь используется ссылка (&), чтобы можно было удалять вложенный ключ напрямую
           //т.е. чтобы можно было сделать "unset($value['TEST'])", 
           //а не "unset($arr[$key]['TEST'])"
            foreach ($arr as &$value){
                $currentTestValue = $value['TEST'];
                if (isset($arExistsTest[$currentTestValue]))
                    unset($value['TEST']);
                else
                    $arExistsTest[$currentTestValue] = true;
            }
    
            //На данном этапе из массива $arr были удалены 
            //все повторяющиеся значения "TEST",
            //встретившиеся второй раз и далее
    Ответ написан
  • Как правильно вывести данные из бд в массив?

    @Merzley
    Если коротко, то можно сделать так:
    $SQL = 'SELECT friend FROM `friends` WHERE id="'.$id.'" and value=1';
    $requestResult = mysqli_query($connection, $SQL) or die("Ошибка");
    $arFriends = [];
    while($resultRow = mysqli_fetch_row($requestResult)) {
        $arFriends[] = $resultRow[0];
    }
    echo $arFriends[0]; //Должно вывести 1
    echo $arFriends[1]; //Должно вывести 2
    // и.т.д
    Ответ написан
    1 комментарий