Здравствуйте. Помогите составить код, который будет генерировать плейлист. Почитав мануалы я примерно понял что нужно составить код примерно так: PHP: <?php /*Первый трек*/ $data01_location = "1111"; $data01_creator = "1111"; $data01_album = "1111"; $data01_title = "1111"; $data01_annotation = "1111"; $data01_duration = "1111"; $data01_image = "1111"; $data01_info = "1111"; $data01_link = "1111"; /*Второй трек*/ $data02_location = "2222"; $data02_creator = "2222"; $data02_album = "2222"; $data02_title = "2222"; $data02_annotation = "2222"; $data02_duration = "2222"; $data02_image = "2222"; $data02_info = "2222"; $data02_link = "2222"; /*Третий трек*/ $data03_location = "3333"; $data03_creator = "3333"; $data03_album = "3333"; $data03_title = "3333"; $data03_annotation = "3333"; $data03_duration = "3333"; $data03_image = "3333"; $data03_info = "3333"; $data03_link = "3333"; for ($i = 1; $i; $i++) { $playlist = <<<HTML <!-- Трек номер ??? --> <track> <location>{$data_location}</location> <creator>{$data_creator}</creator> <album>{$data_album}</album> <title>{$data_title}</title> <annotation>{$data_annotation}</annotation> <duration>{$data_duration}</duration> <image>{$data_image}</image> <info>{$data_info}</info> <link rel="{$data_link}">{$data_link}</link> </track> HTML; } header("Content-Type: text/xml"); echo <<<HTML <?xml version="1.0" encoding="windows-1251"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> {$playlist} </trackList> </playlist> HTML; ?> Но что-то я делаю не так. Как составить код так, чтобы на выходе получилось такая констукция? Код (Text): <?xml version="1.0" encoding="windows-1251"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> <!-- Трек номер 1 --> <track> <location>1111</location> <creator>1111</creator> <album>1111</album> <title>1111</title> <annotation>1111</annotation> <duration>1111</duration> <image>1111</image> <info>1111</info> <link rel="1111">1111</link> </track> <!-- Трек номер 2 --> <track> <location>2222</location> <creator>2222</creator> <album>2222</album> <title>2222</title> <annotation>2222</annotation> <duration>2222</duration> <image>2222</image> <info>2222</info> <link rel="2222">2222</link> </track> <!-- Трек номер 3 --> <track> <location>3333</location> <creator>3333</creator> <album>3333</album> <title>3333</title> <annotation>3333</annotation> <duration>3333</duration> <image>3333</image> <info>3333</info> <link rel="3333">3333</link> </track> </trackList> </playlist> Заранее благодарен за помощь в решении моего вопроса.
гуглить на тему - массивы, циклы. нумерация элементов массива начинается с 0 ! PHP: <?php $data = array(); /*Первый трек*/ $track = array(); $track['location'] = "1111"; $track['creator'] = "1111"; $track['album'] = "1111"; $track['title'] = "1111"; $track['annotation'] = "1111"; $track['duration'] = "1111"; $track['image'] = "1111"; $track['info'] = "1111"; $track['link'] = "1111"; $data[0] = $track; /*Второй трек*/ $track = array(); $track['location'] = "2222"; $track['creator'] = "2222"; $track['album'] = "2222"; $track['title'] = "2222"; $track['annotation'] = "2222"; $track['duration'] = "2222"; $track['image'] = "2222"; $track['info'] = "2222"; $track['link'] = "2222"; $data[1] = $track; /*Третий трек*/ $track = array(); $track['location'] = "3333"; $track['creator'] = "3333"; $track['album'] = "3333"; $track['title'] = "3333"; $track['annotation'] = "3333"; $track['duration'] = "3333"; $track['image'] = "3333"; $track['info'] = "3333"; $track['link'] = "3333"; $data[2] = $track; for ($i = 0; $i < sizeof($data); $i++) { echo <<<HTML <!-- Трек номер ??? --> <track> <location>{$data[$i]['location']}</location> <creator>{$data[$i]['creator']}</creator> <album>{$data[$i]['album']}</album> <title>{$data[$i]['title']}</title> <annotation>{$data[$i]['annotation']}</annotation> <duration>{$data[$i]['duration']}</duration> <image>{$data[$i]['image']}</image> <info>{$data[$i]['info']}</info> <link rel="{$data[$i]['link']}">{$data[$i]['link']}</link> </track> HTML; } ?>
Gromo, спасибо большое! а как пронумеровать треки? чтобы выводило в сгенерированном коде Код (Text): <!-- Трек номер 1--> <!-- Трек номер 2--> <!-- Трек номер 3-->
Код (Text): for ($i = 0; $i < sizeof($data); $i++) { $number = $i + 1; echo <<<HTML <!-- Трек номер $number --> <track> <location>{$data[$i]['location']}</location> <creator>{$data[$i]['creator']}</creator> <album>{$data[$i]['album']}</album> <title>{$data[$i]['title']}</title> <annotation>{$data[$i]['annotation']}</annotation> <duration>{$data[$i]['duration']}</duration> <image>{$data[$i]['image']}</image> <info>{$data[$i]['info']}</info> <link rel="{$data[$i]['link']}">{$data[$i]['link']}</link> </track> HTML; }
Gromo Спасибо! Всё заработало как нужно! Сделал вот так: Код (Text): for ($i = 0; $i < sizeof($data); $i++) { $number = $i + 1; $genlist .= <<<HTML <!-- Track number: {$number} --> <track> <location>{$data[$i]['location']}</location> <creator>{$data[$i]['creator']}</creator> <album>{$data[$i]['album']}</album> <title>{$data[$i]['title']}</title> <annotation>{$data[$i]['annotation']}</annotation> <duration>{$data[$i]['duration']}</duration> <image>{$data[$i]['image']}</image> <info>{$data[$i]['info']}</info> <link rel="{$data[$i]['link']}">{$data[$i]['link']}</link> </track> HTML; } header("Content-Type: text/xml"); echo <<<HTML <?xml version="1.0" encoding="windows-1251"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <title>My Playlist</title> <creator>Skorpion</creator> <image>http://mysite.ru/radiossfera/covers/vibor.png</image> <trackList> {$genlist} </trackList> </playlist> Надеюсь я правильно концовку кода сделал? Но код работает как нужно.
в конце добавить c новой строки (впереди не должно быть пробелов или других знаков) Код (Text): HTML; получится Код (Text): </playlist> HTML; ещё до цикла проинициализировать переменную $genlist: Код (Text): $genlist = ''; for ($i = 0; $i < sizeof($data); $i++) { $number = $i + 1; $genlist .= <<<HTML ...
Gromo, до цикла добавил. Всё супер! всё подключается, музыка играет, и скрипт теперь весит всего 20 килобайт! маленький и автогенерируемый! =) Спасибо большое!