Contoar downloads, nr click-uri

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.

Contoar downloads, nr click-uri

» 02 Mai, 2011

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); ?>
MarPlo
Administratorul site-ului
 
Mesaje: 1583
Membru din: 13 Mai, 2008


Contoar downloads, nr click-uri   » 23 Mai, 2011

salut, cred ca am reusit, nu am stiut cum sa fac cu ob
Cod: Selectaţi tot
$objCA->getAccess

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
http://cantaricrestine.ro ---> cu stima Trif
Avatar utilizator
trif
 
Mesaje: 376
Membru din: 23 Feb, 2010
Localitate: Oradea


Contoar downloads, nr click-uri   » 22 Aug, 2011

salut, am si eu o problema, folosesc contorul acela de dw si nr click-uri dar eu nu mai vreau sa dw ci doar sa ma trimita la un link care il am eu in bd. de exemplu: am in bd data asta: google.ro si yahoo.com si eu cand dau click pe una din ele sa imi inregistreze nr click. eu am modificat un pic bd si este asa:
Cod: Selectaţi tot
id ---- titlu ---- descriere ---- url ---- nrac ---- dt
si preiau cu
Cod: Selectaţi tot
<a class="link" href="class.CountAccess.php?url='.$rand['url'].'">'.$rand['titlu'].'<span><b>Descriere:</b><br> '.$rand['descriere'].'<br>  <td> Nr. accesari: <td>'.$rand['nrac'].'</td></span></a>
in class.CountAccess.php am
Cod: Selectaţi tot
<?php
// - Clasa CountAccess ( www.marplo.net )
// inregistreaza si contorizeaza numarul de accesari
class CountAccess {
  // defineste proprietati pentru numele tabelului si a coloanelor
  public $tb_name = 'motor_de_cautare';
  public $tb_cols = array('url'=>'url', 'nrac'=>'nrac', 'dt'=>'dt');
  // proprietate pt. retinerea conexiunii la MySQL
  protected $conn;
  // Constructor
   public function __construct($server, $user, $pass, $db) {
    // creaza conexiunea la MySQL (o retine in proprietatea $conn)
    $this->conn = new mysqli($server, $user, $pass, $db);
    if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit; }
    // verifica daca in $db exista tabelul din $tb_name
    // daca nu exista, apeleaza metoda setTable() ca sa creeze tabelul
    $Tables_in_db = 'Tables_in_'.$db;
    if($result=$this->conn->query("SHOW TABLES IN $db WHERE `$Tables_in_db` = '$this->tb_name'")) {
      if(mysqli_num_rows($result)<=0) {
        $this->setTable();
        $result->close();
      }
    }
   }
  // metoda pt. crearea tabelului
   private function setTable() {
      // sql query pt. CREATE TABLE
    $sql = "CREATE TABLE `$this->tb_name` (
     `". $this->tb_cols['url']. "`  VARCHAR(88) PRIMARY KEY NOT NULL,
     `". $this->tb_cols['nrac']. "` INT(8) UNSIGNED DEFAULT 1,
     `". $this->tb_cols['dt']. "` TIMESTAMP
    ) CHARACTER SET utf8 COLLATE utf8_general_ci";
    // executa $sql pt. a crea tabelul, in caz de esec returneaza eroarea
    if (!$this->conn->query($sql) === TRUE) {
      echo 'Eroare creare tabel: '. $this->conn->error;
    }
   }
  // metoda pt. insert / update contor si data a valorii din $url
   public function setAccess($url) {
    $url = $this->conn->real_escape_string($url);       // filtrare caractere speciale pentru a fi utilizate in interogare SQL
    // sql query pt. INSERT / UPDATE
$sql = "UPDATE `". $this->tb_name. "`  SET `". $this->tb_cols['nrac']. "`=(`". $this->tb_cols['nrac']. "`+1) WHERE `". $this->tb_cols['url']. "`='$url'";
    // transmite $sql query la serverul MySQL, in caz de esec returneaza eroarea
    if (!$this->conn->query($sql) === TRUE) {
      echo 'Eroare: '. $this->conn->error;
    }
  }
  // metoda pt. select numar de accesari si data ultimei accesari a valorii din $url
   public function getAccess($url) {
    $url = $this->conn->real_escape_string($url);       // filtrare caractere speciale pentru a fi utilizate in interogare SQL
    // sql query pt. SELECT
    $sql = "SELECT `". $this->tb_cols['nrac']. "`, DATE_FORMAT(`". $this->tb_cols['dt']. "`, '%d-%m-%Y %H:%i') AS dt FROM `". $this->tb_name. "` WHERE `". $this->tb_cols['url']. "`='$url' LIMIT 1";
    // efectueaza interogarea si retine rezultatul
    $result = $this->conn->query($sql);
    // daca $result contine cel putin un rand
    if ($result->num_rows > 0) {
      // adauga numar de accesari si data intr-un array
      while($row = $result->fetch_assoc()) {
        $re['nrac'] = $row['nrac'];
        $re['dt'] = $row['dt'];
      }
    }
    else {
      $re['nrac'] = 0;
      $re['dt'] = 0;
    }
    // inchide $result, pentru a elibera memoria
    $result->close();
    return $re;          // returneazae Array-ul $re
  }
}
      /* Utilizare clasa CountAccess */
