Home | Parola | Flash | Php MySQL | Contact | Link |
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"]?> </div></td>
<td><div align="center"><?php echo $row["IP"]?> </div></td>
<td><div align="center"><?php echo $row["count"]?> </div></td>
<td><div align="center"><?php echo $row["data_inr"]?> </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.