Cod: Selectaţi tot
$dt= date("Y-m-d H:i:s ");
class CountAccess {
// defineste proprietati pentru numele tabelului si a coloanelor
public $tb_name = 'cantari_ppt';
public $tb_cols = array('urlf'=>'urlf', 'nrac'=>'nrac', 'dt'=>'dt');
...
$sql = "UPDATE `". $this->tb_name. "` SET `". $this->tb_cols['nrac']. "`=(`". $this->tb_cols['nrac']. "`+1), `". $this->tb_cols['dt']. "`=('$dt') WHERE `". $this->tb_cols['urlf']. "`='$urlf'";
Cod: Selectaţi tot
timestamp ---- on update CURRENT_TIMESTAMP ---- CURRENT_TIMESTAMP ---- on update CURRENT_TIMESTAMP
Cod: Selectaţi tot
<?php
// - Clasa CountAccess ( marplo.net )
// inregistreaza si contorizeaza numarul de accesari
$dt = date("Y-m-d H:i:s ");
class CountAccess {
// defineste proprietati pentru numele tabelului si a coloanelor
public $tb_name = 'cantari_ppt';
public $tb_cols = array('urlf'=>'urlf', '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['urlf']. "` 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 $urlf
public function setAccess($urlf) {
$urlf = $this->conn->real_escape_string($urlf); // 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), `". $this->tb_cols['dt']. "`=('$dt') WHERE `". $this->tb_cols['urlf']. "`='$urlf'"; // 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 $urlf
public function getAccess($urlf) {
$urlf = $this->conn->real_escape_string($urlf); // 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['urlf']. "`='$urlf' 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 = 'ialexs';
$db = 'cantari_ppt';
// creaza conexiunea MySQL si o instanta de obiect la clasa CountAccess
$objCA = new CountAccess($server, $user, $pass, $db);
// daca exista $_GET['urlf']
if (isset($_GET['urlf'])) {
$urlf = trim(strip_tags($_GET['urlf'])); // sterge tag-uri si spatii exterioare
// apeleaza metoda setAccess() pt. insert / update numar accesari
$objCA->setAccess($urlf);
// Redirectioneaza browser-ul la adresa din $urlf
header("Location: " . $urlf); exit;
}
// functia returneaza numarul de accesari si data ultimei accesari
function getUrlAc($urlf) {
GLOBAL $objCA;
// apeleaza metoda getAccess() care returneaza un array cu contorul si data inregistrata
$ar_access = $objCA->getAccess($urlf);
// returneaza rezultatul
return 'Accesari: '. $ar_access['nrac']. ' ultima in: <i>'. $ar_access['dt']. '</i>';
}
?>