Сказка о том, как подружить Java Script и PHPДавно я намеревался рассказать об одном из нестандартных вариантов решения проблемы связки JavaScript + PHP, хотя почему то именно сейчас ночью я спохватился это сделать! Может он покажется сегодня из разряда «можно по-другому», но приблизительно год назад при разработке одного музыкального портала это было быстро и красиво. «Тогда зачем я вещаю о старом и не нужном?» – вполне корректный вопрос – «потому что это и до сих пор быстро и красиво для простых информационных структур». Все, последний барьер предисловия был преодолен – теперь к делу.
Задача состоит в следующем:Требуется реализовать страницу загрузки *. mp3 (*. flac, *. wav и т. д. ) файлов на сервер, в формате – оформить альбом (обложка, битрейт, студия, описание, исполнитель ну и т.п.), выбрать у вас на компьютере загружаемые файлы и последнее нажать кнопку «Загрузить!», после чего радоваться тому, что вы нарушаете закон об авторском праве, если конечно не имеете нужных документов на владение и распространение (кстати, это очень важно).
Задача поставлена, начинаете писать какой-нибудь загрузчик на php, далее описываете форму с нужными полями под информацию об альбомах, создаете таблицу в базе, выделяете нужный каталог на сервере – все хорошо, ничего обычного. После чего я подвис на ночь, кому-нибудь это обязательно должно показаться знакомым.
Объяснения в студию! Мы изначально не знаем количества загружаемых файлов на сервер, потому что количество песен в альбомах ничем не ограничено, то есть является динамическим. Следовательно, форму я реализовал на JavaScript, то есть мы имеем, допустим, одно поле как стандартное и можем добавлять еще поля плюсиками и убирать минусами, как следствие теперь мы оперируем с динамическим количеством полей, что вполне нам подходит. Далее, по идее, нужно каждому файлу присвоить свой id, название, какую-то дополнительную информацию (mp3 теги не всегда могут иметься в наличие)
Кстати вот причина моего подвисания: Файлы то загрузятся на сервер, в этом как раз таки не проблема, а вот чтобы добавить информацию об этих файлах в нашу db, чтобы можно было их потом найти, требуется организовать цикл, организующий обращения к этой самой db. Фишка в том, что формы то генерированы жабой, а php – загрузчик и знать не знает, сколько их этих файлов. Вывод – цикл ничем не ограничен, а мы будем иметь или же огромную избыточность db в результате или же потерю файлов, при варианте, если ограничить цикл каким-нибудь числом оО (очень, очень глупо).
На тот момент я просерфил интернет пространство и ничего толкового не нашел, хотя задача была вполне очевидна и решабельна, только это был ступор. И если же ты, мой читатель, как раз таки в этом состоянии, то вот тебе решение – нужно вспомнить о самых что ни на есть основах PHP! Были, есть и будут есть такие суперглобальные массивы, которые содержат в себе информацию о состоянии сервера и среде выполнения скрипта. Я не буду рассказывать про назначение всех этих массивов, об этом можно прочитать, как обычно, на вики. Нам нужен массив $_FILES, как уже догадались, это ассоциативный массив, который хранит в себе информацию об отправленных на сервер файлах методом POST, именно из него мы обработчиком перетаскиваем файлы в каталог на сервере по средствам зарезервированной функции move_uploaded_file();. Так что решение тут было уже очевидным – посчитать количество элементов в этом массиве, после чего уже ограниченным циклом по порядку записать все в базу, примерно так:
/*использовать в таком виде не рекомендую, потому что это далеко не все, что требуется, а только основное для наглядности*/ Вернутся Вам будет интересно:
|
- Публикации
Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.
Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.
Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...
Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...
Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...
Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.