Регистрация    Вход    Форум    Поиск    FAQ

  •  Новости
  • Beeline + Twitter = чирикай через SMS!

    Beeline + Twitter = чирикай через SMS! На первой картинке обозначены команды, при помощи которых через SMS Вы сможете кого-либо зафолловить или же отписаться, ретвитнуть чей-либо пост или же написать личное сообщение.

    Open Graph Protocol. От создателей Facebook

    Open Graph Protocol. От создателей Facebook Разбираясь с Facebook API, случайно наткнулся на другую интересную разработку от этих людей.

    Глобальное ускорение Wordpress

    Глобальное ускорение Wordpress Не считая очевидных решений типа отключения некоторых плагинов и перехода на тему попроще, я вижу 2 пути для оптимизации: кэширование и сжатие траффика.




  •  Часы


  •  Поиск

Optimaze » Программирование » Сказка о том, как подружить Java Script и PHP




Сказка о том, как подружить Java Script и PHP

  1. Задача состоит в следующем:


Давно я намеревался рассказать об одном из нестандартных вариантов решения проблемы связки JavaScript + PHP, хотя почему то именно сейчас ночью я спохватился это сделать! Может он покажется сегодня из разряда «можно по-другому», но приблизительно год назад при разработке одного музыкального портала это было быстро и красиво.

«Тогда зачем я вещаю о старом и не нужном?» – вполне корректный вопрос – «потому что это и до сих пор быстро и красиво для простых информационных структур». Все, последний барьер предисловия был преодолен – теперь к делу.

 

Задача состоит в следующем:

Требуется реализовать страницу загрузки *. mp3 (*. flac, *. wav и т. д. ) файлов на сервер, в формате – оформить альбом (обложка, битрейт, студия, описание, исполнитель ну и т.п.), выбрать у вас на компьютере загружаемые файлы и последнее нажать кнопку «Загрузить!», после чего радоваться тому, что вы нарушаете закон об авторском праве, если конечно не имеете нужных документов на владение и распространение (кстати, это очень важно).

 

Задача поставлена, начинаете писать какой-нибудь загрузчик на php, далее описываете форму с нужными полями под информацию об альбомах, создаете таблицу в базе, выделяете нужный каталог на сервере – все хорошо, ничего обычного. После чего я подвис на ночь, кому-нибудь это обязательно должно показаться знакомым.

 

Объяснения в студию! Мы изначально не знаем количества загружаемых файлов на сервер, потому что количество песен в альбомах ничем не ограничено, то есть является динамическим. Следовательно, форму я реализовал на JavaScript, то есть мы имеем, допустим, одно поле как стандартное и можем добавлять еще поля плюсиками и убирать минусами, как следствие теперь мы оперируем с динамическим количеством полей, что вполне нам подходит.

Далее, по идее, нужно каждому файлу присвоить свой id, название, какую-то дополнительную информацию (mp3 теги не всегда могут иметься в наличие)

 

Кстати вот причина моего подвисания:

Файлы то загрузятся на сервер, в этом как раз таки не проблема, а вот чтобы добавить информацию об этих файлах в нашу db, чтобы можно было их потом найти, требуется организовать цикл, организующий обращения к этой самой db.

Фишка в том, что формы то генерированы жабой, а php – загрузчик и знать не знает, сколько их этих файлов. Вывод – цикл ничем не ограничен, а мы будем иметь или же огромную избыточность db в результате или же потерю файлов, при варианте, если ограничить цикл каким-нибудь числом оО (очень, очень глупо).

 

На тот момент я просерфил интернет пространство и ничего толкового не нашел, хотя задача была вполне очевидна и решабельна, только это был ступор. И если же ты, мой читатель, как раз таки в этом состоянии, то вот тебе решение – нужно вспомнить о самых что ни на есть основах PHP! Были, есть и будут есть такие суперглобальные массивы, которые содержат в себе информацию о состоянии сервера и среде выполнения скрипта.

Я не буду рассказывать про назначение всех этих массивов, об этом можно прочитать, как обычно, на вики. Нам нужен массив $_FILES, как уже догадались, это ассоциативный массив, который хранит в себе информацию об отправленных на сервер файлах методом POST, именно из него мы обработчиком перетаскиваем файлы в каталог на сервере по средствам зарезервированной функции move_uploaded_file();.

Так что решение тут было уже очевидным – посчитать количество элементов в этом массиве, после чего уже ограниченным циклом по порядку записать все в базу, примерно так:

 

  • while($i<=count($_FILES)) {
  •     @mysql_query("INSERT INTO songs VALUES('". $_POST['artist']. "','". $_POST['name']. "','". $url. "')")
  •     $i++
  • }

/*использовать в таком виде не рекомендую, потому что это далеко не все, что требуется, а только основное для наглядности*/



Рейтинг: 4.6/5, основан на 25 голосах.


Нравится



Вернутся назад


   

Вам будет интересно:

JSR 292 Review Ballot

Данная спецификация призвана решить проблему языков с динамической типизацией, таких как PHP, Perl, Python при реализации их на Java платформе (имеется ввиду JVM).

Восстановление NTFS в Ubuntu

После перезагрузки Убунту заругалась и отказалась монтировать диск – мол, ошибки в структуре.

Улучшаем блог с помощью jQuery

Считайте это третьей частью “симбиоза jQuery и WordPress”.

Поиск хостинга для ASP. NET 2.0

Большинство наших хостингов предлагает около 100 мегабайт места, база данных при этом обычно отсутствует или MySql в районе 10-20 метров.



  •  Публикации


8 методов раскрутки своего форума с нуля

8 методов раскрутки своего форума с нуля Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.

Как привлекать посетителей на проект

Как привлекать посетителей на проект Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.

Про MySQL, серверы и PayPal

Про MySQL, серверы и PayPal Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...

Реклама в Твиттере. Как подать свой продукт

Реклама в Твиттере. Как подать свой продукт Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...

Пока блог на локалхосте

Пока блог на локалхосте Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...

Авторитет блоггера притягивает

Авторитет блоггера притягивает Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.