Ситуация.
За основу взята много уровневая галерея.
Есть папка "images". В ней содержится ещё, к примеру, три папки "Cars" , "Ships", "Trains".
В этой же папке, "images", содержится один текстовый файл "categories". Этот файл содержит название трёх папок ("Cars" , "Ships", "Trains") на Русском языке: Автомобили, Корабли, Поезда.
Структура каталога "images":
+ images
- cars
- ships
- trains
- categories.txt
Структура содержимого файла "categories.txt":
Автомобили
Корабли
Поезда
После обработки кодом имеются два массива:
Array
(
[0] => Автомобили
[1] => Корабли
[2] => Поезда
)
Array
(
[0] => cars
[1] => ships
[2] => trains
)
Вопрос.
Как связать эти два массива, принимая во внимание что:
1) папки сортируются по алфавиту;
2) названия папок на Русском языке тоже буду сортироваться по алфавиту;
3) названия категорий на Русском языке будут удаляться/переименовываться;
4) папки тоже будут удаляться/переименовываться (ну это само собой);
Т.е при создании категории "Самолеты", создается папка "Airplane"
Получаем следующие массивы:
Array
(
[0] => Автомобили
[1] => Корабли
[2] => Поезда
[3] => Самолеты
)
Array
(
[0] => airplane
[1] => cars
[2] => ships
[3] => trains
)
При выборе категории "Автомобили", попадаем в папку "airplane"
Нужно чтобы было так:
Array
(
[0] => Автомобили
[1] => Корабли
[2] => Поезда
[3] => Самолеты
)
Array
(
[3] => airplane
[0] => cars
[1] => ships
[2] => trains
)
Это к примеру. Может быть и по другому. Внешний вид массивов меня мало беспокоит. Главное правельная связь между названиями категорий и папками.
Сортировка массивов папок тоже особо не волнует. Все равно как.
Больше волнует сортировка категорий на Русском языке и связь их с папками, то есть с массивами папок.
Как сделать сортировку массивов я знаю. Но вот как правильно связать с папками, пока незнаю.
Структура массива папок не стабильна. При создании каждой новой папки она меняется. Это усложняет задачу.
Помогите плиз, если есть желание и возможность.
Спустя 13 минут, 39 секунд (18.06.2011 - 03:01) walerus написал(а):
А кто или что мешает сделать файл categories.txt не текстовым а сериализированным массивом допустим ?...
и массив формировать по принципу
и массив формировать по принципу
Array
(
[cars] => Автомобили
[ships] => Корабли
[trains] => Поезда
[airplane] => Самолеты
)
Спустя 15 минут, 30 секунд (18.06.2011 - 03:17) gen552 написал(а):
Я не зря завел текстовый файл.
Название категории будет создаваться не ручками, а методом POST. То есть банально в текстовом поле: Самолёты -> создать... и на сервер.
А записать то его куда то нужно...
Название категории будет создаваться не ручками, а методом POST. То есть банально в текстовом поле: Самолёты -> создать... и на сервер.
А записать то его куда то нужно...
Спустя 28 минут, 22 секунды (18.06.2011 - 03:45) Игорь_Vasinsky написал(а):
какая то не реальная затея
папки в массиве сортируются по имени....
тогда и инфу в текст. файл не по сортировке а в нужном порядке пиши, а проще - как walerus - показал, ключи - название папок - элементы - выдёргивай и в файл пиши - по строчно, так твой ассициотивный массив - будет взаимодействовать с индексным (содержимое текстового файла.)
UPD: след-но и с этим:
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
тогда и инфу в текст. файл не по сортировке а в нужном порядке пиши, а проще - как walerus - показал, ключи - название папок - элементы - выдёргивай и в файл пиши - по строчно, так твой ассициотивный массив - будет взаимодействовать с индексным (содержимое текстового файла.)
UPD: след-но и с этим:
Цитата |
Как связать эти два массива, принимая во внимание что: 1) папки сортируются по алфавиту; 2) названия папок на Русском языке тоже буду сортироваться по алфавиту; 3) названия категорий на Русском языке будут удаляться/переименовываться; 4) папки тоже будут удаляться/переименовываться (ну это само собой); |
можно будет управиться
Спустя 40 минут, 27 секунд (18.06.2011 - 04:25) gen552 написал(а):
Не получится так.
Это как две таблицы. В одной - имена, в другой - телефоны. Эти две таблицы можно связать одинаковыми идентификаторами. Порядковый номер идентификаторов имён, соответствует порядковому номеру идентификаторов телефонов. Можно и сортировать и удалять и создавать и.т.д.
В моем же случае, содержимое папки Images будет "постоянно" двигаться. А значит массив ключей папок тоже, а массив ключей категорий в файле статичен (бог с той сортировкой), потому что название каталога всегда записывается в конец.
Т.е. в текстовом файле (в массиве) числовые индексы всегда будут по порядку. А вот массив с папками всегда будет перемещаться.
Задача не в сортировке. А в синхронности. Чтобы ключи названий категорий соответствовали ключам папок.
А вот потооооом, можна эти два массива объденить в один по ключам.
И вот тут уже в качестве ключей взять название папок, а значение массивов название котегорий. Т.е. как предложил walerus
Это как две таблицы. В одной - имена, в другой - телефоны. Эти две таблицы можно связать одинаковыми идентификаторами. Порядковый номер идентификаторов имён, соответствует порядковому номеру идентификаторов телефонов. Можно и сортировать и удалять и создавать и.т.д.
В моем же случае, содержимое папки Images будет "постоянно" двигаться. А значит массив ключей папок тоже, а массив ключей категорий в файле статичен (бог с той сортировкой), потому что название каталога всегда записывается в конец.
Т.е. в текстовом файле (в массиве) числовые индексы всегда будут по порядку. А вот массив с папками всегда будет перемещаться.
Задача не в сортировке. А в синхронности. Чтобы ключи названий категорий соответствовали ключам папок.
А вот потооооом, можна эти два массива объденить в один по ключам.
И вот тут уже в качестве ключей взять название папок, а значение массивов название котегорий. Т.е. как предложил walerus
Спустя 5 часов, 3 минуты, 5 секунд (18.06.2011 - 09:29) walerus написал(а):
В опщем, не знаю... Исходя из твоих слов -
Цитата |
Название категории будет создаваться не ручками, а методом POST. То есть банально в текстовом поле: Самолёты -> создать... и на сервер. |
получился скрипт -
.... Админ!!!
![unsure.gif](http://phpforum.ru/html/emoticons/unsure.gif)
Цитата |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Test</title> </head> <body> <? error_reporting(E_ALL); define('ROOT', dirname(__FILE__).'/'); $set_img_folder = 'images'; if ( isset($_REQUEST['eng_name']) && trim($_REQUEST['eng_name']) != '' && isset($_REQUEST['rus_name']) && trim($_REQUEST['rus_name']) != '' && isset($_REQUEST['test_field']) && trim($_REQUEST['test_field']) == 'create' ) { $tmp_name_dir = trim($_REQUEST['eng_name']); // Проверяем есть ли такая директория if ( file_exists( ROOT. $set_img_folder .'/'. $tmp_name_dir) ) die( 'Такая директория есть !' ); // Создаем директорию и добавляем названия в массив echo "Создаем директорию\n<br>"; flush(); if (@mkdir( ROOT. $set_img_folder .'/'. $tmp_name_dir ) ) chmod( ROOT. $set_img_folder .'/'. $tmp_name_dir, 0777 ); else die( 'Директория Не создалась !!!' ); echo "Директория создалась\n<br>"; flush(); ## Обновляем массив // Загружаем файл if ( file_exists( ROOT. $set_img_folder .'/categories.txt' ) ) $categories = unserialize( file_get_contents( ROOT. $set_img_folder .'/categories.txt' ) ); else $categories = array(); $categories[$tmp_name_dir] = trim ($_REQUEST['rus_name']); // Записываем файл file_put_contents( ROOT. $set_img_folder .'/categories.txt', serialize($categories) ); echo "Файл обновлен\n<br>"; flush(); } else { // Рисуем форму ?> <form method="POST" action=""> <table border="0" > <tr> <td> Введите Английское название папки:</td> <td> <input type="text" name="eng_name" size="50"></td> </tr> <tr> <td> Введите Русское название папки:</td> <td><input type="text" name="rus_name" size="50"></td> </tr> <tr> <td colspan="2"> <input type="hidden" value="create" name="test_field"> <input type="submit" value="Создать"> </td> </tr> </table> </form> <? } ?> </body> </html> |
После, сортируй массивы как угодно, по ключам или по значениям.
Дальше вопросы ))
Почему
Цитата |
В моем же случае, содержимое папки Images будет "постоянно" двигаться. А значит массив ключей папок тоже, а массив ключей категорий в файле статичен (бог с той сортировкой), потому что название каталога всегда записывается в конец. |
название каталога записывается в конец ? Если нужно то его можно писать как в перед так и в зад, если это необходимо...
Ну или на самый крайний случай, пиши прямо в создаваемую папку, файлик, типа my_folder_name.txt, и в ней прописывай Русский аналог названия...
Спустя 45 минут, 29 секунд (18.06.2011 - 10:14) linker написал(а):
gen552
То как ты это хочешь сделать - нереально. У папок и файла должно быть что-то общее. А общее для них может быть только английские названия папок. И нет никакой разницы POST'ом будет передаваться или ещё как, к сути дела не имеет ниакого отношения.
То как ты это хочешь сделать - нереально. У папок и файла должно быть что-то общее. А общее для них может быть только английские названия папок. И нет никакой разницы POST'ом будет передаваться или ещё как, к сути дела не имеет ниакого отношения.
Спустя 1 час, 38 минут, 31 секунда (18.06.2011 - 11:53) gen552 написал(а):
Ну а как по Вашему здесь это сделали?
http://wallpapers.volgograd.biz/
Нажимаем на категорию Авиация и наблюдаем URL.
http://wallpapers.volgograd.biz/wgallery_list.php?gallery=14_avia&page=1&sort=5
Кстати, ответ в самом URL. Интересно, догадаетесь или нет?
Хотя я уже знаю два способа. И по красивее чем здесь.
Опробую на практике - отпишусь.
http://wallpapers.volgograd.biz/
Нажимаем на категорию Авиация и наблюдаем URL.
http://wallpapers.volgograd.biz/wgallery_list.php?gallery=14_avia&page=1&sort=5
Кстати, ответ в самом URL. Интересно, догадаетесь или нет?
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Хотя я уже знаю два способа. И по красивее чем здесь.
Опробую на практике - отпишусь.
Спустя 2 часа, 8 минут, 1 секунда (18.06.2011 - 14:01) tatti написал(а):
жду с нетерпением
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
![tongue.gif](http://phpforum.ru/html/emoticons/tongue.gif)
Спустя 4 часа, 34 минуты, 12 секунд (18.06.2011 - 18:35) linker написал(а):
Уверен, что сделано без всяких дурацких categories.txt
Спустя 3 часа, 42 минуты, 56 секунд (18.06.2011 - 22:18) gen552 написал(а):
Цитата (linker @ 18.06.2011 - 15:35) |
Уверен, что сделано без всяких дурацких categories.txt |
Дело не в дурацком categories.txt. Можно было в XML всё хранить или в БД.
На том сайте скорее всего так и сделано. В любом случае названия категорий надо где то хранить.
Спустя 5 минут, 8 секунд (18.06.2011 - 22:23) Игорь_Vasinsky написал(а):
Да там вобычном html сделано меню, без твоих заморочек.
Либо динамически формируется из бд с таблицей типа
в этом случае и сортировку в алфавитном порядке можно на автомат поставить.
Либо динамически формируется из бд с таблицей типа
id | cat_name | link_name
в этом случае и сортировку в алфавитном порядке можно на автомат поставить.
Спустя 1 час, 23 минуты, 46 секунд (18.06.2011 - 23:47) linker написал(а):
А какие у тебя сложности хранить связи русское название - английское название папки? Нет никакой разницы где это будет храниться, главное - это их связь, всё остальное реализация.