Forum Webscript.Ru
Программирование => PHP => Тема начата: 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)?
Вроде все, буду признателен если не будет прямых оскорблений, я сам знаю что я ламер в этом деле.
-
я тут надумал за ночь по поводу стрелок "следующая" и "предыдущая" - c помошью функции if проверяем (правда не знаю как) имя файла если оно начинается на i, то выдергиваем цифру (тоже не знаю как) 078, ей присваиваем например имя... $ph_number, потом для ссылки "следующая" пишем что-то вроде \'i\' . (078 + 1) . \'.jpg\'. Почти тоже самое и с предидущей \'i\' . (078 - 1) . \'.jpg\'. Я в правильном направлении думаю?
А с помощью какой функции можно для ссылки "выдернуть" номер последнего файла...? опять проверка имени елси i, то "check all names and use last" - супер-мега функция. :)
-
Общие ссылки:
[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.
-
во спасибо, щас буду читать :)
-
А кто нибудь может мне ответить на вопрос, почему когда я пишу print "
"; мне пиут об ошибке, а когда я пишу print \'
\';
сторка переносится?
-
сори за флуд...
А как заставить скрипт считать только файлы начинающиеся на "i"?
И вот еще... я написал таку строку:
$info = fopen ("photo/conf.txt", "r");
print "Автор: $info"; // Тут надо показать Только первую строку из файла conf.txt
print "Дата: $info"; // Тут надо показать Только вторую строку из файла conf.txt
print "Описание: $info"; // Тут надо показать Только третью строку из файла conf.txt
Может сужествует какая-нить команда типа show_only_second_line :rolleyes:
-
Елси что-то забыл спросить, можно отредактировать своё сообщение, чтобы не устраивать длинные монологи.
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);
}
}
-
Насчет переноса строка - щас все перепроверил... работает, сегодня ночью не работало...
Может ты меня не допонял, я хочу чтобы в папке 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";
?>
-
Я всё прекрасно понял.
Вот только вместо того, чтобы геморроится с этими префиксами "i", можно пойти методом исключения: если файл не "config.txt" и не "thumb.jpg", то это - фотка.
Но вот после этой строчки
Miller:
Кстати, чтение из файла одной сторки это функция fgets
я тебе вообще отвечать не собираюсь.
Ты это мне объясняешь или для себя итог подводишь?
Нахрена я вообще первое сообщение в этой теме писал по-твоему?
Иди перечитай все ссылки и не задавай вопросов, на которые уже получил ответ.
-
я конечно извиняюсь, но все таки может мне кто подскажет как с помощью fgets показать только, например, вторую строку?
-
Да хотя бы так:
fgets($fp);
$stroka_dva = fgets($fp);
-
Miller, не майся дурью по поводу fgets.
считывай весь свой conf ЦЕЛИКОМ.
Вот такой командой:
if (is_readable(\'conf.txt\')) list($avtor,$data,$opisanie)=file(\'conf.txt\');
Не надо тебе никаких третьих или десятых строк.
считываешь в начале скрипта содержимое файла в переменные, а дальше вставляешь, где надо.
По поводу галереи очень рекомендую прочесть вот это
http://xpoint.ru/forums/programming/PHP/thread/23546.xhtml
И, САМОЕ ГЛАВНОЕ
*************************************************
*************************************************
НЕ ПЫТАЙСЯ СДЕЛАТЬ ВСЕ СРАЗУ!
*************************************************
*************************************************
Делай постепенно.
У тебя полная каша - и в две колонки выводить, и тумбнайлы разные, и инфа.
Делай постепенно.
Забудь сейчас вообще про все, что ты тут напридумывал.
сделай просто галерею, которая тебе выводит ссылки на картинки.
Это ОСНОВНОЕ!
Потом сделай свой конфиг.
и только потом уже с тумбнайлами, колонками и прочим.
-
Пасибо большое!
Я уже организовал совсем простенький просмотр, а конфиг грузится из одного файла - массива, туда просто добавляешь переменную, нолик и все... теперь пытаюсь сделать, так чтобы не надо было делать список картинок...
-
ну и как - разобрался?
если я правиль6но понял, что ты имеешь в виду, то как раз про список и идет речь по ссылке, которую я тебе дал
-
У меня будет фотоальбом, с несколькими глаереями, но я пока иду от обратного - начал с самого показа снимков, НО информация о том, где лежат фотографии, грузится из массива, это решение позволит создать несколько галлерей. А вот как сделать кнопочки "предыдущая" "следующая".
Отличное наглядное пособие.
Сенкс
-
Из массива или из текстового файла?
Мне кажется, текстовый файл, как ты раньше хотел - было бы предпочтительнее.
у меня так сделан скрипт мп3 галереи. он просматривает все файлы в каталоге (ну, классический пример из мана), имена mp3 файлов выводятся, как есть, а если встречается каталог, то в нем ищется файл с описанием и из него берется первая строчка - название альбома, и выводится как текст ссылки.
Очень гибко и удобно.
И можно делать любое количество каталогов любой глубины вложенности.
да, и если встречается описание, то оно, конечно, выводится.
Поэтому имена мп3шек сначала загоняются в массив.
Ну, их все равно потом сортировать...
-
Я немного не понял
"он просматривает все файлы в каталоге (ну, классический пример из мана), имена 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 код разных цветов, это из какого то редактора вставляется?
-
До меня не доходит еще один момент:
хочется иметь ссылку вида /photo.php?gal=1&foto=3
Совсем мылсей нет как это сделать без заненсения списка фотографий в массив.
opendir, readdir, sort... а дальше что незнаю.
-
Не показывает у тебя по той же причине, что и br не печатало.
обращаться к фотке точно так же, как и при прорисовке галереи. только там ты выводишь весь массив, а здесь - только один его элемент.
Не понял я, какие трудности.
Зачем тебе массив $gal - я тоже не понял.
-
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 ничего плохого не вижу.
-
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...
И в ссылке все в порядке.
Не угляжу никак где ниточка обравается...
-
не очень я понимаю твоих проблем.
не очень мне нравится и твой метод.
прописывать что-то, отписывать.
Вместо того, чтобы скрипт все сам выводил, тебе надо еще при добавлении галереи править ПРОГРАММУ. Это бред.
Мне не хочется даже вникать в это.
разве что, обратил внимание на вот это
$iэто тебе приснилось или подсказал кто?
-
вообще то подсказали, но уже все работает, я сам додулмался, теперь дело за малым :) большое спасибо за помощь, не думаю, что сам справился бы так скоро.
-
Miller:
вообще то подсказали
Ну так ты его больше не слушай. он тебе подскажет...
-
А что быть должно?
-
Неважно, что быть должно. но
for ($i=0; $iбыть НЕ ДОЛЖНО. и работать не должно.
-
Наверняка должно было быть
for ($i=0; $i
Хотя если $gal - не массив, то смысла в этом не больше чем в isset...
-
это было непонятно что, я большую часть удалил, все работает так же.
Мне уже ответили, что надо делать, чтобы показать слева - четный галереи а справа нечетные - поделить по модулю. Я хочу, чтобы мне привели пример, но если ниже описаный способ лучше, то можете не обьянсять.
В conf.php для каждой левой галереи добавляем:
$is_left[0];
//соответственно в массиве [1] сторчки $is_left не будет
Потом
в самом файле пишем:
if (!isset($is_left))
{
// показать галерею в правой колонке
}
else
{
// показать галерею в левой колонке
}
только до меня не доходит - как сказать скрипту, где
именно находится место, где надо покзать левые, а где - все остальные?
-
Слушай, Miller, давай ты будешь только в одном месте пастись? Я не пойму: тебе сказали, ты не понял, и пришел у нас переспрашивать. Иди туда, где тебе сказали.
-
Если у тебя есть вопросы - можешь написать мне приватом.
А пока я тему закрываю.
Мне не нравится твое отношение.
Такое ощущение, что где-то там сидит крутой спец, которому досуг выдавать только концепции и руководящие указания. С вопросом по реализации к нему обратиться нельзя. С такими мелочами - на форум. мне кажется это унизительным.