Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][Java] onclick - jak zrobić
MaTeK_
post 30.11.2010, 21:00:14
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.06.2010

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


Witam.
Przeglądam internet i nie mogę znaleźć normalnego rozwiązania. Prosiłbym po prostu o zwykły kod, który będzie działał na zasadzie, że ktoś kliknie w przycisk "tekst" i po kliknięciu pokaże się ile razy klikano w przycisk. Była gdzieś akcja, że klikało się "Postaw znicz" i po tym pokazywano "x osób postawiło znicz" - gdzie x to liczba kliknięć w ten guzik. Nie wiem jak dokładnie się nazywa, ale chyba onclick
Go to the top of the page
+Quote Post
smietek
post 30.11.2010, 21:41:37
Post #2





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


Do tego elementu dodajesz akcję po kliknięciu (tak, najłatwiej onclick). Wykonujesz AJAXem skrypt PHP, który dodaje do bazy danych daną wartość (1), a następnie zwraca ilość kliknięć w przycisk i wyświetla obok/na tym elemencie.


--------------------
Go to the top of the page
+Quote Post
mmica
post 30.11.2010, 22:30:11
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 20
Dołączył: 30.11.2010
Skąd: 127.0.0.1

Ostrzeżenie: (10%)
X----


Hey ;]

Sam z ciekawości spróbowałem to napisać, bo jeszcze nigdy wcześniej tego nie pisałem. Całe rozwiązanie oparłem o cztery pliki: index.html, ajax.js, licznik.php oraz licznik.txt. W index.html masz button i dołączony plik ajax.js obsługujący go, a w licznik.php skrypt PHP, który zapisuje kliknięcia i zwraca ich ilość. Plik licznik.txt przechowuje informację o kliknięciach.

index.html:
  1. <head>
  2. <script type="text/javascript" src="./ajax.js"></script>
  3. </head>
  4. <button onclick="MakeRequest()">Click!</button>
  5. <div id="licznik">
  6. </div>
  7. </body>
  8. </html>


ajax.js:
[JAVASCRIPT] pobierz, plaintext
  1. function getXMLHttp()
  2. {
  3. var xmlHttp
  4.  
  5. try
  6. {
  7. //Firefox, Opera 8.0+, Safari
  8. xmlHttp = new XMLHttpRequest();
  9. }
  10. catch(e)
  11. {
  12. //Internet Explorer
  13. try
  14. {
  15. xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  16. }
  17. catch(e)
  18. {
  19. try
  20. {
  21. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  22. }
  23. catch(e)
  24. {
  25. alert("Your browser does not support AJAX!")
  26. return false;
  27. }
  28. }
  29. }
  30. return xmlHttp;
  31. }
  32.  
  33. function MakeRequest()
  34. {
  35. var xmlHttp = getXMLHttp();
  36.  
  37. xmlHttp.onreadystatechange = function()
  38. {
  39. if(xmlHttp.readyState == 4)
  40. {
  41. HandleResponse(xmlHttp.responseText);
  42. }
  43. }
  44.  
  45. xmlHttp.open("GET", "ajax.php?get=qwe", true);
  46. xmlHttp.send(null);
  47. }
  48.  
  49. function HandleResponse(response)
  50. {
  51. document.getElementById('licznik').innerHTML = response;
  52. }
[JAVASCRIPT] pobierz, plaintext


licznik.php:
  1. <?php
  2. if(isset($_GET['get']))
  3. {
  4. $clicks = @file_get_contents('./licznik.txt');
  5. @file_put_contents('./licznik.txt', $clicks+1, LOCK_EX);
  6.  
  7. echo $clicks.' clicks!';
  8. }
  9. ?>


Plikowi licznik.txt musimy nadać prawa do zapisu! W innym wypadku otrzymamy błąd zapisu do pliku. Napisane na szybko aaevil.gif!

Pozdrawiam,
mmica

Ten post edytował mmica 1.12.2010, 07:33:58


--------------------
"Imagination is more important than knowledge, because knowledge is limited." ~Albert Einstein
<?php $var = array('foo', 'bar'); ?>
Go to the top of the page
+Quote Post
MaTeK_
post 1.12.2010, 15:38:41
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.06.2010

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


Kod
/ajax.php was not found on this server.

taki mam komunikat
Go to the top of the page
+Quote Post
mmica
post 1.12.2010, 16:12:55
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 20
Dołączył: 30.11.2010
Skąd: 127.0.0.1

Ostrzeżenie: (10%)
X----


Mój błąd .. tak się kończy edytowanie kodu zaraz przed wysłaniem (zmieniłem nazwy plików i nie uwzględniłem tego w kodzie). Błąd znajduje się w pliku ajax.js w linii 45.

Jest:
[JAVASCRIPT] pobierz, plaintext
  1. xmlHttp.open("GET", "ajax.php?get=qwe", true);
[JAVASCRIPT] pobierz, plaintext

a powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. xmlHttp.open("GET", "licznik.php?get=qwe", true);
[JAVASCRIPT] pobierz, plaintext

Pozdrawiam,
mmica

Ten post edytował mmica 1.12.2010, 17:05:20


--------------------
"Imagination is more important than knowledge, because knowledge is limited." ~Albert Einstein
<?php $var = array('foo', 'bar'); ?>
Go to the top of the page
+Quote Post
MaTeK_
post 1.12.2010, 16:17:54
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.06.2010

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


Działa. Dzięki wielkie .
Go to the top of the page
+Quote Post
bartek_fm
post 12.12.2010, 21:44:43
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Mam dwa pytania.

Czy ten kod uniemożliwia zliczanie kliknięć przez tę samą osobę.
Czy jest możliwość zbudowania takiego skryptu z mniejszą ilością plików?

Pozdrawiam,
Bartek


--------------------
Waluta euro w Polsce

Euro 2012 forum

Zakaz palenia
Go to the top of the page
+Quote Post
mmica
post 13.12.2010, 07:03:02
Post #8





Grupa: Zarejestrowani
Postów: 60
Pomógł: 20
Dołączył: 30.11.2010
Skąd: 127.0.0.1

Ostrzeżenie: (10%)
X----


@bartek_fm:
1. Nie, ale możesz to zrobić dodając do jakiejś bazy IPs klikających i sprawdzać, czy IP kolejnego klikającego nie znajduje się przypadkiem już w bazie, a jeżeli tak, to nie dodawać kliknięcia. To samo możesz zrobić w oparciu o cookies, ale jest to mniej pewny sposób.

2. Tak. Na upartego możesz to wszystko umieścić w jednym pliku.

Pozdrawiam,
mmica


--------------------
"Imagination is more important than knowledge, because knowledge is limited." ~Albert Einstein
<?php $var = array('foo', 'bar'); ?>
Go to the top of the page
+Quote Post
hultman
post 13.12.2010, 10:21:39
Post #9





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2010

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


Dzięki bardzo, mi także się przydały informacje zawarte w tym temacie.


--------------------
wagi elektroniczne
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: 25.04.2025 - 04:14