problema UPDATE coloana TIMESTAMP
Scris: Vin Noi 25, 2011
Salut, am si eu o problema, am codul acesta:
vreau ca sa fac update doar atunci cand ii dau eu sa faca update. pentru ca am avut in urma in bd si asta insemana ca atunci cand faceam o modificare la cantare (nu neaparat sa o deschid ci cand ii schimbam numele) mi se schimba data. pe mine ma intereseaza ca numai atunci cand se descarca sa mi se modifice data nu tot timpul. am aici tot codul:
va uitati sa vedeti cum se modifica ca sa pot face ceea ce vreau eu. va multumesc anticipat. cu stima trif
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>';
}
?>