Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php+MySQL] licznik kliknięć, ...w dany temat
roobik
post
Post #1





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


Witam!
Na początek małe wyjaśnienie. Owszem są różnego rodzaju liczniki "kliknięcia w link" itp, lecz u mnie wydaje się być inny problem
W bazie mam pola:
id - wiadomo
poziom - poziom zaawansowania
temat - temat odpowiadający poziomowi zaawansowania
txt - tekst tematu odpowiadający tematowi zaawansowania (który odpowiada poziomowi zaawansowania (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) )
tytul - tytuł tematu...(itd) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Poziomy zaawansowania są 3. w każdym z poziomów jest 20 tematów, czyli w sumie jest 60 tematów.

I teraz np tak: chcąc dostać się do tematu 15 z poziomu 1 adres wygląda tak:
Cytat

Analogicznie - temat 27 z poziomu 3 ma postać
Cytat


Zamiarem moim jest zobaczenie popularności tematu (nawet bez wyświetlenia). Inaczej mówiąc chcę zobaczyć, który z tematów cieszy się największą popularnością. W tym celu dajmy na to dołoże do tabeli pole licz.
I teraz 3 pytania:
1. W jaki sposób zliczać kliknięcia w poszczególne linki?
2. Czy da radę zachować przy tym "liczeniu kliknięć" ww adresy?
3. Co należy dopisać do pliku test.php, by poprawnie zliczał mi kliknięcia?

Bardzo bym prosił o jakiekolwiek wskazówki, być może nawet kodzik... Już nie mam siły... czwarty dzionek (wieczór) się z tym męczę... i byki mi wyskakują...
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
E-d
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 9.04.2005

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


W kodzie który wyświetla artykuł czy co tam wyświetlasz (to poziom 3 a txt 2 itp..)
  1. <?php
  2. $zapytanie = "UPDATE tabela SET licz = 'licz+1' WHERE ID = '$_GET[txt]'";
  3. ?>
Go to the top of the page
+Quote Post
roobik
post
Post #3





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


