Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] baza ulubionych płyt audio, cddb jako źródło danych dla skryptu
kleszczoscisk
post 20.03.2008, 15:38:46
Post #1





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


Witam ponownie :-)

Raczkuję w PHP; czy ktoś podpowie mi jak zabrać się za wyciąganie danych z takiego pliku txt:

Kod
# xmcd CD database file
#
# Track frame offsets:
#    150
#    22823
#    35562
#    53667
#    73763
#    89265
#    109452
#    122224
#    143059
#    155970
#
# Disc length: 2286 seconds
#
# Revision: 0
# Processed by: cddbd v1.5.2PL0 Copyright (c) Steve Scherf et al.
# Submitted via: CDex 1.70beta2
#
DISCID=8c08ec0a
DTITLE=Arcana / Raspail
DYEAR=2008
DGENRE=Darkwave
TTITLE0=Abrakt
TTITLE1=Sight of Relief
TTITLE2=Invisible Motions
TTITLE3=Outside Your World
TTITLE4=Parisal
TTITLE5=Autumnal
TTITLE6=Out of the Grey Ashes
TTITLE7=Lost in Fire
TTITLE8=Remembrance
TTITLE9=Circumspection
EXTD= YEAR: 2008
EXTT0=
EXTT1=
EXTT2=
EXTT3=
EXTT4=
EXTT5=
EXTT6=
EXTT7=
EXTT8=
EXTT9=
PLAYORDER=


... aby na stronie wyświetlić ładnie dane płyty w sposób mniej więcej taki:
Cytat
WYKONAWCA - Arcana
TYTUŁ - Raspail
ROK - 2008
TT - 2286 sek (zamieniam na H:S)
TYTUŁY UTWORÓW:
  1. Abrakt
  2. Sight of Relief
  3. Invisible Motions
  4. Outside Your World
  5. Parisal
  6. Autumnal
  7. Out of the Grey Ashes
  8. Lost in Fire
  9. Remembrance
  10. Circumspection

(itd)
poniżej byłaby recenzja.
Bazę MySQL wyobrazam sobie mniej wiecej tak:
Kod
     CREATE TABLE `muzyka_cd` (
              `id` int( 11 ) NOT NULL AUTO_INCREMENT ,
              `cddb` varchar( 50 ) NOT NULL ,
              `wykonawca` varchar( 200 ) NOT NULL default '',
              `album` varchar( 200 ) NOT NULL default '',
              `gatunek` varchar( 50 ) NOT NULL default '',
              `okladka` varchar( 100 ) NOT NULL default '',
              `muzycy` text NOT NULL ,
              `recenzja` text NOT NULL ,
              `data` date NOT NULL default '0000-00-00',
              PRIMARY KEY ( `id` )
              ) ENGINE = InnoDB DEFAULT AUTO_INCREMENT =1;";


Generalnie jestem w stanie to zrobić... ale nie wiem jak zabrać się za wyciąganie danych z plików o takiej strukturze.
Pliki będą pobierane z freedb.org, tu jest oryginał: http://www.freedb.org/freedb/misc/8c08ec0a

Proszę o podpowiedzi :-)
Pozdrawiam

Ten post edytował kleszczoscisk 20.03.2008, 15:42:59


--------------------

Siedź cicho, kiedy śpi licho.
Go to the top of the page
+Quote Post
potreb
post 20.03.2008, 16:04:02
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Te info masz tak w bazie zapisane? str_replace, preg_match, preg_replace


--------------------

Go to the top of the page
+Quote Post
nowotny
post 20.03.2008, 16:21:24
Post #3





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Wczytujesz plik do tablicy za pomocą file" title="Zobacz w manualu PHP" target="_manual i potem za pomocą pętli foreach jedziesz po tablicy explodując każdą linię po znaku równości po czym zapisujesz te dane do tablicy... potem kwestia wyświetlenia danych z tej tablicy jest już chyba łatwa...
Go to the top of the page
+Quote Post
kleszczoscisk
post 20.03.2008, 18:37:02
Post #4





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedzi

Potreb: tak, dane w takiej postaci udostępnia freedb

Nowotny: tak właśnie próbuję, tylko jak wyświetlić z tej tablicy tylko tytuły ?

Tak zrobiłem, pewnie cienko... ale nie umiem inaczej:
Kod
   <?php
   //pobieram identyfikator freedb
   $dysk = $_GET['dysk'];
  
   //pobieram dane z pliku wg identyfikatora
   $dane = file_get_contents('pliki/'.$dysk.'.txt');
  
   //wywalam niepotrzebne dane
   $dane = preg_match('/(DISCID.+)EXTT0/si', $dane, $tresc );
   $dane2 =  $tresc[0];
  
   //zamieniam ciągi znaków
   $oryginalne = array("#", "TTITLE", "=", "DISCID", "DTITLE", "DYEAR", "EXTD", "EXTT0","DGENRE");
   $zamienione   = array("", "", " ", "id dysku: ", "wykonawca/tytuł: ", "rok:", "", "", "gatunek: ");
   $nowedane = str_replace($oryginalne, $zamienione, $dane2);
  
   //łamie konce linii
   echo nl2br($nowedane);
   ?>

Jakieś wskazówki?
Idealnie byłoby gdyby np. wartość "gatunek" była linkiem wyszukującym inne płyty z tego samego gatunku (itp), ale to zbyt trudne jak na stan mojej wiedzy :-|


--------------------

Siedź cicho, kiedy śpi licho.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 15:49