Как выводить фотографии из базы по категориям

Форум для тех кто начинает осваивать язык php.
albina111484
Сообщения: 31

Как выводить фотографии из базы по категориям

Сообщение albina111484 » Сб апр 25, 2015 12:12 pm

Ребята, помогите начинающему. У меня есть следующая таблица portfolio с ячейками: id, type, name, link. Как сделать, чтобы выводились картинки по type при нажатии на категорию, то есть, чтобы при нажатии на ссылку свадебное фото, выводились свадебные фотографии.
Вставить изображение нужно сюда:

Код: Выделить всё

<div id="viewport">
          <div id="box">
           {IMG}
          </div>
          </div>

Вот ссылки с категориями:

Код: Выделить всё

<div class="content">
           
            <ul id="sdt_menu" class="sdt_menu">
               
                <li>
             
                    <a href="#">
                        <img src="http://www.cyberforum.ru/images/3.png" alt=""/>
                        <span class="sdt_active"></span>
                        <span class="sdt_wrap">
                            <span class="sdt_link">&nbsp;Свадебное</span>
                            <span class="sdt_descr"><br>Свадьба-это бал любви</span>
                        </span>
                    </a>
                </li>
                <li>
                    <a href="#">
                        <img src="http://www.cyberforum.ru/images/4.png" alt=""/>
                        <span class="sdt_active"></span>
                        <span class="sdt_wrap">
                            <span class="sdt_link">&nbsp;Love Story</span>
                            <span class="sdt_descr"><br>&nbsp;Любовь - это жизнь... </span>
                        </span>
                    </a>
                </li>
                <li>
                    <a href="#">
                        <img src="http://www.cyberforum.ru/images/5.png" alt=""/>
                        <span class="sdt_active"></span>
                        <span class="sdt_wrap">
                            <span class="sdt_link">&nbsp;Семейное</span>
                            <span class="sdt_descr"><br>&nbsp;&nbsp;Семья — это дети...</span>
                        </span>
                    </a>
                </li>
               
        </div>
Вложения
Скриншот таблицы - 2015-04-24 14-42-06 Скриншот экрана.png
Скриншот таблицы - 2015-04-24 14-42-06 Скриншот экрана.png (178.5 КБ) 783 просмотра
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как выводить фотографии из базы по категориям

Сообщение Slash » Сб апр 25, 2015 3:11 pm

* ! Пример на пальцах ! * ...
Делаем ссылку с переменной family на категорию, вида: index.php?p=photo&tag=family - это будет ссылка на категорию фотографий Семейное фото.
Ссылка вида: index.php?p=photo&tag=wedding - Молодожены на качелях. И так далее, для всех категорий.
Теперь нам надо принять переменную и выполнить запрос в базу, какие фотографии будем выводить. Делаем так:
В файл index.php вставляем:

Код: Выделить всё

if (isset($_GET['p']))
{
    if ($_GET['p'] == 'photo')
    {
        $tag = isset($_GET['tag']) ? $_GET['tag'] : null;
        if (!$tag)
        {
          echo 'Категория не найдена.';
        }
      # Составляем запрос
      $sql = "SELECT *
          FROM portfolio
         WHERE type_portfolio = '$tag'";
      $query = mysqli_query($connect, $sql);
      if (!$query) # Сработает при не удачи выполнения запроса
      {
          mysqli_error();
      }
        else
        {
          # Выводим полученные фото в цикле
         while($row = mysqli_fetch_assoc($query))
         {
             echo '<img src="' . $row['link_portfolio'] . '">';
         }
        }      
    }
}

Цикл можно выводить в шаблоне:

Код: Выделить всё

<?php while($row = mysqli_fetch_assoc($query)): ?>
    <img src="<?=$row['link_portfolio']; ?>">
<?php endwhile; ?>

albina111484 писал(а):Вставить изображение нужно сюда:

Почитайте тему: Шаблоны в PHP, там описано, как сделать так, как Вам надо.
albina111484
Сообщения: 31

Re: Как выводить фотографии из базы по категориям

Сообщение albina111484 » Пн апр 27, 2015 2:07 am

Спасибо, сейчас буду разбираться :)

Добавлено спустя 1 час 55 минут 2 секунды:
Я запуталась :oops: При переходе на страницу "Портфолио" у меня выводятся из базы все картинки одна за одной по кругу. Из-за этого я не могу разобраться как применить ваш код. Поможете?)))
Есть файл connect.php, с ним все понятно, он подключает к базе.
Есть function.php (выводит картинки из базы):

Код: Выделить всё

<?php
function MyPhoto()
{
    $shablon = file_get_contents('photo.tpl');
    $str ='';

    $page = isset($_GET['page']) ? $_GET['page']:1;

    $page = (int)$page;
    $begin = ($page-1) * COUNT_IMG;
    $begin = ceil($begin);

    $SQL = "SELECT id, name_portfolio, link_portfolio FROM portfolio Limit $begin," . COUNT_IMG;
    $date = mysql_query($SQL);
    $count = mysql_affected_rows();

    if($count==0)
    {
        $str ='no date';
    }
    else
    {
        $mass_marker = array('{ID}','{NAME}','{IMG}');
        for($i=0; $i<$count; $i++)
        {
            $inf = mysql_fetch_array($date);
            $mass_marker_info = array($inf[0], $inf[1],$inf[2]);
            $str .=str_replace($mass_marker,$mass_marker_info,$shablon);
        }
    }
    return $str;
}
?>

