Forum Webscript.Ru

Программирование => PHP => Тема начата: Miller от 06 Декабря 2003, 04:25:25

Название: простенькая фотогалерея
Отправлено: Miller от 06 Декабря 2003, 04:25:25
Тему создаю т.к. в поиске ничего подходящего не нашел.
вот по этому адресу проживает ранняя-ранняя версия сайта... http://www.svaoscooters.u9.ru/zybon/
идея такая: слева и справа проживают ссылки на галереи в виде картинки, когда кликаешь, грузятся тамбнейлы в центральную часть, кликаешь на тамбнеил, появляется картинка, а внизу ссылки на остальные картинки (1 2 3 4 5 6 7 8...) и стрелочки "первая" "предыдущая" "следующая" "последняя". На HTML сделать не пробелма, но пора уже и рости, книги по php у меня есть, вы хотя бы тока намекните, у меня несколько вопросов по авторматизации процесса.
1. Надо чтобы в папке photo были папки 1, 2, 3, 4 и .т.д.
и чтобы галереи с названием четных папок браузер показывал в левой колонке, а нечетные - в правой.
2. Надо чтобы откуда-то грузилась информация о галерее например в папке 1 лежит фаил conf.txt в нем в первой строчке - дата, во второй - автор, в третьей описание.
3. т.к. размеры тамбнейлов для левой и правой колонок, в отличие от тех что будут в середине, будут больше то надо чтобы в папке, например 1, был фаил tumb.jpg который скрипт (в каждой папке есть один фаил с этим именем) и его скрипт подгружает в правую и левую колноки.
4. Как научить считать скрипт колличество фотографий (формат имени например i055.jpg, i056.jpg, i057.jpg ).
А потом в ссылки стрелочек (первая, последняя..) вставлять соответствующий текст, а так же как научить, чтобы ссылка на следующую картинку сама изменялась (напрмер у вас загружена фото номер 3, ссылка на i004.jpg вы кликаете загружается страничка с картинкой 4, и та же ссылка у вас уже на i005.jpg)?

