За последние 24 часа нас посетили 15139 программистов и 1677 роботов. Сейчас ищут 945 программистов ...

Автоматическая генерация плейлиста

Тема в разделе "PHP для новичков", создана пользователем skorpion, 6 фев 2011.

  1. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    56
    Симпатии:
    1
    Адрес:
    Москва
    Здравствуйте.

    Помогите составить код, который будет генерировать плейлист.

    Почитав мануалы я примерно понял что нужно составить код примерно так:
    PHP:
    1. <?php
    2. /*Первый трек*/
    3. $data01_location = "1111";
    4. $data01_creator = "1111";
    5. $data01_album = "1111";
    6. $data01_title = "1111";
    7. $data01_annotation = "1111";
    8. $data01_duration = "1111";
    9. $data01_image = "1111";
    10. $data01_info = "1111";
    11. $data01_link = "1111";
    12. /*Второй трек*/
    13. $data02_location = "2222";
    14. $data02_creator = "2222";
    15. $data02_album = "2222";
    16. $data02_title = "2222";
    17. $data02_annotation = "2222";
    18. $data02_duration = "2222";
    19. $data02_image = "2222";
    20. $data02_info = "2222";
    21. $data02_link = "2222";
    22. /*Третий трек*/
    23. $data03_location = "3333";
    24. $data03_creator = "3333";
    25. $data03_album = "3333";
    26. $data03_title = "3333";
    27. $data03_annotation = "3333";
    28. $data03_duration = "3333";
    29. $data03_image = "3333";
    30. $data03_info = "3333";
    31. $data03_link = "3333";
    32.  
    33. for ($i = 1; $i; $i++) {
    34. $playlist = <<<HTML
    35. <!-- Трек номер ??? -->
    36.         <track>
    37.           <location>{$data_location}</location>
    38.           <creator>{$data_creator}</creator>
    39.           <album>{$data_album}</album>
    40.           <title>{$data_title}</title>
    41.           <annotation>{$data_annotation}</annotation>
    42.           <duration>{$data_duration}</duration>
    43.           <image>{$data_image}</image>
    44.           <info>{$data_info}</info>
    45.           <link rel="{$data_link}">{$data_link}</link>
    46.         </track>
    47. HTML;
    48. }
    49.  
    50. header("Content-Type: text/xml");
    51. echo <<<HTML
    52. <?xml version="1.0" encoding="windows-1251"?>
    53. <playlist version="1" xmlns="http://xspf.org/ns/0/">
    54.     <trackList>
    55. {$playlist}
    56.     </trackList>
    57. </playlist>
    58. HTML;
    59.  
    60. ?>
    Но что-то я делаю не так.

    Как составить код так, чтобы на выходе получилось такая констукция?
    Код (Text):
    1.  
    2. <?xml version="1.0" encoding="windows-1251"?>
    3. <playlist version="1" xmlns="http://xspf.org/ns/0/">
    4.     <trackList>
    5. <!-- Трек номер 1 -->
    6.         <track>
    7.           <location>1111</location>
    8.           <creator>1111</creator>
    9.           <album>1111</album>
    10.           <title>1111</title>
    11.           <annotation>1111</annotation>
    12.           <duration>1111</duration>
    13.           <image>1111</image>
    14.           <info>1111</info>
    15.           <link rel="1111">1111</link>
    16.         </track>
    17. <!-- Трек номер 2 -->
    18.         <track>
    19.           <location>2222</location>
    20.           <creator>2222</creator>
    21.           <album>2222</album>
    22.           <title>2222</title>
    23.           <annotation>2222</annotation>
    24.           <duration>2222</duration>
    25.           <image>2222</image>
    26.           <info>2222</info>
    27.           <link rel="2222">2222</link>
    28.         </track>
    29. <!-- Трек номер 3 -->
    30.         <track>
    31.           <location>3333</location>
    32.           <creator>3333</creator>
    33.           <album>3333</album>
    34.           <title>3333</title>
    35.           <annotation>3333</annotation>
    36.           <duration>3333</duration>
    37.           <image>3333</image>
    38.           <info>3333</info>
    39.           <link rel="3333">3333</link>
    40.         </track>
    41.     </trackList>
    42. </playlist>
    Заранее благодарен за помощь в решении моего вопроса.
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    гуглить на тему - массивы, циклы.
    нумерация элементов массива начинается с 0 !

    PHP:
    1.  
    2. <?php
    3.  
    4. $data = array();
    5.  
    6. /*Первый трек*/
    7. $track = array();
    8. $track['location'] = "1111";
    9. $track['creator'] = "1111";
    10. $track['album'] = "1111";
    11. $track['title'] = "1111";
    12. $track['annotation'] = "1111";
    13. $track['duration'] = "1111";
    14. $track['image'] = "1111";
    15. $track['info'] = "1111";
    16. $track['link'] = "1111";
    17. $data[0] = $track;
    18.  
    19. /*Второй трек*/
    20. $track = array();
    21. $track['location'] = "2222";
    22. $track['creator'] = "2222";
    23. $track['album'] = "2222";
    24. $track['title'] = "2222";
    25. $track['annotation'] = "2222";
    26. $track['duration'] = "2222";
    27. $track['image'] = "2222";
    28. $track['info'] = "2222";
    29. $track['link'] = "2222";
    30. $data[1] = $track;
    31.  
    32. /*Третий трек*/
    33. $track = array();
    34. $track['location'] = "3333";
    35. $track['creator'] = "3333";
    36. $track['album'] = "3333";
    37. $track['title'] = "3333";
    38. $track['annotation'] = "3333";
    39. $track['duration'] = "3333";
    40. $track['image'] = "3333";
    41. $track['info'] = "3333";
    42. $track['link'] = "3333";
    43. $data[2] = $track;
    44.  
    45. for ($i = 0; $i < sizeof($data); $i++) {
    46. echo <<<HTML
    47. <!-- Трек номер ??? -->
    48.   <track>
    49.     <location>{$data[$i]['location']}</location>
    50.     <creator>{$data[$i]['creator']}</creator>
    51.     <album>{$data[$i]['album']}</album>
    52.     <title>{$data[$i]['title']}</title>
    53.     <annotation>{$data[$i]['annotation']}</annotation>
    54.     <duration>{$data[$i]['duration']}</duration>
    55.     <image>{$data[$i]['image']}</image>
    56.     <info>{$data[$i]['info']}</info>
    57.     <link rel="{$data[$i]['link']}">{$data[$i]['link']}</link>
    58.   </track>
    59. HTML;
    60. }
    61. ?>
    62.  
     
  3. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    56
    Симпатии:
    1
    Адрес:
    Москва
    Gromo, спасибо большое!
    а как пронумеровать треки? чтобы выводило в сгенерированном коде
    Код (Text):
    1.  <!-- Трек номер 1-->
    2.  <!-- Трек номер 2-->
    3.  <!-- Трек номер 3-->
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Код (Text):
    1.  for ($i = 0; $i < sizeof($data); $i++) {
    2.  $number = $i + 1;
    3.  echo <<<HTML
    4.  <!-- Трек номер $number -->
    5.    <track>
    6.      <location>{$data[$i]['location']}</location>
    7.      <creator>{$data[$i]['creator']}</creator>
    8.      <album>{$data[$i]['album']}</album>
    9.      <title>{$data[$i]['title']}</title>
    10.      <annotation>{$data[$i]['annotation']}</annotation>
    11.      <duration>{$data[$i]['duration']}</duration>
    12.      <image>{$data[$i]['image']}</image>
    13.      <info>{$data[$i]['info']}</info>
    14.      <link rel="{$data[$i]['link']}">{$data[$i]['link']}</link>
    15.    </track>
    16.  HTML;
    17.  }
     
  5. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    56
    Симпатии:
    1
    Адрес:
    Москва
    Gromo Спасибо! Всё заработало как нужно!
    Сделал вот так:
    Код (Text):
    1.  
    2. for ($i = 0; $i < sizeof($data); $i++) {
    3. $number =  $i + 1;
    4. $genlist .=  <<<HTML
    5.  <!-- Track number: {$number} -->
    6.   <track>
    7.     <location>{$data[$i]['location']}</location>
    8.     <creator>{$data[$i]['creator']}</creator>
    9.     <album>{$data[$i]['album']}</album>
    10.     <title>{$data[$i]['title']}</title>
    11.     <annotation>{$data[$i]['annotation']}</annotation>
    12.     <duration>{$data[$i]['duration']}</duration>
    13.     <image>{$data[$i]['image']}</image>
    14.     <info>{$data[$i]['info']}</info>
    15.     <link rel="{$data[$i]['link']}">{$data[$i]['link']}</link>
    16.   </track>
    17. HTML;
    18. }
    19. header("Content-Type: text/xml");
    20. echo <<<HTML
    21. <?xml version="1.0" encoding="windows-1251"?>
    22. <playlist version="1" xmlns="http://xspf.org/ns/0/">
    23.     <title>My Playlist</title>
    24.     <creator>Skorpion</creator>
    25.     <image>http://mysite.ru/radiossfera/covers/vibor.png</image>
    26.  
    27.     <trackList>
    28.  
    29. {$genlist}
    30.  
    31.     </trackList>
    32.  
    33. </playlist>
    Надеюсь я правильно концовку кода сделал?
    Но код работает как нужно.
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    в конце добавить c новой строки (впереди не должно быть пробелов или других знаков)
    Код (Text):
    1. HTML;
    получится

    Код (Text):
    1.  </playlist>
    2. HTML;
    ещё до цикла проинициализировать переменную $genlist:

    Код (Text):
    1. $genlist = '';
    2. for ($i = 0; $i < sizeof($data); $i++) {
    3. $number =  $i + 1;
    4. $genlist .=  <<<HTML
    5. ...
     
  7. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    56
    Симпатии:
    1
    Адрес:
    Москва
    Gromo, до цикла добавил.
    Всё супер! всё подключается, музыка играет, и скрипт теперь весит всего 20 килобайт! маленький и автогенерируемый! =)
    Спасибо большое!