Realizarea de statistici dinamice utilizand PHP si MySQL
In urmatoarele randuri veti invata sa faceti un sistem dinamic de imagini pentru un server de SA-MP (si nu numai), folosind PHP si MySQL. De ce avem nevoie? De o baza de date MySQL (cea a serverului) si un loc in care sa gazduim scriptul. Incepem. Creati un fisier db_connect.php, in care veti realiza conexiunea la baza de date
<?php
$host = “localhost”;
$user = “root”;
$password = “root_password”;
$database = “baza_de_date”;
if(!mysql_connect($host, $user, $password)) die('Nu s-a putut realiza conexiunea MySQL!');
mysql_select_db($database);
?>
Odata creat, creati un fisier cu oricare nume, introducand in prima linie:
<?php
include('db_connect.php'); // conexiunea la serverul MySQL
?>
In continuare vom folosi extrage din baza de date doar 3 valori: Username-ul, Level-ul si Banii. Bineinteles, aceste valori sunt doar ca exemplu, va trebui sa inlocuiti dupa cum doriti sa arate scriptul.
<?php
include('db_connect.php'); // conexiunea la serverul MySQL
if(isset($_GET['user']))
$user = mysql_real_escape_string($_GET['user']); // se verifica daca parametrul GET `user` este setat. In caz afirmativ, se va atribui valoarea sa variabilei `$user` si I se va atribui un escape, pentru a preveni injectiile MySQL.
$query = mysql_query(“SELECT `Username`, `Level`, `Moneys` FROM `players` WHERE Username = '”.$user.”' “); // variabila `$query` va pastra interogarea catre MySQL pentru a extrage valorile mentionate
if(mysql_num_rows($query)) // se verifica numarul de randuri returnat de interogarea MySQL. Expresia este echivalenta cu if(mysql_num_rows($query) == true)
{
$result = mysql_fetch_array($query); // se introduc valorile extrase in array-ul `$result`
// Urmatoarele coloane din array le veti modifica in functie de numele ce le este atribuit in baza voastra de date
$user_db = $result['Username'];
$level_db = $result['Level'];
$money_db = $result['Money'];
// Vom folosi in continuare functia imagettftext() si un background negru al imaginii
// Urmatoarele linii de cod sunt in sine generarea de imagine dinamica
header('Content-Type: image/png'); // transmitem interpretorului php sa modifice pagina intr-o imagine. Daca nu ati inteles, veti observa cand veti rula scriptul
$im = imagecreatetruecolor(400, 30); // se creaza imaginea (bineinteles ca poate fi inlocuita cu imaginea voastra)
// culorile folosite in script (`alb` si `negru`)
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $black); // creaza o imagine propriu zisa cu un fundal negru
$text = sprintf(“User: %s, Level: %d, Bani: %d”, $user_db, $level_db, $money_db); // formatam stringul din variabila `$text` cu datele extrase
$font = 'arial.ttf'; // fontul folosit. Adaugati calea catre propriul vostru font. Aveti grija, daca nu indicati calea corecta, imaginea nu se va mai genera.
imagettftext($im, 20, 0, 10, 20, $white, $font, $text); // adaugam textul pe imagine
imagepng($im); // transformam imaginea intr-una PNG
imagedestroy($im); // terminam de modificat imaginea.
} else {
die('Nu s-a putut gasi jucatorul mentionat. El nu exista in baza de date, sau a fost introdus gresit.');
}
?>
Acesta este un punct de plecare, bineinteles ca rezultatul in sine este execrabil, dar il personalizati. Nu am testat majoritatea codului, dar nu vad de ce nu ar merge. Va rog sa imi scrieti daca am gresit undeva, pentru ca, nu am testat tot. Dar nu vad de ce nu ar merge. Daca nu ati inteles, lasati un comentariu.