Есть index.php:

Код: Выделить всё

<?php
define(COUNT_IMG, 10);
include('connect.php');
include('function.php');


    $page = file_get_contents('slider.tpl');
    $page = str_replace('{IMG}',MyPhoto(),$page);

    echo $page;
?>

Есть slider.tpl(шаблон):

Код: Выделить всё

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>Портфолио</title>
<link href="css/style.css" rel="stylesheet">
   <link href="css/screen.css" rel="stylesheet">
  <script src="js/lib/modernizr.min.js"></script>
</head>
   <body>
   
<a href="../index.php"><img id="main" src="img/logo3.png" class="logotip"></a>
<a href="../index.php"><img src="img/strelka.png" class="strelka"></a>
   
   
      <div id="page">
      <div id="viewport-shadow">

          <a href="#" id="prev" title="go to the next slide"></a>
          <a href="#" id="next" title="go to the next slide"></a>

          <div id="viewport">
          <div id="box">
           {IMG}
          </div>
          </div>

          <div id="time-indicator"></div>
        </div>
 <div class="content">
         
         <ul id="sdt_menu" class="sdt_menu">
            
            <li>
             
               <a href="#">
                  <img src="images/3.png" alt=""/>
                  <span class="sdt_active"></span>
                  <span class="sdt_wrap">
                     <span class="sdt_link">&nbsp;Свадебное</span>
                      <span class="sdt_descr"><br>Свадьба-это бал любви</span>
                  </span>
               </a>
            </li>
            <li>
               <a href="#">
                  <img src="images/4.png" alt=""/>
                  <span class="sdt_active"></span>
                  <span class="sdt_wrap">
                     <span class="sdt_link">&nbsp;Love Story</span>
                     <span class="sdt_descr"><br>&nbsp;Любовь - это жизнь... </span>
                  </span>
               </a>
            </li>
            <li>
               <a href="#">
                  <img src="images/5.png" alt=""/>
                  <span class="sdt_active"></span>
                  <span class="sdt_wrap">
                     <span class="sdt_link">&nbsp;Семейное</span>
                     <span class="sdt_descr"><br>&nbsp;&nbsp;Семья — это дети...</span>
                  </span>
               </a>
            </li>
            <li>
               <a href="#">
                  <img src="images/6.png" alt=""/>
                  <span class="sdt_active"></span>
                  <span class="sdt_wrap">
                     <span class="sdt_link">&nbsp;&nbsp;Детское</span>
                     <span class="sdt_descr"><br>&nbsp;&nbsp;Дети - это счастье...</span>
                  </span>
               </a>
            </li>
         </ul>
      </div>
   </body>
</html>

И есть photo.tpl:

Код: Выделить всё

<div id="box">
<figure class="slide">
<img src="{IMG}">
</figure>
</div>
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как выводить фотографии из базы по категориям

Сообщение Slash » Пн апр 27, 2015 6:50 am

Попробуйте заменить строку запроса в файле: function.php:

Код: Выделить всё

$SQL = "SELECT id, name_portfolio, link_portfolio FROM portfolio Limit $begin," . COUNT_IMG;

на:

Код: Выделить всё

$SQL = "SELECT * FROM portfolio WHERE type_portfolio = '$tag' LIMIT $begin," . COUNT_IMG;

Теперь Вам надо забить переменную $tag названием категории, которая должна выводится на экран. Забить переменную, можно методом GET, как я написал выше, например, как то так: index.php?tag=family (тут адрес надо переписать под Ваш)

Код: Выделить всё

               <a href="index.php?tag=family">
                  <img src="images/5.png" alt=""/>
                  <span class="sdt_active"></span>
                  <span class="sdt_wrap">
                     <span class="sdt_link">&nbsp;Семейное</span>
                     <span class="sdt_descr"><br>&nbsp;&nbsp;Семья — это дети...</span>
                  </span>
               </a>

и в файле: function.php, после:

Код: Выделить всё

$page = isset($_GET['page']) ? $_GET['page']:1;

добавить:

Код: Выделить всё

$tag = isset($_GET['tag']) ? $_GET['tag'] : null;
if (!tag)
{
    $str = 'Категория не найдена';   
}

Данное решение проверить не могу, это всего лишь пример, как делать.
albina111484
Сообщения: 31

Re: Как выводить фотографии из базы по категориям

Сообщение albina111484 » Вт апр 28, 2015 12:07 am

Спасибо Вам оргоооомное!!!! Все получилось!!!! Вы мне очень помоги.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как выводить фотографии из базы по категориям

Сообщение Slash » Вт апр 28, 2015 5:37 am

albina111484, всегда пожалуйста!
Я рад, что смог помочь. Зовите если что ;)

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя