Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie kliknięć w obiekt Flash
Forum PHP.pl > Forum > Po stronie przeglądarki
Kas
Mam gotowy plik Flash (w formacie SWF), którego nie mogę edytować. Umieszczam go na stronie i chcę zliczać kliknięcia w niego tak aby były zapisywane do bazy danych. Jak optymalnie to zrobić?
flashdev
Cytat(Kas @ 5.08.2010, 00:21:33 ) *
Mam gotowy plik Flash (w formacie SWF), którego nie mogę edytować. Umieszczam go na stronie i chcę zliczać kliknięcia w niego tak aby były zapisywane do bazy danych. Jak optymalnie to zrobić?


100% pewności nie mam, ale na moje oko nie możesz tego zrobić.
Musiałbyś wyedytować flasha i wrzucić coś w tym stylu:

Kod
ExternalInterface.call('funkcja_js');


Edit:
Ale jest jeszcze inny sprytny sposób:
Tworzysz nowego flasha (kontener), w którym ładujesz swojego swf`a i wrzucasz do niego akcje obsługujące klik. To powinno zadziałać.
Kas
Znalazłem coś takiego. Wygląda na to, że można za pomocą JavaScript wywoływać funkcje w momencie kliknięcia na obiekt Flash. Szkopuł w tym, że nie do końca rozumiem opis od Google. Czy jest taka możliwość aby funkcja JS wykonywała operacje w bazie MySQL?
erix
Przez AJAX. winksmiley.jpg
Kas
Poproszę jakieś podpowiedzi. Z technologii AJAX nigdy nie korzystałem.
erix
A może by tak tutoriale najpierw poczytać?
Kas
Powiedzcie mi proszę w jaki sposób uruchomić poprzez AJAX skrypt PHP na serwerze oraz jak zliczyć kliknięcie w znacznik <object> Tylko tyle... smile.gif Obiecuję, że poczytam poradniki i samouczki, ale teraz tak na szybko potrzebuję to zliczanie. smile.gif
erix
Nie ma, że na szybko. To nie jest helpdesk, że dostaniesz szybko na tacy to, czego Ci w tej chwili trzeba. Przez te 24 minuty czekania zdążyłbyś już wkleić jakiegoś gotowca i zmusić go do współpracy.
Kas
No, masz rację... ;-) Znalazłem coś takiego:

  1. <script type="text/javascript">
  2. function showUser(str)
  3. {
  4. if (str=="")
  5. {
  6. document.getElementById("txtHint").innerHTML="";
  7. return;
  8. }
  9. if (window.XMLHttpRequest)
  10. {// code for IE7+, Firefox, Chrome, Opera, Safari
  11. xmlhttp=new XMLHttpRequest();
  12. }
  13. else
  14. {// code for IE6, IE5
  15. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  16. }
  17. xmlhttp.onreadystatechange=function()
  18. {
  19. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  20. {
  21. document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  22. }
  23. }
  24. xmlhttp.open("GET","getuser.php?q="+str,true);
  25. xmlhttp.send();
  26. }
  27. </head>
  28.  
  29. <select name="users" onchange="showUser(this.value)">
  30. <option value="">Select a person:</option>
  31. <option value="1">Peter Griffin</option>
  32. <option value="2">Lois Griffin</option>
  33. <option value="3">Glenn Quagmire</option>
  34. <option value="4">Joseph Swanson</option>
  35. </form>
  36. <br />
  37. <div id="txtHint"><b>Person info will be listed here.</b></div>
  38.  
  39. </body>
  40. </html>


Jak rozumiem kluczowy jest ten fragment:

  1. xmlhttp.open("GET","getuser.php?q="+str,true);


Wywołanie metodą GET pliku getuser.php. Jaką metodą powinienem wywołać plik PHP jeżeli nie oczekuję odpowiedzi zwrotnej (skrypt ma się wykonać i tyle)?
flashdev
Cytat(Kas @ 5.08.2010, 19:51:48 ) *
Znalazłem coś takiego. Wygląda na to, że można za pomocą JavaScript wywoływać funkcje w momencie kliknięcia na obiekt Flash. Szkopuł w tym, że nie do końca rozumiem opis od Google. Czy jest taka możliwość aby funkcja JS wykonywała operacje w bazie MySQL?


A w linku masz podany kod śledzący dla flasha:
Kod
on (release) {
// Track with no action
getURL("java script:pageTracker._trackPageview('/folder/file.html');");
}

on (release) {
//Track with action
getURL("java script:pageTracker._trackPageview('/folder/file.html');");
_root.gotoAndPlay(3);
myVar = "Flash Track Test";
}

onClipEvent (enterFrame) {
getURL("java script:pageTracker._trackPageview('/folder/file.html');");
}


Posłuchaj to co Ci mówię (mój pierwszy post). Podałem Ci na tacy gotowe rozwiązanie a Ty dalej masz wątpliwości. Oczekujesz gotowego kodu?

szukaj pod hasłami: ExternalInterface, LoadMovie
Kas
Twoje rozwiązanie mi nie odpowiada. Chcę zrobić to inaczej, poprze JavaScript.

Z tego co widzę mogę zrobić coś takiego:

  1. <object onclick="xmlhttp.open("GET","getuser.php?q="+str,true);">...</object>


Pytanie czy to będzie działać? Jaką metodą powinienem wysyłać żądanie?
flashdev
Cytat(Kas @ 7.08.2010, 17:02:20 ) *
[...]
Pytanie czy to będzie działać? Jaką metodą powinienem wysyłać żądanie?


Może warto sprawdzić?
Na moim komputerze cuda się nie zdarzają, więc oczywiście takie coś nie działa.
Kas
Mam wielką prośbę: czy możesz także dodać czemu miałby być to cud? Do tego, że taki kod nie działa doszedłem już sam, ale nie wiem dlaczego. Wiem, że to nie płatny support od Zend, ale byłoby wspaniale gdybyście mnie nakierowali. Wiecie co chcę osiągnąć...

O ile wiem parametr onclick pozwala na wywołanie funkcji JavaScript. W takim razie czemu

  1. <object onclick="xmlhttp.open("GET","getuser.php?q="+str,true);">...</object>


nie działa?

Edycja: dobra, poszukałem, odpytałem wujka Google i napisałem takie coś:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <title>bez nazwy</title>
  5. <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  6. <meta name="generator" content="Geany 0.18" />
  7. </head>
  8. <script type="text/javascript">
  9. function licznik(id)
  10. {
  11. var xmlhttp;
  12. if (window.XMLHttpRequest)
  13. {
  14. xmlhttp=new XMLHttpRequest();
  15. }
  16. else if (window.ActiveXObject)
  17. {
  18. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  19. }
  20. xmlhttp.open("GET","test.php?id="+id,true);
  21. xmlhttp.send(null);
  22. }
  23.  
  24. <img src="http://m.onet.pl/_m/d9c35deb6dfee27f3e5491cc1f63bd43,5,1.jpg" onclick="licznik(10);" />
  25.  
  26. </body>
  27. </html>


i

  1. <?php
  2. $id=$_GET["id"];
  3. $ourFileName = "testFile.txt";
  4. $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
  5. fwrite($fp, $id);
  6. fclose($ourFileHandle);
  7. ?>


Plik jest tworzony bez problemu, ale wartość id nie jest zapisywana. Czemu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.