Ответы пользователя по тегу PHP
  • Как получить все имена загруженных изображений из массива и записать в бд php, redbean php, ajax?

    @alexalexes
    Вам сначала нужно подготовить структуру таблиц базы данных, чтобы можно было хранить несколько изображений продукта. Сейчас таблица products хранит сведения об изображении в одном атрибуте image. Вам нужно создать еще одну таблицу, например product_images, в которой будут храниться записи сведений об изображениях продукта - с указанием внешнего ключа product_id в каждой записи.
    А в php поменяется это место:
    $product = R::dispense('products');
       $product->image = $_FILES[$input_name]['name'][0]; // СЮДА НАДО ЗАПИСАТЬ МАССИВ ИМЕН ИЗОБРАЖЕНИЙ (сейчас записано только имя первого изображения)<br>
       R::store($product);

    На что-то такое:
    $product = R::dispense('products');
    $product_id = $product->id;
     foreach($files as $file)
    {
      // Вставка сведений из $file в таблицу product_images с входным параметром $product_id
    }

    Вторым этапом будет изменение методов чтения сведений об изображениях продукта. Чтобы метод адаптивно читал (по старому формату хранения) атрибут image из записи таблицы products, а в случае его пустоты - пытался читать сведения из таблицы product_images (по новому формату хранения).
    Ответ написан
    Комментировать
  • Как сделать добавление в избранное?

    @alexalexes
    20 таблицами в которых рассортированы сериалы по разным жанрам.

    Есть подозрение, что у вас структура таблиц не отвечает условиям нормализации (гуглите 1, 2, 3-я нормальная форма). Чтобы помечать фильмы одним или несколькими жанрами, достаточно 3 таблицы (гуглите как реализовать связь "многим-ко-многим"), в независимости от кол-ва жанров и фильмов.
    Чтобы хранить избранное, достаточно одной таблицы, в независимости от кол-ва пользователей.
    Таблица Fav_movie:
    id - идентификатор записи избранного,
    user_id - идентификатор пользователя
    movie_id - идентификатор фильма
    add_date - дата и время добавления
    position - поле для определения приоритета сортировки в пределах одного пользователя
    Ответ написан
  • Как вставлять картинки через код css?

    @alexalexes
    Вы пытаетесь работать с CSS как с шаблоном - для этого нужно использовать препроцессор CSS такие как Sass, Stylus, Less.
    Если у вас учебный проект, то это отдельная глава или даже раздел для набивания навыков и шишек.
    Если проект боевой и довольно простой, то можно не ввязываться в дебри динамической генерации стилей, условится, что статичные свойства стилей вы записываете в файлах CSS, а динамические - в html вставками:
    <style>
      .user-114__avatar
    {
       background-image: url({{thumbnail}});
    }
    </style>
    ...
    <!-- какие-то общие стили для аватара прописаны в классе user__avatar в файле css, а изменяемые прямо в HTML-->
    <div class="user__avatar user-114__avatar">
    </div>

    или инлайн-стилями:
    <!-- какие-то общие стили для аватара прописаны в классе user__avatar в файле css, а изменяемые прямо в инлайн-атрибуте тега-->
    <div class="user__avatar" style="background-image: url({{thumbnail}});">
    </div>

    PS: Тег img некорректно использовать без src, фон в нем может выступать только дополняющим свойством, например, закрывать прозрачные участки картинки src. И с фоновым изображением придется работать по-другому, чтобы привести в порядок адаптивность элемента.
    Ответ написан
    3 комментария
  • Как использовать сессию для всех клиентов одновременно?

    @alexalexes
    memcached, redis - можно использовать как буфер обмена между php процессами, но не более того. Для долговременного хранения данных нужна СУБД.
    Ответ написан
  • Как установить кодировку при выгрузке данных в CSV?

    @alexalexes
    Судя по преобладающим артефактам Р и С в некорректных символах, у вас строки в utf-8 открываются в кодировке windows-1251.
    Попробуйте либо правильно указать заголовок:
    "Content-type" => "text/csv;charset=utf-8",
    либо перекодировать строковые атрибуты из utf-8 в windows-1251:
    fputcsv($file, array(
                                    $item->id,
                                    mb_convert_encoding($item->name, 'cp1251', 'utf-8'),
                                    mb_convert_encoding($item->surname, 'cp1251', 'utf-8'),
                                    mb_convert_encoding($item->middle_name, 'cp1251', 'utf-8'),
                                    $item->phone,
                                    $item->date,
                                    $item->time,
                                    $item->type
                                ));
    Ответ написан
    Комментировать
  • Как определить яркость основного цвета изображения?

    @alexalexes
    1. Ищите реализацию "Определение основного цвета изображения в PHP".
    2. Ищите реализацию "RGB to HSL (или HSV) для PHP".
    3. Устанавливаете пороговое значение для L параметра из цветовой модели HSL (или V в HSV) пикселя основного цвета. От этого будет зависеть, что изображение "условно светлое" или "условно темное".
    Ответ написан
    Комментировать
  • Как в php сделать так чтобы по ссылке xml открывался php файл?

    @alexalexes
    Сделайте rewrite правило в конфиге nginx, чтобы при обращении к sitemap.xml вызывался php скрипт, который и обновит и выведет содержимое sitemap.xml. Только позаботьтесь о некой логики кеша, чтобы функция обновления файла запускалась не каждый раз, а по мере устаревания файла или его отсутствии.
    Ответ написан
    Комментировать
  • Передать значение в форме?

    @alexalexes
    <form action="/index.php" method="POST" >
      <input name='pers_delete' type='hidden' value="сюда подставляете значение переменной"/>  
      <input name='submit' type='submit' value="1" class='del_pers'/> 
    </form>

    <?php
       if (isset($_POST['submit']))
       {
         echo $_POST['pers_delete'];
       }
    ?>
    Ответ написан
    Комментировать
  • Как преобразовать одномерный массива в многомерный?

    @alexalexes
    Вам нужен определенный навык работы с наполнением ассоциативных массивов. С помощью него можно делать такие трюки.
    // $in_arr - вход
    // $out_arr - выход
    $out_arr = [];
    foreach($in_arr as $in_item)
      $out_arr[$in_item['api_id']][] = $in_item;
    $out_arr = array_values($out_arr);
    Ответ написан
    Комментировать
  • CRON Автоотправка сообщений в вк?

    @alexalexes
    Чтобы вам начать пользоваться VK API для каких-либо действий скриптом, нужно получить токен и id приложения.
    Для этого вам нужно изучить документацию разработчика https://dev.vk.com/api/getting-started разделы "Регистрация приложения" и "Авторизация пользователя" и проделать операции, которые описаны в этих разделах.

    После того, как с помощью ключа доступа вам удастся что-то отправить, то уже можете заниматься вопросом про cron.
    Ответ написан
  • Как изменить title и description на определенных страницах DLE?

    @alexalexes
    Если знаете, какая php переменная отвечает за id страницы, то перед формированием $metatags делаете переопределение всем необходимым свойствам. Статичные строки, которые будут изменяться, выносите в переменные.
    $meta_desc = 'Быстрые и качественные исследования в круглосуточном режиме работы, диагностика проводятся высококвалифицированными специалистами, профилактика здоровья';
    $meta_kw = 'sattimed.kz, диагностика, диагностический центр, МРТ, КТ, УЗИ, саттимед, рентген, радиология, магнитно-резонансная томография, рентгеновский компьютерный томограф';
    if($id == 1) // предположим, что переменная, отвечающая за id страницы - это $id, а главная страница под идентификатором 1.
    {
      $metatags['title'] = 'Главная страница'; // хотим переопределить заголовок для главной
      $meta_desc = 'Главная страница сайта'; // хотим переопределить метаописание для главной
    }
    $metatags = <<<HTML
    <meta charset="{$config['charset']}">
    <title>{$metatags['title']}</title>
    
    <meta name="description" content="{$meta_desc}">
    <meta name="keywords" content="{$meta_kw}">
    
    {$s_meta}{$robots_meta}
    
    <link rel="search" type="application/opensearchdescription+xml" href="{$PHP_SELF}?do=opensearch" title="{$config['home_title']}">
    HTML;

    Возможности DLE для этой доработки не используются, только логика php и подстановка параметров HEREDOC.
    Ответ написан
  • Как удалить строку в бд через Read Bean Php?

    @alexalexes
    Без понимания чистого SQL прослойка ORM в виде Read Bean крайне неочевидной вещью становится:
    function claim_message($msg, $msgFh, $msgTh, $uuid)
    {
      $var = R::findOne("messages", "msg_th = ? AND is_read = 0'", [$msgTh]);
      if(!is_null($var))
      {
        $delete = R::load("messages", $var->id);
        R::trash($delete);
        return $msg;
      }
      return "null; $msgTh , $msgFh";
    }

    А где тут цикл?
    Ответ написан
  • Как исправить ошибку General error: 1 near "-": syntax error in?

    @alexalexes
    Эта черточка - воспринимается как минус, поэтому имена столбцов и других объектов желательно выбирать без них, либо оборачивать в обратные кавычки, например, `article-header`.
    Ответ написан
    Комментировать
  • Как записать в одно поле 2 пути?

    @alexalexes
    Варианты решения в зависимости от задачи:
    1) Брать один из файлов и сохранять только его.
    2) Брать известное количество файлов и сохранять их свойства в разные поля таблицы catalog. Например, может быть не более двух файлов изображения - миниатюра и полное изображение. В таблице должны быть поле под миниатюру, поле под полное изображение.
    3) Брать все файлы, но в базе должна быть отдельная таблица для файлов изображений (например, catalog_image), запись которой хранит сведения об одном файле и ссылается внешним ключом к другой таблице - catalog, к записи предмета, к которой относится файл. Такая архитектура позволит хранить неограниченное число файлов для одной записи catalog.
    Ответ написан
    Комментировать
  • Как при добавлении новых записей в базу данных обновлить данные в PHP?

    @alexalexes
    Ваш вопрос правильнее звучит так:
    "У меня реализовано приложение чата в виде клиентской и серверной части.
    Когда один экземпляр приложения (клиентская часть) отправляет сообщение и оно фиксируется на сервере, необходимо, чтобы другой экземпляр приложения (клиентская часть) получил эти сведения без дополнительных манипуляций пользователя и как можно быстрей."
    Ответ:
    Есть несколько технологий общения клиента и сервера, чтобы получать актуальные сведения с сервера:
    - Длинные опросы,
    - Частые опросы,
    - Непрерывающееся соединение (web socket).
    Ответ написан
    1 комментарий
  • Почему не работает сравнение?

    @alexalexes
    Добавьте в начале скрипта заголовки:
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    Возможно, результат, который вы видите в браузере, закеширован, поэтому не выдается актуальный ответ.
    Ответ написан
    Комментировать
  • Как задать второе значение переменной если 1 не найдено?

    @alexalexes
    if(isset($gorod))
    {
      $city = $gorod;
    }
    else
    {
      echo 'Просто текст';
    }
    Ответ написан
    Комментировать
  • Как удалить # из url, чтобы не мешал обновлению страницы?

    @alexalexes
    Добавьте "return false" чтобы предотвратить действие по умолчанию при клике на ссылку - переход по ссылке.
    onclick="window.location.reload(); return false;"
    Ответ написан
  • Как сделать цикличный цикл php?

    @alexalexes
    Положить меню в базу данных в виде структуры:
    MENU - таблица с анонсами меню
    menu_id - код анонса меню
    public_date - дата анонса

    DISH - таблица блюд (без привязки к меню)
    dish_id - id блюда
    title - название блюда
    dish_text - текст состава

    Таблица, обеспечивающая состав меню из блюд
    MENU_CONSIST
    cons_id
    menu_id
    dish_id
    position - порядок вывода

    Имея такую структуру, можно составить запрос на вывод меню на ближайшие 30 дней:
    select *
     from menu m
      join menu_consist mc on mc.menu_id = m.menu_id
      join dish d on d.dish_id = mc.dish_id
    where m.public_date >= CURDATE()
       and m.public_date <= CURDATE() + INTERVAL 30 DAY
    Ответ написан
    Комментировать