Contoar downloads, nr click-uri
Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
-
trif
- Mesaje:500
Contoar downloads, nr click-uri
salut, am o mica problema si nu stiu cum sa o fac si apelez la tine ca tu cunosti cel mai bine codul, am descarcat scriptul cu
nrclick si merge super bine dar am o mica dorinta cum pot modifica acest cod
Cod: Selectaţi tot
<?php
$nrclickFile = "nrclick.txt"; // Numele fisierului care stocheaza nr. de clickuri.
$campul = 0;
// Verifica daca preluarea adresei url e pozitiva, in caz afirmativ prelucreaza datele
if(isset($_GET['url'])) {
$url = $_GET['url']; // Preia adresa url din link.
$fisier = fopen($nrclickFile, 'r+b');
flock($fisier, LOCK_EX); // Blocheaza fisierul
// Citeste fisierul de stocare linie cu linie pentru gasirea cimpului cu URL-ul.
while($citeste = fgets($fisier)) {
if(!strcmp($citeste, $url."\n")) { // Compara linia gasita cu url-ul (daca sunt egale 'strcmp'=0)
$reda = ftell($fisier); // Returneaza pozitia curenta a pointer-ului
$nrclick = fgets($fisier); // Preia data (nr.) care se afla pe linia imediat dupa pozitia gasita de 'ftell'
$nrclick = 1 + "$nrclick"; // Mareste nr. de clickuri cu o unitate
fseek($fisier, $reda); // Seteaza noua pozitie a pointerului (de la inceputul fisierului in bytes) la nivelul precizat de 'ftell', pt a adauga in locul corect noua valarea de click-uri
fputs($fisier, "$nrclick"); // 'fputs' este un alia a lui 'fwrite' (scrie noua valoare)
$campul = 1;
}
}
// Daca nu a fost gasit linia cu URL-ul, atunci scrie in fisier un camp cu URL-ul.
if(!$campul) {
fwrite($fisier, $url."\n"); // Scrie url-ul si adauga o noua linie
fputs($fisier, "1"." \n"); // Adauga nr. clickuri 1 in linia imeiat dupa url
}
@flock($fisier, LOCK_UN); // Deblocheaza fisierul
fclose($fisier);
// Redirectioneaza browserul spre url-ul preluat $_GET
header("Location: " . $url);
}
// Functie pentru afisarea numarului de click-uri.
function showclicks($numeurl) {
$nrclick = 0;
global $nrclickFile; // introduc numele fisierului in functie
$fisier = fopen($nrclickFile, 'r'); // Eschide fisierul
while($citeste = fgets($fisier)) { // Parcrge fisierul linie cu linie
if(!strcmp($citeste, $numeurl."\n")) { // Gaseste pointer-ul liniei cu url-ul si-l stabileste la urmatoarea linie
$nrclick = fgets($fisier); // Preia datele Nr. din locul pointer-ului stabilit anterior
break; // Opreste parcurgerea fisierului
}
}
fclose($fisier);
return $nrclick;
}
?>
si
Cod: Selectaţi tot
<?php @include("nrclick.php"); ?>
<a href="nrclick.php?url=download/program.zip">Download</a>
<?php echo showclicks("download/program.zip"); ?>
ca sa nu imi salveze in fisier text ci in bd. te rog ajuta-ma ca am mare nevoie de ea ca problema cu care ma confrunt acum de asta atarna si no imi trebuie ca sa preia din bd. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif
MarPlo
Mesaje:4343
Poate e de folos script-ul / clasa PHP de la pagina
Contoar downloads si accesari
Salveaza in tabel MySQL si afiseaza numar accesari / Downloads fisiere, si data ultimei accesari la fiecare.
trif
Mesaje:500
salut, am facut asa
Cod: Selectaţi tot
$sql = "UPDATE `". $this->tb_name. "` SET (`". $this->tb_cols['urlf']. "`) =('$urlf') WHERE`". $this->tb_cols['nrac']. "`=`". $this->tb_cols['nrac']. "`+1";
dar imi da eroarea
Eroare: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`urlf`) =('../cantari/diverse/diverse.ppt') WHERE`nrac`=`nrac`+1' at line 1
Warning: Cannot modify header information - headers already sent by (output started at nu stiu de ce. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif
MarPlo
Mesaje:4343
Incearca sintaxa de Update asa:
Cod: Selectaţi tot
$sql = "UPDATE `". $this->tb_name. "` SET `". $this->tb_cols['nrac']. "`=(`". $this->tb_cols['nrac']. "`+1) WHERE `". $this->tb_cols['urlf']. "`='$urlf'";
trif
Mesaje:500
salut, multumesc mult de tot, merge super bine. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif
nutzu123
Mesaje:83
Salut,
Scriptul
https://marplo.net/php-mysql/contoar ... sari nu merge. Am introdus corect datele de la mysql si degeaba k nu isi creeaza baza de date. Era mai bine un fisier.sql cu baza de date, am incercat mai de multe ori si nu functioneaza adica nu isi creaza baza de date
MarPlo
Mesaje:4343
Da vreo eroare ceva?
Poti folosi urmatoarea comanda sql pt. crearea tabelului:
Cod: Selectaţi tot
CREATE TABLE `access` (
`urlf` VARCHAR(88) PRIMARY KEY NOT NULL,
`nrac` INT(8) UNSIGNED DEFAULT 1,
`dt` TIMESTAMP
) CHARACTER SET utf8 COLLATE utf8_general_ci
nutzu123
Mesaje:83
Fatal error: Call to a member function getAccess() on a non-object in
Si nu merge nici functia
// verifica daca in $db exista tabelul din $tb_name
// daca nu exista, apeleaza metoda setTable() ca sa creeze tabelul
bine am folosit
Cod: Selectaţi tot
CREATE TABLE `access` (
`urlf` VARCHAR(88) PRIMARY KEY NOT NULL,
`nrac` INT(8) UNSIGNED DEFAULT 1,
`dt` TIMESTAMP
) CHARACTER SET utf8 COLLATE utf8_general_ci
MarPlo
Mesaje:4343
Problema nu e ca nu merge scriptul, lui
trif ii functioneaza. Probabil nu e utilizata clasa cum trebuie.
Ori nu e inclus cum trebuie fisierul cu clasa CountAccess.
Ori methoda clasei getAccess() e apelata inaintea obiectului clasei.
Ca indicatie, daca vrei sa inveti, sunt lectii pe site despre Clase si obiecte in PHP, incepand cu
PHP OOP - Clase si Obiecte, Metoda constructor.
nutzu123
Mesaje:83
Am rezolvat cu totul merge bine scriptul imi contorizeaza corect click-urile in mysql dar am dat peste o noua problema la afisarea click-urilor si in ce dara
Cod: Selectaţi tot
<a href="down.php?urlf=director/$fisier" title="descarca">descarcat</a>
<?php echo $objCA->getAccess('director/$fisier'); ?>
warning division by zero
Daca pun manual numele fisierului descarcat ex:
Cod: Selectaţi tot
<?php echo $objCA->getAccess('director/poza0023.jpg'); ?>
imi merge afisarea click-urilor si data.
MarPlo
Mesaje:4343
Daca $fisier e o variabila PHP a carei valoare vrei sa o adaugi /afisezi intr-un link HTML, trebuie sa folosesti cod PHP pt. afisare:
Cod <?php echo $variabila; ?> HTML
de asemenea, $variabila nu intre ghilimele simple.
In codul tau, mai corect ar fi:
Cod: Selectaţi tot
<?php $thefile = 'director/'. $fisier; ?>
<a href="down.php?urlf=<?php echo $thefile; ?>" title="descarca">descarcat</a>
<?php echo $objCA->getAccess($thefile); ?>
trif
Mesaje:500
salut, cred ca am reusit, nu am stiut cum sa fac cu ob
dar am facut asa simplu si la subiect
Cod: Selectaţi tot
<?php
$sql="SELECT * FROM cantari_ppt ORDER BY id DESC LIMIT 11";
$res=mysql_query($sql);
while($rand=mysql_fetch_array($res)) {
print '<a href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'</a> -- ';
print 'Accesari: '.$rand['nrac'].' ultima in: '.$rand['dt'].' ';
print '<br>';
}
?>
si acum nici nu se mai insereaza in plus nimic. daca era alta varianta puteti sa imi ziceti si mie. va multumesc. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif