За последние 24 часа нас посетили 31954 программиста и 1756 роботов. Сейчас ищет 941 программист ...

Галерея

Тема в разделе "PHP для новичков", создана пользователем marwin22, 23 сен 2007.

  1. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    подскажите пожалуйста как лучше сделать галерею:
    1) использовать glob() для чтения картинок из папок, а потом выводить.
    2) или заносить все картинки и альбомы галереи в базу mysql и оттуда вытаскивать.
    мне кажется что более правильным будет 2ой вариант, ибо ведь в массив в таком случае будет заноситься большое количество значений.
     
  2. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    имхо, вы слишком мало информации предоставили, чтобы мы решили такой вопрос....
    если задача сводиться только к тому чтоб пооказать картинки(личная галлерея), то подойдёт и первый вариант....

    а если вы хотите создать галлерею в которой со сложной структурой, для множества пользователей, регисрацией, комментраиями к картинкам, то возможно разунее использовать MySQL. Возможно я не прав, пусть тогда ув. гуру меня вразумят...
     
  3. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    галерея с возможностью добавления картинок пользователями, комментариев к картинкам не будет. также хочу разделить галерею на разделы(ну или альбомы).
     
  4. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    ну вот, а я там уже накатал предложение превратить эту ветку в базу знаний по этой теме... :)

    а деление на каталоги сделатее папкми.
     
  5. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    я думал сделать такое деление, но просто если в каталоге много файлов это ж будет оч много значений в массиве.
     
  6. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    ну, тогда сделайте с базой данных.
     
  7. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    только в БД тоже будет много значений, если много файлов :)
     
  8. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    спасибо большое
     
  9. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Вся структура галереи и имена фотографий в базе. Иначе начнёт тормозить на большом кол-ве фоток.
     
  10. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    ну и что, что в бд много записей....

    зато извлекать все записи не обязательно... (LIMIT 0,30)
     
  11. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    можно.
    их тоже не все можно извлекать
     
  12. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    да, но размер массива от этого не уменьшиться...
     
  13. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    можно и уменьшать.
     
  14. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    glob

    вернёт список всех файлов из дериктории.... а потом вы предлогаете подчищать массив???

    а зачем ваще стока телодвижений делать..... это занимает память и процессоное время... из базы данных можно получить ровно столько записей, сколько необходимо....
     
  15. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    если БД нет, то да. Если есть (и нет строгих ограничений - БД) вот что я предлагаю.
     
  16. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
  17. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    может кто подскажет с LIMIT'ом как сделать чтобы из базы в массив записывались несколько значений вот я сделал так:
    PHP:
    1. $res=mysql_query('SELECT `bred` FROM `bred` LIMIT 0,1',$db);
    2. $bred=mysql_fetch_row($res);
    3. print_r($bred);
    но он почему то записывает в массив и выводит только 1 значение из первой строки, из 2ой он уже не читает. помогите плз нубу.
     
  18. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    ну правельно... так он и должен...


    в лимите первая цифра это смещение от первой записи а вторая количество записей, которые надо считаь....

    например, (SELECT.... LIMIT 5,6) пропустит первые 4 или 5 (надо пробовать - не помню), и возвратит следующие за ними 6 значений....

    П.С.

    http://www.internet-technologies.ru/books/book_190.html

    вот полисай эту книгу и множество вопросов отпадёт...

    http://file009.mylivepage.com/chunk9/241089/235/WinDjView-0.5.exe

    а вот этим её можно полистать(если сам не додумаешся)
     
  19. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    SELECT ... LIMIT 5 - выводит первые 5 записей
    SELECT ... LIMIT 1,5 - делит все строки на 5 частей и выводит первую часть.
    То есть:
    row1
    row2
    row3
    row4
    row5
    row6
    row7
    row8
    row9
    row10
    SELECT ... LIMIT 1,5 выведет - row1,row2
    SELECT ... LIMIT 2,5 выведет - row3,row4
    SELECT ... LIMIT 5,5 выведет - row9,row10
    А SELECT ... LIMIT 3 выведет - row1,row2,row3
     
  20. sms-send

    sms-send Активный пользователь

    С нами с:
    29 сен 2007
    Сообщения:
    1
    Симпатии:
    0
    Ниче подобного =)
    SELECT ... LIMIT 1,5 выведет - row2,row3,row4,row5,row6
    SELECT ... LIMIT 2,5 выведет - row3,row4,row5,row6,row7
    SELECT ... LIMIT 5,5 выведет - row6,row7,row8,row9,row10
    А SELECT ... LIMIT 3 выведет - row1,row2,row3 // ну да, вот тут верно =)


    Т.к. LIMIT Y - выбирает первые Y рядов из таблицы,
    а LIMIT X,Y - выбирает Y записей, начиная с записи с порядковым номером X (порядковая нумерация начинается с нуля).
     
  21. pandinus

    pandinus Активный пользователь

    С нами с:
    11 июл 2007
    Сообщения:
    54
    Симпатии:
    0
    +1

    я это даже проверил на следующий день(использовал это для гостевухи на MySQL) - работает имено так, но спорить не стал....
     
  22. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    подскажите че делать с этим лимитом
    PHP:
    1.  
    2. <?php
    3. $db=mysql_connect("localhost","root","password");
    4. mysql_select_db('gallery',$db);
    5. $res=mysql_query('SELECT `new` FROM `test` LIMIT 3',$db);
    6. ?>
    7.  
    в результате пхп выводит только одно значение взятое из таблицы. почему он записывает в массив только 1 значение? или несколько значений сразу незя??
     
  23. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    PHP:
    1. <?php
    2. $res=mysql_query('SELECT `new` FROM `test` LIMIT 3',$db);
    3. while($row=mysql_fetch_row($res))
    4.     $tmp[]=$row;
    5.  
    6. echo '<pre>';
    7. print_r($tmp);
    8. echo '</pre>';
    9. ?>
     
  24. marwin22

    marwin22 Активный пользователь

    С нами с:
    15 авг 2007
    Сообщения:
    21
    Симпатии:
    0
    вот тоже самое я прочитал в учебнике. Но получается нельзя никак кроме массив в массиве?
     
  25. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а подумать?
    PHP:
    1.  <?php
    2. $tmp = array();
    3.  $res=mysql_query('SELECT `new` FROM `test` LIMIT 3',$db);
    4.  while($row=mysql_fetch_row($res))
    5.      $tmp = array_merge ($tmp, $row);
    6.  
    7.  echo '<pre>';
    8.  print_r($tmp);
    9.  echo '</pre>';
    10.  ?>