За последние 24 часа нас посетили 22937 программистов и 1726 роботов. Сейчас ищут 2054 программиста ...

Как сделать галерею из картинок добавляемых пользователями

Тема в разделе "PHP и базы данных", создана пользователем iracwet, 21 авг 2014.

  1. iracwet

    iracwet Новичок

    С нами с:
    21 янв 2014
    Сообщения:
    24
    Симпатии:
    0
    Как сделать галерею из картинок добавляемых на доску объявлений, и чтобы при клике на картинку попадали на объявление. Картинки хранятся в папке files/ , например просто вывести картинки из папки у меня получилось
    Код (Text):
    1. <?php
    2.   $dir = 'files/'; // Папка с изображениями
    3.   $cols = 2; // Количество столбцов в будущей таблице с картинками
    4.   $files = scandir($dir); // Берём всё содержимое директории
    5.   echo "<table>"; // Начинаем таблицу
    6.   $k = 0; // Вспомогательный счётчик для перехода на новые строки
    7.   for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы
    8.     if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем
    9.       if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку
    10.       echo "<td>"; // Начинаем столбец
    11.       $path = $dir.$files[$i]; // Получаем путь к картинке
    12.       echo "<a href='$path'>"; // Делаем ссылку на картинку
    13.       echo "<img src='$path' alt='' width='120' />"; // Вывод превью картинки
    14.       echo "</a>"; // Закрываем ссылку
    15.       echo "</td>"; // Закрываем столбец
    16.       /* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */
    17.       if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>";
    18.       $k++; // Увеличиваем вспомогательный счётчик
    19.     }
    20.   }
    21.   echo "</table>"; // Закрываем таблицу
    22. ?>
    а как привязать к картинке ссылку на объявление не знаю
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Как сделать галерею из картинок добавляемых пользователя

    Код (Text):
    1. <a href="site.com/boards/<?=$item_id?>.html" title="ссылка на объявление № "><img src='<?=$path?>' alt='' width='120' /></a>
    ?
     
  3. iracwet

    iracwet Новичок

    С нами с:
    21 янв 2014
    Сообщения:
    24
    Симпатии:
    0
    Re: Как сделать галерею из картинок добавляемых пользователя

    Вот файл вывода объявлений на странице
    Код (Text):
    1. <h3 class="title_page">Объявления</h3>
    2.         <? if($name_razd) :?>
    3.         <h3 class="title_page">Раздел:<?=$name_razd;?></h3>
    4.        
    5.         <? endif;?>
    6.        
    7.        
    8.                 <? if($_SESSION['msg']) : ?>
    9.                     <?=$_SESSION['msg'];?>
    10.                     <? unset($_SESSION['msg']);?>
    11.                 <? endif;?>
    12.                
    13.                 <? if($text):?>
    14.                 <? foreach($text as $item):?>
    15.                 <div class="t_mess">
    16.                     <div class="title_p_mess"><a href="?action=view_mess&id=<?=$item['id']?>"><?=$item['title']?></a>&lowast;  
    17.                    
    18.                 <nobr><?=$item['cat']?></nobr>&lowast;     
    19.                                    
    20.                 <nobr>Город: <?=$item['town']?></nobr></div>
    21.            
    22.                     <p class="p_mess_cat">
    23.                  <img  src="<?=SITE_NAME."/".MINI.$item['img'];?>" alt="" align="right" vspace="10" hspace="30">
    24.                    
    25.                         </br>          
    26.                     <?=nl2br($item['text']);?></p></br>
    27.                 <p class="p_mess_cat">
    28.                            
    29.                         <strong>Цена:</strong> <?=$item['price']?> 
    30.                         <strong>Тел.:</strong> <?=$item['telefon']?>    
    31.                         <strong>Автор:</strong><noindex><a rel="nofollow" href="mailto:<?=$item['email']?>"><?=$item['uname']?></a></noindex>
    32.                        
    33.                          <strong>Дата:</strong> <?=date("d.m.y",$item['date'])?>
    34.                     </p>
    35.            
    36.          
    37.             </div>
    38.            
    39.                 <? endforeach;?>
    , я думаю, что первый файл выводит картинки из файла на сервере и по ссылке он должен вытаскивать само объявление по id ?
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Как сделать галерею из картинок добавляемых пользователя

    В строке вывода ссылки с фотографии галлереи вы должны иметь индентификатор объявления на которое хотите сделать ссылку с каждой фотографии. Для этого эти идентификаторы должны быть извлечены в массив до вывода галлереи. При этом у вас должна быть чёткая связь между выводимой фотографией и объявлением которое ей соответствует.

    Формат самой ссылки на объявление с галлереи должен быть таким, чтобы код "страницы" показа объявлений смог получить идентификатор конкретного объявления
     
  5. iracwet

    iracwet Новичок

    С нами с:
    21 янв 2014
    Сообщения:
    24
    Симпатии:
    0
    Re: Как сделать галерею из картинок добавляемых пользователя

    Код (Text):
    1. <?php
    2. if($_GET['id']){
    3.     $id_mess = (int)$_GET['id'];
    4. }
    5. if($user['user_id']){
    6.     if(check_you_mess($user['user_id'],$id_mess)){
    7.         $can = TRUE;
    8.     }
    9.     else {
    10.         $can = FALSE;
    11.     }
    12.    
    13. }
    14. else {
    15.     $can = FALSE;
    16. }
    17.     $text = get_v_mess($id_mess,$can);
    18.     $img_s = explode("|",$text['img_s']);
    19.     $content = render(TEMPLATE."view_mess.tpl",array(
    20.                                         'text' => $text,
    21.                                         'img_s'  => $img_s
    22.                                                ));
    23.                          
    24.  
    25. ?>
    функция
    Код (Text):
    1. function get_v_mess($id,$can = FALSE) {
    2.         $sql = "SELECT
    3.                     ".PREF."post.id,
    4.                     ".PREF."post.title,
    5.                     img,
    6.                     text,
    7.                     telefon,
    8.                     date,
    9.                     town,
    10.                     price,
    11.                     img_s,
    12.                     ".PREF."post.confirm,
    13.                     is_actual,
    14.                     time_over,
    15.                     ".PREF."users.name AS uname,
    16.                     ".PREF."users.email,
    17.                     ".PREF."categories.name AS cat,
    18.                     ".PREF."razd.name AS razd
    19.                 FROM ".PREF."post
    20.                 LEFT JOIN ".PREF."users ON ".PREF."users.user_id = ".PREF."post.id_user
    21.                 LEFT JOIN ".PREF."categories ON ".PREF."categories.id = ".PREF."post.id_categories
    22.                 LEFT JOIN ".PREF."razd ON ".PREF."razd.id = ".PREF."post.id_razd
    23.                 WHERE ".PREF."post.id = '$id'
    24.                         ";
    25.         if(!$can) {
    26.             $sql .= " AND ".PREF."post.confirm = '1' AND is_actual = '1'";
    27.         }
    28.                        
    29.         $result = mysql_query($sql);
    30.         $row = get_result($result);
    31.        
    32.         return $row[0];            
    33.     }
    как сформировать ссылку не пойму
     
  6. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Как сделать галерею из картинок добавляемых пользователя

    Если из того что изложено вам не ясно как действовать, то вам пока рано заниматься тем чем вы пытаетесь и лучше взять и прорешать задачи с примерами по самоучителю разработки web-приложений на php. Например такому

    Из обрывков кода, которые вы представили можно с большим риском предположить, что для показа объявления, к серверу нужно произвести запрос такого вида: http://site.com/your_board_page_script.php?id=12345
     
  7. iracwet

    iracwet Новичок

    С нами с:
    21 янв 2014
    Сообщения:
    24
    Симпатии:
    0
    Re: Как сделать галерею из картинок добавляемых пользователя

    Спасибо за ссылку, только, что заказала этот самоучитель. Очень трудно пытаться сделать что-то самому, собираю информацию по крупицам из интернета, а на форумах видимо все предполагают , что человек должен все знать, а на самом деле сюда приходишь за помощью. и все-же, может как-то поможете?
     
  8. iracwet

    iracwet Новичок

    С нами с:
    21 янв 2014
    Сообщения:
    24
    Симпатии:
    0
    Re: Как сделать галерею из картинок добавляемых пользователя

    попробовала выбрать из бд все объявления с изображениями
    Код (Text):
    1. $result = mysql_query("SELECT * FROM `mes_post` WHERE `img` NOT IN('-',' ')");
    2. $myrow = mysql_fetch_array($result);
    распечатала массив print_r($myrow); результат
    Array ( [0] => 1 [id] => 1 [1] => Продам [title] => Продам [2] => Продам дом [text] => Продам дом [3] => 1399461535 [date] => 1399461535 [4] => 1 [id_user] => 1 [5] => 9 [id_categories] => 9 [6] => 2 [id_razd] => 2 [7] => Армавир [town] => Армавир [8] => Hydrangeas.jpg => Hydrangeas.jpg [9] => 1 [confirm] => 1 [10] => 1401646618 [time_over] => 1401646618 [11] => 0 [is_actual] => 0 [12] => 2000000 [price] => 2000000 [13] => 0_0.jpg [img_s] => 0_0.jpg [14] => 89528769151 [telefon] => 8952000000 ) Hydrangeas.jpg
    идентификатор объявления - это будет id , в таблице только названия картинок, а сами картинки в папке на сервере "При этом у вас должна быть чёткая связь между выводимой фотографией и объявлением которое ей соответствует". Как мне установить связь, связать картинку с id объявления
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Как сделать галерею из картинок добавляемых пользователя

    Старая книга и еще деньги платить ((( в таким случаях к нам на помощь спешат торренты:)

    если объявления не хранятся в той же таблице что и картинки то между 2 таблицами должна быть связь по внешнему ключу. У тебя так сделано?
     
  10. iracwet

    iracwet Новичок

    С нами с:
    21 янв 2014
    Сообщения:
    24
    Симпатии:
    0
    Re: Как сделать галерею из картинок добавляемых пользователя

    объявления в той же таблице, что и картинки, в таблице название картинки, а не ссылка на адрес. в самом объявлении картинка выводится так
    Код (Text):
    1. <img  src="<?=SITE_NAME."/".MINI.$item['img'];?>" alt="" align="right" vspace="10" hspace="30">
     
  11. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Код (PHP):
    1. <a href="ad_display.php?ad_id=1">
    2.     <img  src="<?=SITE_NAME."/".MINI.$item['img'];?>" alt="" align="right" vspace="10" hspace="30">
    3. </a>
    при выводе ссылки в ad_id подставляем id из таблицы с картинками. При переходе по ссылке выбираем из базы объявление по id и отображаем.

    Что бы удобно было работать лучше выбирать из базы как ассоциативный массив MYSQL_ASSOC.