Вроде все, буду признателен если не будет прямых оскорблений, я сам знаю что я ламер в этом деле.
Название: простенькая фотогалерея
Отправлено: Miller от 06 Декабря 2003, 08:27:09
я тут надумал за ночь по поводу стрелок "следующая" и "предыдущая" - c помошью функции if проверяем (правда не знаю как) имя файла если оно начинается на i, то выдергиваем цифру (тоже не знаю как) 078, ей присваиваем например имя... $ph_number, потом для ссылки "следующая" пишем что-то вроде \'i\' . (078 + 1) . \'.jpg\'. Почти тоже самое и с предидущей \'i\' . (078 - 1) . \'.jpg\'. Я в правильном направлении думаю?
А с помощью какой функции можно для ссылки "выдернуть" номер последнего файла...? опять проверка имени елси i, то "check all names and use last" - супер-мега функция. :)
Название: простенькая фотогалерея
Отправлено: FreeSpace от 06 Декабря 2003, 15:17:04
Общие ссылки:
[p]opendir[/p]
[p]readdir[/p]
[p]is_dir[/p]
[p]file_exists[/p]
аплоад (http://detail.phpclub.net/article/upload)
[p]umask[/p]
Цитировать
Miller:
Надо чтобы в папке photo были папки 1, 2, 3, 4

[p]mkdir[/p]
[p]rmdir[/p]
Цитировать
Miller:
и чтобы галереи с названием четных папок браузер показывал в левой колонке, а нечетные - в правой.

$a % $b (http://www.php.net/manual/ru/language.operators.arithmetic.php)
Цитировать
Miller:
фаил conf.txt

[p]fopen[/p]
[p]fgets[/p]
[p]fclose[/p]
[p]file[/p] (не используй для больших файлов!)
[p]unlink[/p]
Цитировать
Miller:
фаил tumb.jpg

[p]ImageCreateFromJPEG[/p] или другие ImageCreateFrom*
[p]ImageCreateTrueColor[/p] или в крайнем случае [p]ImageCreate[/p]
[p]ImageCopyResampled[/p] или в крайнем случае [p]ImageCopyResized[/p]
[p]ImageJPEG[/p] или [p]ImagePNG[/p] или им подобные (обрати внимание на второй и третий необязательные аргументы)

Цитировать
Miller:
Как научить считать скрипт колличество фотографий

Формат имени для этого знать не нужно.
В цикле читаешь содержимое директории с фотографиями (смотри пример в [p]opendir[/p]) и считаешь их например через $i++ или сначала складываешь в массив, а потом через count($array). Если не знаешь, что такое $i++ или что такое массив, сначала перечитай свои книжки или документацию (http://www.php.net/manual/ru/), за фотогалерею тебе браться рано.

Когда осилишь всё это, дальнейшие вопросы должны отпасть сами собой.

Если окончательно запутался, советую перечитать разелы II, III и IV руководства (http://www.php.net/manual/ru/), а затем выбрать то, что тебе нужно, из раздела V.
Название: простенькая фотогалерея
Отправлено: Miller от 06 Декабря 2003, 20:16:47
во спасибо, щас буду читать :)
Название: простенькая фотогалерея
Отправлено: Miller от 06 Декабря 2003, 20:20:41
А кто нибудь может мне ответить на вопрос, почему когда я пишу print "
"; мне пиут об ошибке, а когда я пишу print \'
\';
сторка переносится?
Название: простенькая фотогалерея
Отправлено: Miller от 06 Декабря 2003, 20:24:46
сори за флуд...
А как заставить скрипт считать только файлы начинающиеся на "i"?
И вот еще... я написал таку строку:
$info = fopen ("photo/conf.txt", "r");
print "Автор: $info"; // Тут надо показать Только первую строку из файла conf.txt
print "Дата: $info"; // Тут надо показать Только вторую строку из файла conf.txt
print "Описание: $info"; // Тут надо показать Только третью строку из файла conf.txt
Может сужествует какая-нить команда типа show_only_second_line :rolleyes:
Название: простенькая фотогалерея
Отправлено: FreeSpace от 06 Декабря 2003, 20:44:08
Елси что-то забыл спросить, можно отредактировать своё сообщение, чтобы не устраивать длинные монологи.

Цитировать
Miller:
почему когда я пишу print "
"; мне пиут об ошибке, а когда я пишу print \'
\'; сторка переносится?

Не верю.
Приведи код, как он есть.
Цитировать
Miller:
как заставить скрипт считать только файлы начинающиеся на "i"?

А что, ты всё остальное уже перечитал?
Если бы послушал меня, тебе бы не пришлось читать файлы, начинающиеся на i. Ты бы читал просто все файлы из директории.
Но если хочешь начинающиеся на i, то пожалуйста (пример взял из мана по [p]readdir[/p]):
$dir = "/tmp/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            // проверка первой буквы
            if ($file{0} != \'i\') continue;
            print "filename: $file : filetype: " . filetype($dir . $file) . "\\n";
        }
        closedir($dh);
    }
}
Название: простенькая фотогалерея
Отправлено: Miller от 06 Декабря 2003, 21:49:55
Насчет переноса строка - щас все перепроверил... работает, сегодня ночью не работало...
Может ты меня не допонял, я хочу чтобы в папке photo (папка с галереями) были папки (закачиваются через ftp) 1, 2, 3, 4, 5, 6, 7 (это галереи), в этих папках 3 "группы" файлов, первая - фаил с конфигом этой галереи (автор, дата, описание), вторая - tumb.jpg - используется ТОЛЬКО как тамбнеил для левой или праввой колонок и третий - это сами фотграфии, поскольку в папке есть и другой .jpg фаил, то надо их как то обозначить, я решил отбозначить их буковй "i" i_номер_картинки_.jpg.
Кстати, чтение из файла одной сторки это функция fgets

попутно возник еще один вопрос
допустим я написал
$file_number = "054";
print "$file_number"; //выводит ПРОСТО 54, как сделать так, чтобы выводилось 054, и в тоже время это оставалось числом?
и вот еще, где тут ошибка, т.к. не вывдоится i055.jpg?:
$img_num = "054";
$link_next = $img_num + 1;
$file_name = \'i\' . \'0\' . $link_next . \'.jpg\';
print "$filename";
?>
Название: простенькая фотогалерея
Отправлено: FreeSpace от 06 Декабря 2003, 21:58:56
Я всё прекрасно понял.
Вот только вместо того, чтобы геморроится с этими префиксами "i", можно пойти методом исключения: если файл не "config.txt" и не "thumb.jpg", то это - фотка.
Но вот после этой строчки
Цитировать
Miller:
Кстати, чтение из файла одной сторки это функция fgets

я тебе вообще отвечать не собираюсь.
Ты это мне объясняешь или для себя итог подводишь?
Нахрена я вообще первое сообщение в этой теме писал по-твоему?
Иди перечитай все ссылки и не задавай вопросов, на которые уже получил ответ.
Название: простенькая фотогалерея
Отправлено: Miller от 07 Декабря 2003, 02:16:25
я конечно извиняюсь, но все таки может мне кто подскажет как с помощью fgets показать только, например, вторую строку?
Название: простенькая фотогалерея
Отправлено: FreeSpace от 07 Декабря 2003, 02:37:38
Да хотя бы так:
fgets($fp);
$stroka_dva = fgets($fp);
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 07 Декабря 2003, 19:43:53
Miller, не майся дурью по поводу fgets.
считывай весь свой conf ЦЕЛИКОМ.
Вот такой командой:
if (is_readable(\'conf.txt\')) list($avtor,$data,$opisanie)=file(\'conf.txt\');

Не надо тебе никаких третьих или десятых строк.
считываешь в начале скрипта содержимое файла в переменные, а дальше вставляешь, где надо.

По поводу галереи очень рекомендую прочесть вот это
http://xpoint.ru/forums/programming/PHP/thread/23546.xhtml

И, САМОЕ ГЛАВНОЕ
*************************************************
*************************************************
НЕ ПЫТАЙСЯ СДЕЛАТЬ ВСЕ СРАЗУ!
*************************************************
*************************************************

Делай постепенно.
У тебя полная каша - и в две колонки выводить, и тумбнайлы разные, и инфа.
Делай постепенно.

Забудь сейчас вообще про все, что ты тут напридумывал.
сделай просто галерею, которая тебе выводит ссылки на картинки.
Это ОСНОВНОЕ!
Потом сделай свой конфиг.
и только потом уже с тумбнайлами, колонками и прочим.
Название: простенькая фотогалерея
Отправлено: Miller от 07 Декабря 2003, 20:28:51
Пасибо большое!
Я уже организовал совсем простенький просмотр, а конфиг грузится из одного файла - массива, туда просто добавляешь переменную, нолик и все... теперь пытаюсь сделать, так чтобы не надо было делать список картинок...
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 07 Декабря 2003, 20:35:19
ну и как - разобрался?
если я правиль6но понял, что ты имеешь в виду, то как раз про список и идет речь по ссылке, которую я тебе дал
Название: простенькая фотогалерея
Отправлено: Miller от 07 Декабря 2003, 23:55:23
У меня будет фотоальбом, с несколькими глаереями, но я пока иду от обратного - начал с самого показа снимков, НО информация о том, где лежат фотографии, грузится из массива, это решение позволит создать несколько галлерей. А вот как сделать кнопочки "предыдущая" "следующая".
Отличное наглядное пособие.
Сенкс
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 08 Декабря 2003, 00:11:08
Из массива или из текстового файла?
Мне кажется, текстовый файл, как ты раньше хотел - было бы предпочтительнее.
у меня так сделан скрипт мп3 галереи. он просматривает все файлы в каталоге (ну, классический пример из мана), имена mp3 файлов выводятся, как есть, а если встречается каталог, то в нем ищется файл с описанием и из него берется первая строчка - название альбома, и выводится как текст ссылки.
Очень гибко и удобно.
И можно делать любое количество каталогов любой глубины вложенности.

да, и если встречается описание, то оно, конечно, выводится.
Поэтому имена мп3шек сначала загоняются в массив.
Ну, их все равно потом сортировать...
Название: простенькая фотогалерея
Отправлено: Miller от 08 Декабря 2003, 02:13:55
Я немного не понял
"он просматривает все файлы в каталоге (ну, классический пример из мана), имена mp3 файлов выводятся, как есть,"
"Поэтому имена мп3шек сначала загоняются в массив"
Как это, если он выводит как есть имена, и имена же загоняются в массив.

Кстати, у меня какие то странности, у меня есть фаил photo.php,
и conf.php
в conf.php записано:
$title[0] = "Галерея 1";
$gal[0] = "http://localhost/gallery/photos/1";

в photo.php записано:

include ("conf.php");
if (!isset($title[$gal])){
$i=0;
}
print "$title[$gal]";

Скрипт не показывает в title текст "Галерея 1"

Кстати, я везде на форуме встречаю php код разных цветов, это из какого то редактора вставляется?
Название: простенькая фотогалерея
Отправлено: Miller от 08 Декабря 2003, 05:40:51
До меня не доходит еще один момент:
хочется иметь ссылку вида /photo.php?gal=1&foto=3
Совсем мылсей нет как это сделать без заненсения списка фотографий в массив.
opendir, readdir, sort... а дальше что незнаю.
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 08 Декабря 2003, 13:24:40
Не показывает у тебя по той же причине, что и br не печатало.

обращаться к фотке точно так же, как и при прорисовке галереи. только там ты выводишь весь массив, а здесь - только один его элемент.
Не понял я, какие трудности.

Зачем тебе массив $gal - я тоже не понял.
Название: простенькая фотогалерея
Отправлено: FreeSpace от 08 Декабря 2003, 19:21:03
Цитировать
Miller:
Кстати, я везде на форуме встречаю php код разных цветов, это из какого то редактора вставляется?

ббкод [ PHP ] - без пробелов.
Например [ PHP ] phpinfo(); [ /PHP ]
Цитировать
Miller:
До меня не доходит еще один момент: хочется иметь ссылку вида /photo.php?gal=1&foto=3

А почему бы тебе не называть директории-галереи как 1, 2, 3, 4? А фотки - 1.jpg, 2.jpg и т.д.
Хотя и в /photo.php?gal=flowers&foto=rose12 ничего плохого не вижу.
Название: простенькая фотогалерея
Отправлено: Miller от 08 Декабря 2003, 20:32:03
FreeSpace у меня так и есть, я уже отказался от фоток вида i1.jpg, а директории-галереи тоже так называются.

RomikChef я не понял твой вопрос... зачем мне $gal? -
чтобы можно было работать с несколькими галереями.
Я с просмотром самих фотографий разобрался, даже присобачил переменную $gal, ссылка наконец-то выглядит нормально, но есть одна проблема - я просмотриваю тамбнейлы из галереи 2, когда кликаю на картинку, например 3, по идее мне должны показать
картинку по этому адресу photo/2/4.jpg а показывают photo/1/4.jpg, почему то читаются из перовой галереи картинки...
у меня прописано:

for ($i=0; $i{
if (!isset($gal))
{
$gal="$picurl[$i]";
}
}

$picurl грузится из конфига...
а в ссылке я пишу

$PHP_SELF?gal=$i&photo=$foto_next

проверял
$gal посредствам print - показывает циферку 1...
И в ссылке все в порядке.
Не угляжу никак где ниточка обравается...
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 08 Декабря 2003, 22:27:40
не очень я понимаю твоих проблем.
не очень мне нравится и твой метод.
прописывать что-то, отписывать.
Вместо того, чтобы скрипт все сам выводил, тебе надо еще при добавлении галереи править ПРОГРАММУ. Это бред.
Мне не хочется даже вникать в это.

разве что, обратил внимание на вот это
$iэто тебе приснилось или подсказал кто?
Название: простенькая фотогалерея
Отправлено: Miller от 09 Декабря 2003, 01:50:50
вообще то подсказали, но уже все работает, я сам додулмался, теперь дело за малым :) большое спасибо за помощь, не думаю, что сам справился бы так скоро.
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 09 Декабря 2003, 12:06:35
Цитировать
Miller:
вообще то подсказали

Ну так ты его больше не слушай. он тебе подскажет...
Название: простенькая фотогалерея
Отправлено: Miller от 09 Декабря 2003, 18:03:44
А что быть должно?
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 09 Декабря 2003, 20:45:29
Неважно, что быть должно. но
for ($i=0; $iбыть НЕ ДОЛЖНО. и работать не должно.
Название: простенькая фотогалерея
Отправлено: FreeSpace от 09 Декабря 2003, 20:57:47
Наверняка должно было быть
for ($i=0; $i
Хотя если $gal - не массив, то смысла в этом не больше чем в isset...
Название: простенькая фотогалерея
Отправлено: Miller от 10 Декабря 2003, 04:39:06
это было непонятно что, я большую часть удалил, все работает так же.
Мне уже ответили, что надо делать, чтобы показать слева - четный галереи а справа нечетные - поделить по модулю. Я хочу, чтобы мне привели пример, но если ниже описаный способ лучше, то можете не обьянсять.
В conf.php для каждой левой галереи добавляем:
$is_left[0];
//соответственно в массиве [1] сторчки $is_left не будет

Потом
в самом файле пишем:

if (!isset($is_left))
{
// показать галерею в правой колонке
}
else
{
// показать галерею в левой колонке
}

только до меня не доходит - как сказать скрипту, где
именно находится место, где надо покзать левые, а где - все остальные?
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 11:01:24
Слушай, Miller, давай ты будешь только в одном месте пастись? Я не пойму: тебе сказали, ты не понял, и пришел у нас переспрашивать. Иди туда, где тебе сказали.
Название: простенькая фотогалерея
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 11:04:56
Если у тебя есть вопросы - можешь написать мне приватом.
А пока я тему закрываю.
Мне не нравится твое отношение.

Такое ощущение, что где-то там сидит крутой спец, которому досуг выдавать только концепции и руководящие указания. С вопросом по реализации к нему обратиться нельзя. С такими мелочами - на форум. мне кажется это унизительным.