...próbowałem wkleić w różne miejsca, co podał e-D i nic (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ale za to przydało mi się gdzie indziej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
To co jest poniżej to jest tylko przykład (nawet nie wiem czy działa), żeby była jasność o co chodzi.
  1. <?
  2. $sql = mysql_connect("localhost", "", "");
  3. ?> 
  4. <?php
  5. #
  6. $zapytanie = "UPDATE test SET licz = 'licz+1' 
  7. WHERE ID = '$_GET[txt]'";
  8. #
  9. if (isset($_GET['temat']))
  10. {
  11. if (isset($_GET['txt']))
  12. $pokaz = $_GET['txt'];
  13. else
  14. $pokaz = 'txt';
  15. $id = (int) $_GET['id'];
  16. $stopien = (int) $_GET['poziom'];
  17. $zapytanie = 'SELECT txt FROM test where 
  18.  
  19. temat='.$temat.' AND poziom='.$stopien.' LIMIT 1';
  20. $wykonaj = mysql_query($zapytanie) or 
  21. while($id = mysql_fetch_array($wykonaj))
  22. {
  23. if(!empty($id['txt'])) echo 
  24.  
  25. $id['txt']."<BR><BR>";
  26. else header('Location: index.php');
  27. }
  28. }
  29. else
  30. echo '
  31. # coś tam
  32. ';
  33. ?>
Go to the top of the page
+Quote Post
JOHNY
post
Post #4





Grupa: Zarejestrowani
Postów: 297
Pomógł: 0
Dołączył: 17.01.2003
Skąd: Tarnów

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


  1. <?php
  2. if (isset($_GET['txt']))
  3. $pokaz = $_GET['txt'];
  4. $zapytanie = "UPDATE test SET licz = 'licz+1' 
  5. WHERE ID = ". $_GET['txt'] ."";
  6. else
  7. ?>


Może tak

Ten post edytował JOHNY 6.05.2006, 11:27:29
Go to the top of the page
+Quote Post
roobik
post
Post #5





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


(IMG:http://forum.php.pl/style_emoticons/default/sad.gif) też nie -> parse error
będę wdzięczny za inne podpowiedzi...
(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
JOHNY
post
Post #6





Grupa: Zarejestrowani
Postów: 297
Pomógł: 0
Dołączył: 17.01.2003
Skąd: Tarnów

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


a w której lini masz error (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

albo zobacz tak
  1. <?php
  2. if (isset($_GET['txt']))
  3. $pokaz = $_GET['txt'];
  4. $zapytanie = "UPDATE test SET licz = licz+1
  5. WHERE ID = ". $_GET['txt'] ."";
  6. else
  7.  
  8. ewntualnie
  9.  
  10. if (isset($_GET['txt']))
  11. $pokaz = $_GET['txt'];
  12. $zapytanie = "UPDATE test SET licz = licz+1 
  13. WHERE ID = '$pokaz'";
  14. else
  15. ?>
Go to the top of the page
+Quote Post
roobik
post
Post #7





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


JOHNY, czy mógłbyś (poprawnie) dokleić kawałek kodu do mojego?
Ja zrobiłem tak:
  1. <?
  2. $sql = mysql_connect("localhost", "", "");
  3. ?> 
  4. <?php
  5. #
  6. $zapytanie = "UPDATE test SET licz = 'licz+1' 
  7. WHERE ID = '$_GET[txt]'";
  8. #
  9. if (isset($_GET['temat']))
  10. {
  11. # POPRAWKA ODTĄD
  12. if (isset($_GET['txt']))
  13. $pokaz = $_GET['txt'];
  14. $zapytanie = "UPDATE test SET licz = licz+1 
  15. WHERE ID = '$pokaz'";
  16. else
  17. # DOTĄD
  18. $pokaz = 'txt';
  19. $id = (int) $_GET['id'];
  20. $stopien = (int) $_GET['poziom'];
  21. $zapytanie = 'SELECT txt FROM test where 
  22.  
  23. temat='.$temat.' AND poziom='.$stopien.' LIMIT 1';
  24. $wykonaj = mysql_query($zapytanie) or 
  25. while($id = mysql_fetch_array($wykonaj))
  26. {
  27. if(!empty($id['txt'])) echo 
  28.  
  29. $id['txt']."<BR><BR>";
  30. else header('Location: index.php');
  31. }
  32. }
  33. else
  34. echo '
  35. # coś tam
  36. ';
  37. ?>

Cytat(JOHNY)

Ponieważ przed tym co jest tutaj jest jeszcze w cholerę innych rzeczy, to błąd wyskakuje w linii 429, co w tym momencie i tak nic nie mówi... Poza tym nie korzystam z programu do "kolorowania składni" - piszę w zwykłym notatniku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
JOHNY
post
Post #8





Grupa: Zarejestrowani
Postów: 297
Pomógł: 0
Dołączył: 17.01.2003
Skąd: Tarnów

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


Błąd pewnie wywala Ci w lini 8 także usuń to zapytanie
  1. <?php
  2. #
  3. $zapytanie = "UPDATE test SET licz = 'licz+1' 
  4. WHERE ID = '$_GET[txt]'";
  5. #
  6. ?>

Jeśli stosujesz funkcje $_GET to zmienna powinna być w ['txt']

Pozatym w notatniku też możesz poszukać wiersza (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) CTR+G (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?
  2. $sql = mysql_connect("localhost", "", "");
  3. ?> 
  4. <?php
  5. #
  6. if (isset($_GET['temat']))
  7. {
  8. # POPRAWKA ODTĄD
  9. if (isset($_GET['txt']))
  10. $pokaz = $_GET['txt'];
  11. $zapytanie = "UPDATE test SET licz = licz+1 
  12. WHERE ID = '$pokaz'"; // lub WHERE ID = '.$pokaz.' albo też WHERE ID = '.$_GET['txt'].'
  13. else
  14. # DOTĄD
  15. $pokaz = 'txt';
  16. $id = (int) $_GET['id'];
  17. $stopien = (int) $_GET['poziom'];
  18. $zapytanie = 'SELECT txt FROM test where 
  19.  
  20. temat='.$temat.' AND poziom='.$stopien.' LIMIT 1';
  21. $wykonaj = mysql_query($zapytanie) or 
  22. while($id = mysql_fetch_array($wykonaj))
  23. {
  24. if(!empty($id['txt'])) echo 
  25.  
  26. $id['txt']."<BR><BR>";
  27. else header('Location: index.php');
  28. }
  29. }
  30. else
  31. echo '
  32. # coś tam
  33. ';
  34. ?>


Pozatym radziłbym stosować zapytania w zapytanie ="Select ...."

Ten post edytował JOHNY 6.05.2006, 14:05:18
Go to the top of the page
+Quote Post
roobik
post
Post #9





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


(IMG:http://forum.php.pl/style_emoticons/default/sad.gif) coś jest popieprzone - wywala mi byka w tym wierszu:
Cytat
$zapytanie = "UPDATE test SET licz = licz+1
WHERE ID = '$pokaz'";

gdy tego wiersza nie ma wszystko jest OK... z tym, że "nie liczy" kliknięć...

...chyba przyjdzie mi się obyć bez "licznika" (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
macza
post
Post #10





Grupa: Zarejestrowani
Postów: 236
Pomógł: 4
Dołączył: 1.05.2006
Skąd: Lublin

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


Cytat(roobik @ 2006-05-06 13:34:50)
(IMG:http://forum.php.pl/style_emoticons/default/sad.gif) coś jest popieprzone - wywala mi byka w tym wierszu:
Cytat

$zapytanie = "UPDATE test SET licz = licz+1
WHERE ID = '$pokaz'";

gdy tego wiersza nie ma wszystko jest OK... z tym, że "nie liczy" kliknięć...

...chyba przyjdzie mi się obyć bez "licznika" (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

  1. <?php
  2. $zapytanie='UPDATE test SET licz="licz+1" WHERE ID="'.$pokaz.'"';
  3. ?>
Go to the top of the page
+Quote Post
roobik
post
Post #11





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


macza - jest już lepeij - nie wywala błędów... lecz również nie zlicza (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
być może nie w tym miejscu wkleiłem to, co odpowiada za zliczanie...
Go to the top of the page
+Quote Post
E-d
post
Post #12





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 9.04.2005

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


  1. <?php
  2. $ile = $rekord['licz']+1;
  3. $zapytanie="UPDATE `test` SET `licz` = '$ile' WHERE `ID`='$id'";
  4. ?>
Go to the top of the page
+Quote Post
roobik
post
Post #13





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


E-d - zarówno Twój jak kod jak i kod macza są OK... ale nie zmienia to faktu, że niestety... nie zliczana jest ilośćkliknięć (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

nie wiem , czy coś to pomoże ale:
rekordów (id) jest 60
poziomów (poziom) jest 3
tematów (temat) jest 20 w każdym poziomie, czyli razem 60 (tak jak id)
Pola poziom i temat są wartościami liczbowymi

Ps.
W pierwszym poście wystąpiła pomyłka.
Odpowiednie linki brzmią:

Cytat

oraz
Cytat

Jeśli jest to bardzo poważna różnica - przepraszam za wprowadzenie w błąd.

Ten post edytował roobik 6.05.2006, 16:12:38
Go to the top of the page
+Quote Post
E-d
post
Post #14





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 9.04.2005

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


  1. <?php
  2. $id = $_GET['temat'];
  3. $ile = 5;
  4. mysql_query("UPDATE `test` SET `licz` = '$ile' WHERE `ID`='$id'") or 
  5. ?>

To już musi działać, testowałem u siebie. Jeśli nie to zrób tak. Włącz PhpMyAdmin, w tabeli edytuj pole ręcznie, gdy pokaże ci się kod kliknij "Utwórz kod php" i wklej do zapytania.

Ten post edytował E-d 6.05.2006, 16:17:33
Go to the top of the page
+Quote Post
roobik
post
Post #15





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


E-d - DZIAŁA! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
...teraz tylko jest problem aby nie pokazywało aktualną liczbę kliknięć - bo ile razy bym nie kliknął w dany temat, to pokazuje mi się 5 (odpowiada za to $ile = 5;).
Go to the top of the page
+Quote Post
E-d
post
Post #16





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 9.04.2005

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


  1. <?php
  2. $id = $_GET['temat'];
  3. $rekord = mysql_fetch_array(mysql_query("SELECT * FROM `test` WHERE `ID` = '$id'")));
  4. $ile = $rekord['licz']+1;
  5. mysql_query("UPDATE `test` SET `licz` = '$ile' WHERE `ID`='$id'") or 
  6. ?>


Ten post edytował E-d 6.05.2006, 18:36:51
Go to the top of the page
+Quote Post
roobik
post
Post #17





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
w międzyczasie próbowałem różnych sposobów, również bardzo podobny do Twojego
  1. <?php
  2. $id = $_GET['temat'];
  3. $rekord = mysql_fetch_array(mysql_query("SELECT * FROM `test` WHERE `ID` = '$id'")));
  4. $ile = ile+1;
  5. mysql_query("UPDATE `test` SET `licz` = '$ile' WHERE `ID`='$id'");
  6. ?>

ale niestety (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ... wywala parse error
zaraz mnei chyba coś trafi.... już zaczynam mieć dość ... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (na dzisiaj)

Ten post edytował roobik 6.05.2006, 18:48:38
Go to the top of the page
+Quote Post
macza
post
Post #18





Grupa: Zarejestrowani
Postów: 236
Pomógł: 4
Dołączył: 1.05.2006
Skąd: Lublin

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


  1. <?php
  2. $id = $_GET['temat'];
  3. $pytanie='SELECT * FROM test WHERE id="'.$id.'"'; 
  4. $wykonaj=mysql_query($pytanie); 
  5. while($pole=mysql_fetch_array($wykonaj)){
  6. $rekord=$pole[licz];
  7. }
  8. $ile = $rekord['licz']+1;
  9. mysql_query('UPDATE test SET licz= "'.$ile.'" WHERE id="'.$id.'"')
  10. ?>

i powinno dzialac!
Go to the top of the page
+Quote Post
roobik
post
Post #19





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


Słuchajcie .........
DZIAŁA!
kurde... wielkie DZIEKI....
brakowało tylko średnika na końcu w kodzie macza lae jest OK
Chłopaki ... wielkie T.H.A.N.X.(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !!
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

...ale żeśmy (żeście (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) wymaglowali temat (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

POZDRAWIAM (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !!!!!!
Go to the top of the page
+Quote Post
macza
post
Post #20





Grupa: Zarejestrowani
Postów: 236
Pomógł: 4
Dołączył: 1.05.2006
Skąd: Lublin

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


  1. <?php
  2. $id = $_GET['temat'];
  3. $pytanie='SELECT * FROM test WHERE id="'.$id.'"'; 
  4. $wykonaj=mysql_query($pytanie); 
  5. while($pole=mysql_fetch_array($wykonaj)){
  6. $rekord=$pole[licz];
  7. }
  8. $ile = $rekord['licz']+1;
  9. mysql_query('UPDATE test SET licz= "'.$ile.'" WHERE id="'.$id.'"');
  10. ?>

poprawione dzialajace! ;D :roll2:
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 23:34