// datele pt. conectare la baza de date mysql (adresa_server, utilizator, parola si nume_baza_date)
$server = 'localhost';
$user = 'root';
$pass = '';
$db = 'motor_de_cautare';
// creaza conexiunea MySQL si o instanta de obiect la clasa CountAccess
$objCA = new CountAccess($server, $user, $pass, $db);
// daca exista $_GET['url']
if (isset($_GET['url'])) {
  $url = trim(strip_tags($_GET['url']));        // sterge tag-uri si spatii exterioare
  // apeleaza metoda setAccess() pt. insert / update numar accesari
  $objCA->setAccess($url);
  // Redirectioneaza browser-ul la adresa din $url
  header("Location: " . $url); exit;
}
// functia returneaza numarul de accesari si data ultimei accesari
function getUrlAc($url) {
  GLOBAL $objCA;
  // apeleaza metoda getAccess() care returneaza un array cu contorul si data inregistrata
  $ar_access = $objCA->getAccess($url);
  // returneaza rezultatul
  return 'Accesari: '. $ar_access['nrac']. ' ultima in: <i>'. $ar_access['dt']. '</i>';
}
?>
si nu stiu de ce cand dau pe link nu imi creste adica nu imi face nici un update chit ca nu imi da nici o eroare ci nu vrea sa faca nimic. nu stiu ce sa ii fac. te uiti marplo u peste ca sti mai bine cum este gandit clasa si sa imi zici ce trebuie sa fac in situatia asta sau daca sti un alt cod de contorizare doar pt link-uri care te trimit la alta pagini cum este de exemplu:
Cod: Selectaţi tot
google    nr acc: 2
yahoo    nr acc: 0
si tot asa. multumesc anticipat. cu stima trif
http://cantaricrestine.ro ---> cu stima Trif
Avatar utilizator
trif
 
Mesaje: 376
Membru din: 23 Feb, 2010
Localitate: Oradea


Contoar downloads, nr click-uri   » 23 Aug, 2011

Salut
Incearca varianta aceasta:

Cod: Selectaţi tot
<?php
// - Clasa CountAccess ( www.marplo.net )
// inregistreaza si contorizeaza numarul de accesari
class CountAccess {
  // defineste proprietati pentru numele tabelului si a coloanelor
  public $tb_name = 'motor_de_cautare';
  public $tb_cols = array('id'=>'id', 'titlu'=>'titlu', 'url'=>'url', 'nrac'=>'nrac', 'dt'=>'dt');
  // proprietate pt. retinerea conexiunii la MySQL
  protected $conn;
  // Constructor
   public function __construct($server, $user, $pass, $db) {
    // creaza conexiunea la MySQL (o retine in proprietatea $conn)
    $this->conn = new mysqli($server, $user, $pass, $db);
    if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit; }
   }

  // metoda pt. update contor si data a valorii din $url
   public function setAccess($url) {
    $url = $this->conn->real_escape_string($url);       // filtrare caractere speciale pentru a fi utilizate in interogare SQL
    // sql query pt. UPDATE
$sql = "UPDATE `". $this->tb_name. "` SET `". $this->tb_cols['nrac']. "`=(`". $this->tb_cols['nrac']. "`+1), `". $this->tb_cols['dt']. "`=NOW() WHERE `". $this->tb_cols['url']. "`='$url'";
    // transmite $sql query la serverul MySQL, in caz de esec returneaza eroarea
    if (!$this->conn->query($sql) === TRUE) {
      echo 'Eroare: '. $this->conn->error;
    }
  }
  // metoda pt. select numar de accesari si data ultimei accesari a valorii din $url
   public function getAccess($url) {
    $url = $this->conn->real_escape_string($url);       // filtrare caractere speciale pentru a fi utilizate in interogare SQL
    // sql query pt. SELECT
    $sql = "SELECT `". $this->tb_cols['nrac']. "`, DATE_FORMAT(`". $this->tb_cols['dt']. "`, '%d-%m-%Y %H:%i') AS dt FROM `". $this->tb_name. "` WHERE `". $this->tb_cols['url']. "`='$url' LIMIT 1";
    // efectueaza interogarea si retine rezultatul
    $result = $this->conn->query($sql);
    // daca $result contine cel putin un rand
    if ($result->num_rows > 0) {
      // adauga numar de accesari si data intr-un array
      while($row = $result->fetch_assoc()) {
        $re['nrac'] = $row['nrac'];
        $re['dt'] = $row['dt'];
      }
    }
    else {
      $re['nrac'] = 0;
      $re['dt'] = 0;
    }
    // inchide $result, pentru a elibera memoria
    $result->close();
    return $re;          // returneazae Array-ul $re
  }
}
      /* Utilizare clasa CountAccess */
