Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kilka licznikow na jednej stronie
Forum PHP.pl > Forum > Gotowe rozwiązania
frogger14
Siema, mam na stronie kilkadziesiat gierek online biggrin.gif i chcialbym zrobic dla kazdej gry licznik, ilerazy grano w dana gre (czyli poprostu licznik klikniec w dany odsylacz). Z tego co widzialem w skryptach downloadu jest cos takiego ze jest kilkadziesiat plikow i kazdy ma osobny licznik.

Czy mozecie pomoc ?
Ive
ja bym to zrobił na bazie mysql
struktura tabeli:
id_gry | ile | link

a link:
licznik.php?id_gry=001

plik licznik:
na początku:
[php:1:99e9d4487a]<?php
extract($_GET);
?>[/php:1:99e9d4487a]
potem zapytanie:
[sql:1:99e9d4487a]SELECT * WHERE id_gry='$id_gry'[/sql:1:99e9d4487a]
dajesz to do np.
[php:1:99e9d4487a]<?
$cz = mysql_fetch_row($query);
$ile = $cz['ile'];
?>
[/php:1:99e9d4487a]
potem nadpisujesz dane:
[sql:1:99e9d4487a]UPDATE nazwa_tabeli SET ile='($ile+1)' WHERE id_gry='$id_gry'[/sql:1:99e9d4487a]
no i przekierowanie do linku podanego w polu 'link' gdzie id_gry='$id_gry' ;]
frogger14
tylko ze ja nie mam bazy danych sad.gif

Chcialem zrobic to tak:
Kazda gra ma swoj licznik powiedzmy cos takego:
Gra1 - licznik.php + licznik.txt
Gra2 - licznik2.php + licznik2.txt
Gra3 - licznik3.php + licznik3.txt
itd. az do 70 tongue.gif

Troche roboty i troche lamerskie ale nic mi lepszego do glowy nie przyszlo. biggrin.gif
Ive
możesz zrobić to też tak że wszystkie dane trzymasz w jednym pliku tyle że nowa linijka = nowa gra, struktura:
id || ile || link
potem w pętli rozbijać to poprzez explode, dodawać +1, zapisywać znowu etc.
ja tam za wiele ci o plikach powiedzieć nie mogę bo straszne miałem z nimi problemy i przerzuciłem się na mysql ;]
Xinn
hmmm nie wiem czy o cos takiego ci chodzi... ale ja proponuje cos takiego:





plik funkcje.php [lub jakikolwiek inny jaki chcesz smile.gif]

[php:1:c016da2544]<?php
$sciezka = "liczniki"; //bez '/' na koncu

function licznik_dodaj($id_licznika)
{
global $sciezka;
if (file_exists("$sciezka/$id_licznika.dat"))
{
$counter=fopen("$sciezka/$id_licznika.dat", "r");
flock($counter, 1);
$liczniczek=fgets($counter, 200);
flock($counter, 3);
fclose($counter);

$liczniczek++;

$counter=fopen("$sciezka/$id_licznika.dat", "w");
flock($counter, 2);
fwrite($counter, $liczniczek);
flock($counter, 3);
fclose($counter);
}
else
{
$counter=fopen("$sciezka/$id_licznika.dat", "w");
flock($counter, 2);
fwrite($counter, '1');
flock($counter, 3);
fclose($counter);
chmod("$sciezka/$id_licznika.dat", 666); // nie jestem pewien czy przy tworzeniu pliku odrazu ma on chmoda 666... to tak na wszelki wypadek ;-)
}
}

function licznik_pokaz($id_licznika)
{
global $sciezka;
if (file_exists("$sciezka/$id_licznika.dat"))
{

$counter=fopen("$sciezka/$id_licznika.dat", "r");
flock($counter, 1);
$liczniczek=fgets($counter, 200);
flock($counter, 3);
fclose($counter);
echo $liczniczek;
}
else
{
echo 'brak pliku'."$sciezka/$id_licznika.dat";
}
}

?>[/php:1:c016da2544]

teraz mozesz to uzyc w sposob np taki:

[php:1:c016da2544]<?php
include "funkcje.php";

licznik_dodaj('1');
licznik_pokaz('1');

?>[/php:1:c016da2544]

wyjasnienie...
funmkcja licznik_dodaj sluzy do dodania [zwiekszenia] liczby odslon o 1 (wywowylana poprzez
licznik_dodaj(jakis_ciag_znakow);
zas
licznik_pokaz(jakis_ciag_znakow); do pokazywania wartosci danego counterka... )
mozesz rowniez tworzyc liczniki niewidzialne... wtedy tylko pozbywasz sie (nie piszesz licznik_pokaz('1'); w kodzie strony...)

jak tego dokladniej uzywac?
masz np strone gry.php kazda gra jest rozrozniana poprzez $_GET[id]
mianowicie gry sa wywolywane poprzez gry.php?id=5 (gdzie id to numer gry...)
w takim wypadku do strony gry.php wystarczy ze dodasz na poczatku strony


[php:1:c016da2544]<?php
include "funkcje.php";

licznik_dodaj($_GET[id]);
?>[/php:1:c016da2544]

a pozniej w miejscu gdzie chcesz aby sie licznik wyswietlal:
[php:1:c016da2544]<?php
licznik_pokaz($_GET[id]);
?>[/php:1:c016da2544]

MALA UWAGA... w pliku funkcje.php (czyli tym pierwszym co ci napisalem) masz zmienna $sciezka.. odpowiada oina za sciezke w ktorej beda przechowywane dane counterkow (musisz pierw taki folderek utworzyc i dac mu chmoda 777 )

jesli dalej czegos nie rozumiesz to pisz tutaj...

btw... moge dostac adres strony na PW? tak sie sklada ze prowadze vortal o podobnej tematyce
frogger14
Dzieki za rade ale juz mam :wink:
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-2024 Invision Power Services, Inc.