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

    UNN4MED
    @UNN4MED
    Битрикс разработчик
    на js обработчик события click для карточек сделать. у карт и модалок дата атрибуты должны быть с их уникальных значением. при нажатии у карт найти значение атрибута и передать в функцию, которая строит модалку.
    функция делает запрос в базу, на php возвращается ответ в виде json с полной информацией товара, далее расставляешь информацию по структуре и вставляешь её в место вывода модалки. у модалки уникальное значение вставится в свой дата атрибут, равный дата атрибуту карты, и она откроется
    моё - https://scake.up.railway.app/
    на WordPress не работал, реализация на Vanilla JS. базы как таковой пока нет, из json файла достаю
    Ответ написан
    Комментировать
  • Как корректно выгрузить данные из базы php в bootstrap слайдер по три элемента?

    UNN4MED
    @UNN4MED Автор вопроса
    Битрикс разработчик
    В общем сам додумал и смог учесть случай с 1 или 2 товарами в одном слайде
    Слайдер на Bootstrap 5.3:
    <div id="carouselExample" class="carousel slide">
       <div class="carousel-inner">
        <?php $menu = mysqli_query($link, "SELECT * FROM `menu` ORDER BY `id` DESC LIMIT 5");
         $length = mysqli_num_rows($menu);
         $i = 0; ?>
         <div class="carousel-item active">
            <div class="row">
             <?php while ($card = mysqli_fetch_assoc($menu)) :
              $i++;
               // ДОБАВЛЯЕМ ВСЕ ТОВАРЫ
              if ($i % 3 != 0 || $i == $length) {
                 include 'vendor/components/card-load.php';
               } elseif ($i % 3 == 0) { 
                   // ЕСЛИ НА СЛАЙДЕ 3 ТОВАРА, ТО ЗАКРЫВАЕМ ЕГО И ДЕЛАЕМ НОВЫЙ
                   include 'vendor/components/card-load.php';
                   echo '</div>
                          </div>
                       <div class="carousel-item">
                         <div class="row">';
               }
               // ЕСЛИ НА ОДНОМ СЛАЙДЕ МЕНЕЕ, ЧЕМ 3 ТОВАРА,
               // ТО ДОБАВЛЯЕМ ПУСТУЮ КОЛОНКУ.
               // ЧИСЛО СЛАЙДА ОТНИМАЕМ ОТ ОСТАТКА СЛАЙДА
               // ПРИ ДЕЛЕНИИ И СРАВНИВАЕМ С $j.
               // (СЛАЙДЕР БУДЕТ ВЫГЛЯДЕТЬ КОРРЕКТНО)
               if ($i == $length && $length % 3 != 0) {
                 for ($j = 0; $j < 3 - ($i % 3); $j++) {
                   echo '<div class="col"></div>';
                 }
              }
                endwhile; ?>
              </div>
            </div>
          </div>
                <button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
                  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                </button>
                <button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
                  <span class="carousel-control-next-icon" aria-hidden="true"></span>
                </button>
        </div>
    </div>

    Структура файла card-load.php:
    <div class="col">
      <a href="card-info.php?id=<?= $card['id'] ?>" class="card">
        <div class="card__img img">
          <img src="<?= $card['img'] ?>" class="card-img-top" alt="<?= $card['img'] ?>">
        </div>
        <div class="card-body">
          <h5 class="card-title"><?= $card['title'] ?></h5>
          <p class="card-text"><?= $card['description'] ?></p>
        </div>
        <div class="card-footer">
          <div class="row align-items-center">
            <div class="col-5">
              <p class="m-0"><?= $card['price'] ?> р.</p>
            </div>
            <object class="col">
              <a href="#" class="btn btn-primary w-100">В корзину</a>
            </object>
          </div>
        </div>
      </a>
    </div>
    Ответ написан
    Комментировать