Cum sa faci un contor in php ?

Avem la dispozitie php, mysql si avem nevoie sa memoram de la o sesiune la alta un numar, deci voi creea un tabel cu o coloana si un singur element!!! La initializarea paginii de inceput a site-ului voi citi acea valoare o voi incrementa cu o unitate si o voi salva in acel tabel peste elementul initial si, bineinteles voi afisa valoarea in pagina de web.

Deci, la treaba!

Definim mai intai o conexiune la baza de date:

$user="user"; // inlocuiti "user" cu numele utilizatorului dvs
$host="localhost"; // inlocuiti "localhost" cu numele serverului dvs - informatie obtinuta de la furnizorul serviciului
$pass="parola"; // inlocuiti "parola" cu parola dvs
$link = mysql_pconnect($host, $user ,$pass)or die("Eroare de conexiune la server");

apoi ne legam la baza de date existenta
$db = mysql_select_db("database", $link) or die("eroare la selectarea bazei de date");
presupunand ca tabelul cu o inregistrare este "count"

id_count count
1
365


$sql = 'SELECT * FROM `count` WHERE `id_count` = 1';
$result = mysql_query($sql, $link) or die('Query failed: ' . mysql_error());


executam un guery pentru a afla continutul tabelului

$line = mysql_fetch_array($result, MYSQL_ASSOC);
$count = $line['count'];
$count ++;

In acest moment am obtinut valoare acelui contor incrementata si o putem afisa in pagina de web si sa o salvam in tabel. deci golim rezultatul din query-ul de mai sus:


mysql_free_result($result);
si executam un nou query de aceasta data un UPDATE :
$sql = "UPDATE `count` SET `count` = ".$count." WHERE `id_count` = 1";
$result = mysql_query($sql, $link) or die('Query failed: ' . mysql_error());
mysql_free_result($result);


in final inchidem conexiunea


mysql_close($link);

Nu ne mai ramane decat sa afisam in pagina de web numarul obtinut.

365

O varainta a acestui contor este sa memoram doar IP -uri unice si atunci vom folosi un tabel cu inregistrari de IP-uri

id_ip IP Numar de vizite Data inregistrarii
Ultima logare
1
216.239.57.99
1
2006-05-16 10:20:25 
2006-05-18 22:21:25
2
216.109.112.135
2
2006-05-17 22:12:19 
2006-05-18 22:22:12
3
207.68.172.246
3
2006-05-18 06:20:55 
2006-05-18 22:23:03

$user="user_name";
$host="host_mysql";
$pass="parola_mysql";
$link = mysql_pconnect($host, $user ,$pass)or die("Eroare de conexiune la server");
$db = mysql_select_db("baza_de_date ", $link) or die("Eroare la selectarea bazei de date");

conexiune la baza de date


$ip = getenv ("REMOTE_ADDR");

se citeste IP-ul utilizatorului, si se cauta in tabel daca mai exista stocat anterior


$sql = "SELECT * FROM `count` WHERE `IP` = '".$ip."'";
$result = mysql_query($sql, $link) or die('Query failed: ' . mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows==1)
{//s-a gasit o singura inregistrare

s-a gasit o inregistrare si se va actualiza in tabel la acea inregistrare numarul de vizite si data ultimei vizite


$line = mysql_fetch_array($result, MYSQL_ASSOC);
$count = $line['count'];
$count++;
print("IP = $ip vizita nr $count.");
mysql_free_result($result);
$sql = "UPDATE `count` SET `count` = ".$count.", `data_ult`= NOW() WHERE `IP` = '".$ip."'";
$result = mysql_query($sql, $link) or die('Query failed: ' . mysql_error());
}
else if($num_rows==0)
{

nu s-a gasit nici o inregistrare si trebuie introdusa o inregistrare noua cu valorile noi aflate : IP si data inregistrarii


print("IP vizitator = $ip la prima vizita. Bun venit!");
mysql_free_result($result);
$sql = "INSERT INTO `count` ( `IP` , `count` , `data_inr`) VALUES ('".$ip."', '1', NOW() ); ";
$result = mysql_query($sql, $link) or die('Query failed: ' . mysql_error());
}
mysql_free_result($result);
mysql_close($link);

ne mai trebuie doar un mod de afisare a inregistrarilor din tabela obtinuta:

<body>
<?php
$user="user_name";
$host="host_mysql";
$pass="parola_mysql";
$link = mysql_pconnect($host, $user ,$pass)or die("Eroare de conexiune la server");
$db = mysql_select_db("baza_de_date ", $link) or die("Eroare la selectarea bazei de date");
$sql = "SELECT * FROM `count` WHERE 1";
$result = mysql_query($sql, $link) or die('Query failed: ' . mysql_error());
$num_rows = mysql_num_rows($result);
?>
<p class="title">Vizitatori diferiti pe site <?php echo $num_rows ?></p>
<p class="navLink"><a href="/admin/contor.php">Refresh</a> | <a href="/index.php">Home</a>
</p>
<table width="775" border="2" cellpadding="1" cellspacing="1" bordercolor="#666666" bgcolor="#CCCCCC">
<tr bordercolor="#000000" class="subtitle">
<th width="45" scope="col"><div align="center">Nr crt</div></th>
<th width="220" scope="col"><div align="center">IP Vizitator</div></th>
<th width="160" scope="col">Numar de vizite</th>
<th width="160" scope="col">Data inregistrarii </th>
<th width="160" scope="col"><div align="center">Ultima logare </div></th>
</tr>
<?php
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<tr bordercolor="#000000" class="dingbat">
<td><div align="center"><?php echo $row["id_count"]?>&nbsp;</div></td>
<td><div align="center"><?php echo $row["IP"]?>&nbsp;</div></td>
<td><div align="center"><?php echo $row["count"]?>&nbsp;</div></td>
<td><div align="center"><?php echo $row["data_inr"]?>&nbsp;</div></td>
<td><div align="center"><?php echo $row["data_ult"]?></div></td>
</tr>
<?php
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>

Spor la treaba.