Rotator prośba o pomoc

Wszystko związane ze skryptami JS, DHTML itd.
fajerwerki
Posty: 5
Rejestracja: 03 lip 2012, 21:45:41
Lokalizacja: Pilchowice
Płeć: Mężczyzna
User Agent: Chrome Windows 1280x800
Kontakt:

Rotator prośba o pomoc

Post autor: fajerwerki »

Niżej podany skrypt powoduje wyświetlanie grafiki zawartej w pliku " moj_plik.xml ". Chodzi mi o dodanie czegoś w rodzaju menu umożliwiającego wybranie grafik jakie użytkownik chciałby obejrzeć. Każda grafika miałaby być w oddzielnych plikach np 123.xml, 456.xml, 789.xml itd. Nie wiem jak utworzyć linki, które podmieniałyby plik " moj_plik.xml ". Bardzo proszę Was o pomoc.

<script type="text/javascript">
var s1 = new SWFObject('imagerotator.swf', 'rotator', '640', '475', '2');
s1.addVariable('javascriptid','rotator');
s1.addVariable('enablejs','true');
s1.addParam("allowfullscreen","true");
s1.addVariable("file","moj_plik.xml");
s1.addVariable("width","640");
s1.addVariable("height","475");
s1.write("player");
s1.addParam("bgcolor","#000000");
s1.addVariable("shuffle","false");
</script>
BlackDante
Posty: 348
Rejestracja: 10 lut 2010, 19:33:06
Płeć: Mężczyzna
User Agent: Chrome Windows 1366x768
Kontakt:

Re: Rotator prośba o pomoc

Post autor: BlackDante »

podany skrypt to jest osadzenia obiektu Flash na stronie za pomocą js'a jeżeli chcesz aby użytkownik mógł wybierać obrazki to wodze tutaj dwa rozwiązania:
1. Generowanie pliku xml przez php dla każdego użytkownika
2. Przepisanie flasha aby komunikował się z js'em i pobierał dane, które js będzie mu zwracał
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein
fajerwerki
Posty: 5
Rejestracja: 03 lip 2012, 21:45:41
Lokalizacja: Pilchowice
Płeć: Mężczyzna
User Agent: Chrome Windows 1280x800
Kontakt:

Re: Rotator prośba o pomoc

Post autor: fajerwerki »

Nie mam pojęcia jak w praktyce zastosować jedną lub drugą opcję. Bardzo proszę Ciebie o nakierowanie mnie fragmentem kodu i bliższe wyjaśnienie, a mam nadzieję, że szybko zaskoczę jak to wdrożyć.
BlackDante
Posty: 348
Rejestracja: 10 lut 2010, 19:33:06
Płeć: Mężczyzna
User Agent: Chrome Windows 1366x768
Kontakt:

Re: Rotator prośba o pomoc

Post autor: BlackDante »

pokaż jaki obecnie wygląd ma plik .xml to postaram się Ci wyjaśnić jak zrobić jego generowanie dla każdego usera.
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein
fajerwerki
Posty: 5
Rejestracja: 03 lip 2012, 21:45:41
Lokalizacja: Pilchowice
Płeć: Mężczyzna
User Agent: Chrome Windows 1280x800
Kontakt:

Re: Rotator prośba o pomoc

Post autor: fajerwerki »

Zawartość pliku .xml wygląda w poniższy sposób. W każdym pliku mam kilkadziesiąt zdjęć które tworzą playlistę. Na przykładzie pokazałem Ci tylko dwa. Takich playlist muszę zbudować kilka, 1.xml, 2.xml itp.

<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>
<track>
<title>Opis...</title>
<creator>nazwa strony</creator>
<location>http://www.../images/1.jpg</location>
<info></info>
</track>
<track>
<title>Opis...</title>
<creator>nazwa strony</creator>
<location>http://www..../images/2.jpg</location>
<info></info>
</track>
itd...

</trackList>
</playlist>
BlackDante
Posty: 348
Rejestracja: 10 lut 2010, 19:33:06
Płeć: Mężczyzna
User Agent: Chrome Windows 1366x768
Kontakt:

Re: Rotator prośba o pomoc

Post autor: BlackDante »

no to jedziem...
najbardziej rozsądnie to będzie zrobić chyba za pomocą programowania obiektowego, więc:

