Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zliczanie odsłon konkretnego artykuły, czy to licznik kliknięć ??
primo
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

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


Proszę o podpowiedź w sprawie następującego rozwiązania.

Mam jakiś tam artykuł trzymany w bazie danych, na stronie wyświetlana jest tylko jego zajawka. Gdy kliknie się "czytaj dalej" to dopiero otwiera się cały tekst danego artykułu. W momencie kliknięcia ma być dodawana kolejna odsłona danego artykułu. Jak proponujecie wykonać coś takiego (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Czy wykorzystalibyście do tego baze mysql czy pliki (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) I jak powinno wyglądać zapytanie odnośnie wstawienia do bazy (jaki znacznik powinien być pobierany, aby było wiadomo co ma być dodane do bazy). Zaproponujcie jaką strukturę powinna mieć baza.

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Cienki1980
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Jeżeli masz artykuł przechowywany w bazie danych to dodaj do tabeli z artykułem pole 'licznik' typu INT i z każdą odsłoną zwiększaj licznik o jeden.
Go to the top of the page
+Quote Post
primo
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

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


Cytat(Cienki1980 @ 12.02.2007, 21:26:36 ) *
Jeżeli masz artykuł przechowywany w bazie danych to dodaj do tabeli z artykułem pole 'licznik' typu INT i z każdą odsłoną zwiększaj licznik o jeden.


A co jeśli chcę zliczać liczbę kliknięć nie tylko w strefie news, ale i artykuły, hasła, cytaty, biblioteczka (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Każdy z tych działów to oddzielna tabela w bazie danych o swojej strukturze. Czy w związku z tym lepszym rozwiązaniem będzie utworzenie osobnej tabeli i trzymanie tam indeksów głównych z tych tabel (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Co masz na myśli mówiąc: "z każdą odsłoną zwiększaj licznik o jeden" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Czy do znacznika <a hre> mam dodać jakiś kod ? Czy jak to ma być rozpoznawane (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

  1. CREATE TABLE `bieg_slowniczek_licznik_klikniec` (
  2. `licznik_klikniec` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `ksiazka_id` INT( 11 ) NOT NULL ,
  4. `artykul_id` INT( 11 ) NOT NULL ,
  5. `cytat_id` INT( 11 ) NOT NULL ,
  6. `id_slowniczka` INT( 11 ) NOT NULL ,
  7. PRIMARY KEY ( `licznik_klikniec` )
  8. ) TYPE = MYISAM ;


Na początek mam utworzoną już tabelę. Coś sugerujecie na tym etapie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
frickle
post
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 20.04.2006
Skąd: Kraków/Lublin/Lubartów

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


Jeżeli masz jakiś kod który wyświetla cały artykuł czy inną treść, to pewnie numer tego artykułu przekazujesz w linku. Więc zmontuj sobie funkcję której paramentrem będzie numer artykułu i dodatkową tabelę w bazie gdzie przechowasz id artykuu i jego licznik. Przed kodem wyświetlającym artykuł wstawisz odwołanie do funkcji z odpowiednim paramentrem (pobranym z tablicy $_GET) a funkcja sprawdzi czy w tabeli już wystepuje ten id, jeśli tak to zmodyfikuje wpis licznika, a jeśli nie to doda rekord z licznikiem równym 1 i po kłopocie.

Jeżeli natomiast chesz zliczać różne treści (artykuły, newsy itd) to wypada albo zrobić funkcję i tabelę dla każdego rodzaju, albo do tabeli dodać pole rodzaj a w funkcji dodatkowy parametr określający rodzaj. Tyle że wtedy w linku musisz przekazywać rodzaj wpisu. A poza tym to już tylko modyfikacja zapytań w funkcji i również z głowy.

  1. CREATE TABLE liczniki (
  2. id_licznika INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. id_zasobu INT(11) NOT NULL,
  4. rodzaj TINYINT NOT NULL DEFAULT = 0,
  5. licznik INT(11) DEFAULT 1);


  1. <?php
  2. function koryguj_licznik($idzasobu, $rodzajzasobu)
  3.  {
  4. //... łączenie z bazą ...
  5. $query = 'select * from liczniki where id_zasobu = '.$_GET['id'].' and rodzaj = .'$_GET['rodzaj'];
  6. $wynik = mysql_query($query);
  7. $ile = mysql_num_rows($wynik);
  8. if($ile > 0)
  9.  {
  10. $licznik = mysql_fetch_assoc($wynik);
  11. $zliczone = $licznik['licznik'];
  12. $zliczone++;
  13. $query = 'update liczniki set licznik = '.$zliczone.' where id_zasobu = '.$_GET['id'].' and rodzaj = .'$_GET['rodzaj'];
  14. mysql_query($query);
  15.  }
  16. else
  17.  {
  18. $query = "insert into liczniki (idzasobu, rodzaj) values (".$_GET['id'].",".$_GET['rodzaj'].")";
  19.  }
  20.  }
  21. ?>

Pisane z palca więc nie wiem czy zadziała, ale powinno.

Ten post edytował frickle 14.02.2007, 11:01:44
Go to the top of the page
+Quote Post

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: 21.10.2025 - 23:41