Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Licznik kliknięć
mperlam
post
Post #1





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


Cześć. Chciałbym stworzyć dość nietypowy licznik ale niestety nie wiem jak. Chodzi o to, że na stronie głównej strony www chcę mieć umieszczony graficzny licznik. Dodawanie do niego pojedynczych liczb wyglądałoby tak, że na osobnej podstronie znajdowałyby się dwa przyciski: + oraz -. Po kliknięciu w + wartość na stronie pow. się o jeden, minus- pomniejsza.

Znalazłem taki skrypt:

Kod
<?php
//Moj pierwszy zegar :-)
if(file_exists("counter.txt")){            //Sprawdza czy istnieje taki plik
    $fp=fopen("counter.txt","r+");        //Otwiera plik paramtetr r+ pozwala pisac, zapisuje w zmiennej $fp
    $count=fgets($fp,6);            //Odczytuje to co jest w pliku
    $count++;                //Inkrementuje zmienna $count
    rewind($fp);            //Ustawia wskaznik na poczatku pliku
    fputs($fp,$count,6);            //Zapisuje inkrementowana $count w pliku mozna urzyc fwrite()
    fclose($fp);            //Zamyka plik
}else{
    $fopen("counter.txt","wb");        //Tworzy plik
    $count="1";            //$count jest inicjowany z wartoscia 1
    fputs($fp,$count,6);            //Wartosc zostaje zapisana w pliku
    fclose($fp);            //Utworzony plik zostaje zamkniety
}

//Ta funkcja troszczy sie o pierwsze zera
$count=sprintf("%03d",$count);

//Tutaj skladam licznik z gifow
for($i=0;$i<3;$i++){
$img_counter=$img_counter . "<img src=counter/" . substr($count,$i,1) . ".gif align=absmiddle width=10 height=14>";
}
echo $img_counter;
?>


Działa bardzo fajnie bo na plikach txt i nie jest skomplikowany. Działa on jednak tak, że wyświetla liczbę wyświetleń strony. Czy mogę prosić o przeróbkę (czyli stworzenie drugiego pliku i przeróbkę tego)? Nie jestem zbyt kumaty a próbowałem coś wymodzić ale średnio mi się to udało...


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Link z plusem i minusem musi wyglądać tak:
  1. <a href="adres.php?klik=plus">PLUS</a><a href="adres.php?klik=minus">MINUS</a>
A przerobiony skrypt:
  1. if(isset($_GET['klik']) && ($_GET['klik']=='PLUS' || $_GET['klik']=='MINUS')){
  2. if(file_exists("counter.txt")){ //Sprawdza czy istnieje taki plik
  3. $fp=fopen("counter.txt","r+"); //Otwiera plik paramtetr r+ pozwala pisac, zapisuje w zmiennej $fp
  4. $count=fgets($fp,6); //Odczytuje to co jest w pliku
  5. if($_GET['klik']=='PLUS'){ $count++; }
  6. if($_GET['klik']=='MINUS'){ $count--; }
  7.  
  8. rewind($fp); //Ustawia wskaznik na poczatku pliku
  9. fputs($fp,$count,6); //Zapisuje inkrementowana $count w pliku mozna urzyc fwrite()
  10. fclose($fp); //Zamyka plik
  11. }else{
  12. $fopen("counter.txt","wb"); //Tworzy plik
  13. $count="1"; //$count jest inicjowany z wartoscia 1
  14. fputs($fp,$count,6); //Wartosc zostaje zapisana w pliku
  15. fclose($fp); //Utworzony plik zostaje zamkniety
  16. }
  17.  
  18. //Ta funkcja troszczy sie o pierwsze zera
  19. $count=sprintf("%03d",$count);
  20.  
  21. //Tutaj skladam licznik z gifow
  22. for($i=0;$i<3;$i++){
  23. $img_counter=$img_counter . "<img src=counter/" . substr($count,$i,1) . ".gif align=absmiddle width=10 height=14>";
  24. }
  25. }
  26. echo $img_counter;


Ten post edytował sadistic_son 9.11.2009, 16:16:29


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
mperlam
post
Post #3





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


Niestety jest chyba jakiś błąd składni gdyż zwraca mi błąd na piątej lini (Parse error: syntax error, unexpected T_STRING in /home/.../index.php on line 5)

Dobra uało się smile.gif

Kod wyglądać powinien tak:

Kod
<?php

if(file_exists("counter.txt")){ //Sprawdza czy istnieje taki plik

$fp=fopen("counter.txt","r+"); //Otwiera plik paramtetr r+ pozwala pisac, zapisuje w zmiennej $fp

$count=fgets($fp,6); //Odczytuje to co jest w pliku

if($_GET['klik']== plus){ $count++; }

if($_GET['klik']== minus){ $count--; }
      
rewind($fp); //Ustawia wskaznik na poczatku pliku

fputs($fp,$count,6); //Zapisuje inkrementowana $count w pliku mozna urzyc fwrite()

fclose($fp); //Zamyka plik

}else{

$fopen("counter.txt","wb"); //Tworzy plik

$count="1"; //$count jest inicjowany z wartoscia 1

fputs($fp,$count,6); //Wartosc zostaje zapisana w pliku

fclose($fp); //Utworzony plik zostaje zamkniety

}


//Ta funkcja troszczy sie o pierwsze zera

$count=sprintf("%03d",$count);

//Tutaj skladam licznik z gifow

for($i=0;$i<3;$i++){

$img_counter=$img_counter . "<img src=counter/" . substr($count,$i,1) . ".gif align=absmiddle width=10 height=14>";

}

echo $img_counter;
?>


Czy można zrobić tak, że po kliknięciu w plus lub minus pozostaję z powrotem na stronie z której klikam w ten PLUS lub MINUS?


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a gdzie masz ten link do klikania?


--------------------
Go to the top of the page
+Quote Post
MateuszS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


  1. <script type="text/javascript">
  2. function submit(id) {
  3. var input=document.getElementById('input');
  4. if(id=='plus') {
  5. input.value='plus';
  6. } else {
  7. input.value='minus';
  8. }
  9. document.form.submit();
  10. }
  11. </script>
  12. <form action="" method="POST" name="form" />
  13. <a href="#" style="color: green" onClick="submit('plus')">+</a> /
  14. <a href="#" style="color: red" onClick="submit('minus')">-</a>
  15. <input type="hidden" name="glos" id="input" />
  16. </form>
  17. <?
  18. // utworz plik glosy.txt
  19. if(isset($_POST['glos'])) {
  20. $glos=$_POST['glos'];
  21. $plik=fopen('glosy.txt','r');
  22. $tekst=fread($plik,200);
  23. if(!empty($tekst)) {
  24. $dziel=str_replace(' ','',$tekst);
  25. $dziel=explode('|',$dziel);
  26. if($glos=='plus') {
  27. @ $plus=$dziel[0]+1;
  28. $tekst=$plus.' | '.$dziel[1];
  29. } else {
  30. @ $minus=$dziel[1]+1;
  31. $tekst=$dziel[0].' | '.$minus;
  32. }
  33. fclose($plik);
  34. $wykasuj=fopen('glosy.txt','w+');
  35. $zapisz=fwrite($wykasuj,$tekst);
  36. if(!$zapisz) {
  37. echo 'Blad przy dodaniu glosu<br /><br />';
  38. } else {
  39. echo 'Dodano glos<br /><br />';
  40. }
  41. fclose($wykasuj);
  42. } else {
  43. $tekst=(0).' | '.(0);
  44. $zapisz=fwrite($plik,$tekst);
  45. fclose($plik);
  46. }
  47.  
  48.  
  49. }
  50.  
  51. // wyswietlanie
  52. $otworz=fopen('glosy.txt','r');
  53. $czytaj=fread($otworz,200);
  54. $plusminus=str_replace(' ','',$czytaj);
  55. $plusminus=explode('|',$plusminus);
  56. echo 'Na + zaglosowalo '.$plusminus[0].' userow, natomiast na - zaglosowano '.$plusminus[1].' razy';
  57. fclose($otworz);
  58.  
  59. ?>


kurcze spoznilem sie ;D jak na matme ;/ No nic moze komus sie przyda

Ten post edytował MateuszScirka 9.11.2009, 16:22:02


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
sadistic_son
post
Post #6





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cytat(mperlam @ 9.11.2009, 16:17:10 ) *
Czy można zrobić tak, że po kliknięciu w plus lub minus pozostaję z powrotem na stronie z której klikam w ten PLUS lub MINUS?
1) Można, wklej ten kod po prostu do tej strony na ktorej chcesz zostać.
2) Nie usuwaj pierwszej linijki, która sprawdza czy kliknięto w link 'klik'. Tam brakowało nawiasu i średnika, już poprawiłem.

Ten post edytował sadistic_son 9.11.2009, 16:25:26


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
mperlam
post
Post #7





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


Kod
<input value="PLUS" type="button" onClick="self.location.href=('index.php?klik=plus')" />
<input value="MINUS" type="button" onClick="self.location.href=('index.php?klik=minus')" />



Zrobiłem dwa Buttony w takim stylu w pliku (załóżmy plik.php). W pliku index.php jest skrypt. Chcę aby po kliknięciu w plus lub minus pozostać z powrotem w plik.php bo teraz trafiam do index.php.


Usunąłem pierwszą linijkę gdyż jest ona dla mnie zbędna ponieważ skrypt od strony technicznej (kliknięcie w "klik") będę wykonywał tylko ja winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. <input value="PLUS" type="button" onClick="self.location.href=('?klik=plus')" />
  2. <input value="MINUS" type="button" onClick="self.location.href=('?klik=minus')" />


a coś takiego?

aha no i skrypt do obsługi tego musisz mieć na stronie z tymi buttonami.

Ten post edytował piotrooo89 9.11.2009, 16:43:43


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #9





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cytat(sadistic_son @ 9.11.2009, 16:22:28 ) *
1) Można, wklej ten kod po prostu do tej strony na ktorej chcesz zostać.
No to jest odpowiedź na Twoje pytanie! No i wiadomo, że musisz kierować linka/buttona do tej właśnie strony. Ni wklejaj tego skryptu do index.php tylko do plik.pxp skoro chcesz na nim pozostać.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
mperlam
post
Post #10





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


O kliknieciu adres się zmienia na klik... Chce aby nadal był taki jak przed kliknieciem winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #11





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


To zamiast linka uzyj formularza i metody POST.

Ten post edytował sadistic_son 9.11.2009, 17:16:16


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
mperlam
post
Post #12





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


Formularz raczej odpada wiec pozostaje jednak przy tym adresie


--------------------
Go to the top of the page
+Quote Post
Blame
post
Post #13





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


To jest php. Strona musi się przeładować, a tym musisz jakoś przekazać informacje do skryptu co ma robić. Jeśli ci to nie pasuje to javascript.


--------------------
Go to the top of the page
+Quote Post
mperlam
post
Post #14





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


smile.gif Już nie trzeba smile.gif Skrypt działa dobrze ale muszę do tego dodać hasło. Chcę aby po prostu nad przyciskami był wyświetlany formularz na hasło i dopiero po wpisaniu prawidłowego dało się wykonać polecenia (czyli aby PLUS i MINUS dopiero po wpisaniu hasła zadziałały).

Powinno to wyglądać +/- tak:

Kod
<form action="?">
    <input [b]type="password"[/b] name="nazwa" />
</form>


Kod
if(? == 'haslo'){
if($_GET['klik']== plus){ $count++; }
if($_GET['klik']== minus){ $count--; }}


Bardzo proszę o poprawienie lub przeróbkę kodu gdyż niestety nie umiem tego zrobić :/



--------------------
Go to the top of the page
+Quote Post
Blame
post
Post #15





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Według mnie jest to bezsensowne rozwiązanie, bo najlepiej by było jakbyś wyświetlał przyciski dopiero po wpisaniu poprawnego hasła bądź prosił o hasło po wciśnięciu przycisku i jeśli hasło jest ok skrypt by zliczał.
Według twojego pomysłu, aby skrypt działał musiałbyś przekazać plus i minus za pomocą $_POST czyli formularza, nie da się tego zrobić tak jak jest teraz, bo żeby sprawdzić czy hasło jest poprawne musisz je wysłać co wiąże się z przeładowaniem strony a dopiero potem możesz wcisnąć któryś z linków nie da się zrobić tego na raz. To tak jak byś chciał oskrobać i ugotować ziemniaki jednocześnie.

Ten post edytował Blame 9.11.2009, 19:05:07


--------------------
Go to the top of the page
+Quote Post
mperlam
post
Post #16





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 24.04.2009

Ostrzeżenie: (30%)
XX---


Dziękuję za odpowiedź. Jeżeli nie jest to zbyt proste to sobie odpuszczę smile.gif Dziękuję wszystkim, którzy pomogli mi w temacie.


--------------------
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 Aktualny czas: 19.08.2025 - 12:53