Kod: Zaznacz cały

class Image{
        public $name; 
        public $description; 
        public $location; 
        public $creator; 
        public function __construct($name,$description,$location,$creator)
        {
                 $this->name = $name; 
                 $this->description = $description; 
                 $this->location = $location; 
                 $this->creator = $creator;
        }
}
class Playlist{
        private $images = array();
        private $filename = ''; 
        private $location = '/temp/'; 
        public function __construct($images = NULL)
        {
                 if($images == NULL)
                 {
                         return $this; 
                 }
                 if(is_array($images))
                 {
                        foreach($images as $image)
                        {
                                $this->setImage($image); 
                        }
                        return $this; 
                 }
                 if($images instanceof Image)
                 {
                       $this->setImage($image);
                       return $this;  
                 }
        }
        public function setImage(Image $image)
        {
                 array_push($this->images, $image); 
        }
        public function render()
        {
                header('Content-type: application/xml; charset="utf-8"');
                echo '<?xml version="1.0" encoding="utf-8"?>
                <playlist version="1" xmlns="http://xspf.org/ns/0/">
                <trackList>';
                 foreach($this->images as $image){
                echo "<track>
                <title>$image->name</title>
                <creator>$image->creator</creator>
                <location>$image->location</location>
                <info>$image->description</info>
                </track>"; 
                }
                echo '  
                </trackList>
                </playlist>';
        }
}
Mając te dwie klasy możesz zapisywać w bazie danych obrazki, które mają się wyświetlać dla danego użytkownika i tworzyć taki plik xml w locie:

Kod: Zaznacz cały

$images = mysql_query('SELECT * from images where user_id='.$user->id);
$playlist = new Playlist(); 
while($image = mysql_fetch_assoc($images)){
       $playlist->setImage(new Image($image['name'],$image['description'],$image['location'],$image['creator']); 
}
$playlist->render(); 
 
Plik oczywiście możesz zapisywać na dysku, wystarczy zamienić echo na fopen / fwrite /fclose, albo dynamicznie pobierać jego wyświetlaną zawartość przez javascript i wstrzykiwać ją do pliku *.swf

PS. Klasy pisane z placa i na szybko więc tego nie testowałem ;)
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein
fajerwerki
Posty: 5
Rejestracja: 03 lip 2012, 21:45:41
Lokalizacja: Pilchowice
Płeć: Mężczyzna
User Agent: Chrome Windows 1280x800
Kontakt:

Re: Rotator prośba o pomoc

Post autor: fajerwerki »

Dziękuje Ci BlackDante! Odwaliłeś kawał roboty. W wolnej chwili sprawdzę i dam znać, czy jest ok. Mam ostatnio mocno napięty plan zajęć dla tego odzywam się z tygodniowym opóźnieniem. NetKate to Twoje dzieło? Jeżeli tak to miałbym zlecenie do wyceny. Jeszcze raz dziękuję.
BlackDante
Posty: 348
Rejestracja: 10 lut 2010, 19:33:06
Płeć: Mężczyzna
User Agent: Chrome Windows 1366x768
Kontakt:

Re: Rotator prośba o pomoc

Post autor: BlackDante »

Spoko nie ma żadnego problemu ;)
NetKata to niestety tylko agencja z którą współpracuję, zapraszam serdecznie. A Jeśli to nie jest jakieś większe zlecenie to zawsze wykonuje też aplikacje poza firmą, tylko że wtedy będzie bez faktury VAT.

PS. Przepraszam Fuma za Offtop :(
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein
fajerwerki
Posty: 5
Rejestracja: 03 lip 2012, 21:45:41
Lokalizacja: Pilchowice
Płeć: Mężczyzna
User Agent: Chrome Windows 1280x800
Kontakt:

Re: Rotator prośba o pomoc

Post autor: fajerwerki »

Zlecenie jest większe jeżeli miałoby być robione od podstaw lub mniejsze jeżeli wprowadzono by tylko poprawki do tego co ktoś inny mi robił. Faktura nie jest potrzebna. Wydaje mi się, że to już raczej nie jest temat na forum..
Na dniach zdam relację z pomocy w sprawie rotatora. Pozdrawiam,
ODPOWIEDZ