PHP - Создание «ДИНАМИЧЕСКИХ» каталогов для HTML5 ‹АУДИО›

Итак... Я мега нуб, когда дело доходит до PHP, стараюсь изо всех сил учиться, но ЭТО НЕ ДОСТАТОЧНО ХОРОШО.

В любом случае, то, что я пытаюсь сделать, это установить создать 2 разных «динамических» каталога в PHP-эхе, структурированном в соответствии с аудиотегом HTML5.

- 1-й каталог для *.mp3
- 2-й каталог для *.ogg

I' Я пытаюсь настроить его так, чтобы я мог просто сбрасывать файлы соответствующих форматов в соответствующие папки и вуаля! Автоматически сгенерированное воспроизведение аудио в формате HTML5...

Должно быть достаточно просто, не так ли? На 100 % уверен, что делаю это наихудшим из возможных способов.
Вот код....

    <?PHP
        $handleAudioMp3 = opendir(dirname(realpath(__FILE__)).'/audio/mp3/');
        $handleAudioOgg = opendir(dirname(realpath(__FILE__)).'/audio/ogg/');
        while($fileMp3 = readdir($handleAudioMp3) & $fileOgg = readdir($handleAudioOgg)){
            if($fileMp3 !== '.' && $fileMp3 !== '..' && $fileOgg !== '.' && $fileOgg !== '..'){
                echo '<div>
                        <audio controls="controls" preload="none">
                            <source src="audio/mp3/'.$fileMp3.'"/>
                            <source src="audio/ogg/'.$fileOgg.'"/>
                        </audio>
                    </div>'     ;}}
                    closedir($handleAudioMp3);
                    closedir($handleAudioOgg);
    ?>

Исправлено и работает благодаря ThiefMaster

<?PHP
        $handleAudioMp3 = opendir(dirname(realpath(__FILE__)).'/audio/mp3/');
        $handleAudioOgg = opendir(dirname(realpath(__FILE__)).'/audio/ogg/');
        while(($fileMp3 = readdir($handleAudioMp3)) & ($fileOgg = readdir($handleAudioOgg))){
            if($fileMp3 !== '.' && $fileMp3 !== '..' && $fileOgg !== '.' && $fileOgg !== '..'){
                echo '<div>
                        <audio controls="controls" preload="none">
                            <source src="audio/mp3/'.$fileMp3.'" type="audio/mpeg"/>
                            <source src="audio/ogg/'.$fileOgg.'" type="audio/ogg"/>
                        </audio>
                    </div>'     ;}}
                    closedir($handleAudioMp3);
                    closedir($handleAudioOgg);
    ?>


Разница в том, что...

while(($fileMp3 = readdir($handleAudioMp3)) & ($fileOgg = readdir($handleAudioOgg))){

person Terry    schedule 14.01.2012    source источник
comment
Попробуйте добавить скобки. & не предназначен для использования таким образом, поэтому он не имеет таких же приоритетов, как &&. Это может не исправить ваш код, поскольку результаты readdir() не сортируются.   -  person ThiefMaster    schedule 14.01.2012
comment
ThiefMaster, Спасибо за быстрый ответ! Не уверен, правильно ли я понимаю... вы имеете в виду внутри... while($fileMp3 = readdir($handleAudioMp3) & $fileOgg = readdir($handleAudioOgg)){ изменение & на &&??? Я знаю, что поступаю неправильно, но я уверен, что делать.   -  person Terry    schedule 14.01.2012
comment
while((a = b) & (c = d)) вместо while(a = b & c = d)   -  person ThiefMaster    schedule 14.01.2012
comment
СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО, СПАСИБО... СПАСИБО @ThiefMaster!!! пролетел прямо над моей головой! Как ответить while((a = b) & (c = d)) вместо while(a = b и с = г)   -  person Terry    schedule 14.01.2012


Ответы (2)


Есть много способов освежевать кошку, вот два:

  1. Позвольте пользователю решить (например, через выбор), какой формат он хочет, а затем используйте только этот формат.
  2. отображать не 2 источника для 1 тега аудио, а 2 тега аудио, помечая их как "play ogg" и "play mp3§"
person Eugen Rieck    schedule 14.01.2012
comment
Спасибо за быстрый ответ Eugen Rieck! Собираюсь немного подумать об этом, но, насколько я понимаю, наличие 2 разных тегов сделает 1 набор нефункциональным/мертвым ни в Firefox, ни в Webkit... Нет? - person Terry; 14.01.2012
comment
Позволить пользователю выбирать на самом деле неприемлемо для тегов <audio>. Некоторые браузеры поддерживают mp3, некоторые нет, некоторые поддерживают ogg, некоторые нет. Но наличие обоих позволяет работать во всех браузерах, и тогда браузер выберет рабочий <source> - person ThiefMaster; 14.01.2012
comment
Хотя это теория, мой опыт совсем другой: несколько исходных определений оказались проблематичными для приложения, предназначенного для работы во всех браузерах на всех платформах. - person Eugen Rieck; 14.01.2012
comment
Мой опыт отличается ... думаю, это может быть как-то связано с разными версиями сборки? - person Terry; 14.01.2012
comment
Я установил два тега... ‹audio controls=controls› ‹source src=file.mp3 /› ‹/audio› и… ‹audio controls=controls› ‹source src=file.ogg /› ‹/audio› file.ogg работает в firefox, но не в webkit... file.mp3 работает в webkit, но не в firefox... Таким образом, присутствуют два проигрывателя, но работает только один... путем указания ‹источников› в теге ‹audio› браузер может выбрать, какой из них работает лучше всего, избегая бесполезного плеера на экране. - person Terry; 14.01.2012

ThiefMaster указал, что я забыл некоторые скобки внутри...

while($fileMp3 = readdir($handleAudioMp3) & $fileOgg = readdir($handleAudioOgg)){

Так и должно быть...

while(($fileMp3 = readdir($handleAudioMp3)) & ($fileOgg = readdir($handleAudioOgg))){

Всем еще раз спасибо!!!

person Terry    schedule 30.04.2012