// datele pt. conectare la baza de date mysql (adresa_server, utilizator, parola si nume_baza_date)
$server = 'localhost';
$user = 'root';
$pass = '';
$db = 'motor_de_cautare';
// creaza conexiunea MySQL si o instanta de obiect la clasa CountAccess
$objCA = new CountAccess($server, $user, $pass, $db);

// pentru test, poate fi sters
$_GET['url'] = isset($_GET['url']) ? $_GET['url'] : urlencode('http://localhost/index.php');


// daca exista $_GET['url']
if (isset($_GET['url'])) {
  $url = trim(strip_tags(urldecode($_GET['url'])));        // sterge tag-uri si spatii exterioare
  // apeleaza metoda setAccess() pt. insert / update numar accesari
  $objCA->setAccess($url);
  // Redirectioneaza browser-ul la adresa din $url
  //header("Location: " . $url); exit;       // redirect si exit rezulta in neexecutare cod de mai jos
}
// functia returneaza numarul de accesari si data ultimei accesari
function getUrlAc($url) {
  GLOBAL $objCA;
  // apeleaza metoda getAccess() care returneaza un array cu contorul si data inregistrata
  $ar_access = $objCA->getAccess($url);
  // returneaza rezultatul
  return 'Accesari: '. $ar_access['nrac']. ' ultima in: <i>'. $ar_access['dt']. '</i>';
}

echo getUrlAc($url);            // Afiseaza nr. accesari si data
?>

- E testat si functioneaza, dar trebuie adaptat la ce ai.

Precizari:
Cand se adauga o adresa URL in adresa de link, trebuie aplicata functia urlencode() , iar la preluare $url se aplica decodarea cu urldecode() , ar veni asa:

Cod: Selectaţi tot
<a class="link" href="class.CountAccess.php?url='.urlencode($rand['url']).'">'.$rand['titlu'].'<span><b>Descriere:</b><br> '.$rand['descriere'].'<br>  <td> Nr. accesari: <td>'.$rand['nrac'].'</td></span></a>

Daca aplici redirect (cu header() ), se executa codul clasei, face update, dar cand redirectioneaza nu mai e folosita clasa pt. preluare nr. accesari, decat daca o incluzi si in fisierul unde duce redirectul.
MarPlo
Administratorul site-ului
 
Mesaje: 1583
Membru din: 13 Mai, 2008


Contoar downloads, nr click-uri   » 23 Aug, 2011

salut, merge codul foarte bine dar este o mica problema ca eu vreau ca nu sa ma duca la o pagina unde sa imi arate nr de accesari si data accesarii ci eu vreau ca sa mi se duca la pagina la care este link-ul adica daca dau click pe google.ro sa mi se duca pe google.ro dar sa mi se inregistreze ca s-a dat click pe link. am incercat sa tot modific acest cod dar nu m-am prins. ma ajuti te rog frumos si cu asta. multumesc anticipat, cu stima trif
http://cantaricrestine.ro ---> cu stima Trif
Avatar utilizator
trif
 
Mesaje: 376
Membru din: 23 Feb, 2010
Localitate: Oradea


Contoar downloads, nr click-uri   » 23 Aug, 2011

Foloseste acel redirect cu header(), e in cod, dar cu 2 slash-uri in fata "//" (dupa $objCA->setAccess($url);), sterge cele doua slash-uri.
MarPlo
Administratorul site-ului
 
Mesaje: 1583
Membru din: 13 Mai, 2008


Contoar downloads, nr click-uri   » 23 Aug, 2011

merge, multumesc frumos, cu stima trif
http://cantaricrestine.ro ---> cu stima Trif
Avatar utilizator
trif
 
Mesaje: 376
Membru din: 23 Feb, 2010
Localitate: Oradea


  •  
Daca nu ati gasit raspunsul aici, cautati si pe net:   Contoar downloads, nr click-uri .
Pub
 
Mesaje: 1
Membru din: 21 Dec, 2010


Anterior

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator

Cursuri / Tutoriale


cron