Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Statystyki Forum w sygnaturce

Założony przez  lumberpack.

Napisałem skrypt pokazujący statystyki forum w sygnaturce dostosowany do forum MyBB i postanowiłem przy okazji podzielić się nim z wami. :)

Najpierw dam pełny kod skryptu, a następnie wytłumaczę co do czego służy ;)

pełny kod:
<?php
// dane konfiguracyjne i połączenie z bazą danych
$host 'localhost';
$user =  'root';
$pass '';
$db 'forum';
$connect mysql_connect($host$user$pass);
mysql_select_db($db);

// pobieranie poszczególnych danych z bazy
$zarejestrowanych mysql_num_rows(mysql_query("SELECT * FROM mybb_users"));
$ostatnia_rejestracja mysql_fetch_array(mysql_query("SELECT * FROM mybb_users ORDER BY uid DESC LIMIT 1"));
$ilosc_tematow mysql_num_rows(mysql_query("SELECT * FROM mybb_threads"));
$ilosc_postow mysql_num_rows(mysql_query("SELECT * FROM mybb_posts"));

// Stwórz PNG z obrazka istniejącego
$img ImageCreateFromPNG("bnf_sig.png");

// Ustawianie koloru (RGB)
$kolor ImageColorAllocate($img,30,48,65);

// Wyświetlanie danych w sygnaturce (za pomocą tekstu)
ImageString($img,2,310,20,$zarejestrowanych,$kolor);
ImageString($img,2,286,47,$ostatnia_rejestracja['username'],$kolor);
ImageString($img,2,465,20,$ilosc_tematow,$kolor);
ImageString($img,2,465,47,$ilosc_postow,$kolor);

// Ostateczne tworzenie obrazka
Header("Content-type: image/png");
ImagePNG($img);

?>

--------------------------------
--------------------------------
Ok, a więc zacznijmy od początku:
$host - adres hosta
$user - nazwa użytkownika mysql
$pass - hasło do bazy danych
$db - nazwa bazy danych na której znajduje się nasze forum

// Stwórz PNG z obrazka istniejącego
$img ImageCreateFromPNG("bnf_sig.png"); 
Tworzenie pliku PNG (obrazu) z już istniejącego obrazka (w moim wypadku jest to bnf_sig.png.
Jeśli chcemy stworzyć np. z pliku gif to zamiast ImageCreateFromPNG robimy ImageCreateFromGIF ;)

// Wyświetlanie danych w sygnaturce (za pomocą tekstu)
ImageString($img,2,310,20,$zarejestrowanych,$kolor);
ImageString($img,2,286,47,$ostatnia_rejestracja['username'],$kolor);
ImageString($img,2,465,20,$ilosc_tematow,$kolor);
ImageString($img,2,465,47,$ilosc_postow,$kolor); 
Wyświetlanie danych w sygnaturce (za pomocą tekstu).
Pierwsza wartość to zmienna do której przypisane jest tworzenie naszego obrazka, druga wartość jest to rozmiar czcionki, trzecia wartość to jest położenie w poziomie, a czwarta w pionie, piąta wartość jest to zmienna odnosząca się do pobierania określonych danych z bazy danych, a czwarta to oczywiście zmienna odnosząca się do koloru czcionki ;)

// Ostateczne tworzenie obrazka
Header("Content-type: image/png");
ImagePNG($img); 
Jest to ostateczne tworzenie obrazka.
Jeśli wcześniej ustawiliście tworzenie obrazka np. w gif odpowiednie zmieńcie wartości. (z png na gif)

Reszty myślę, że nie trzeba tłumaczyć; jakby co to pytać ;)

Przykład sygnaturki:
[Obrazek: syg.php]
lumberpack napisał(a):
$zarejestrowanych mysql_num_rows(mysql_query("SELECT * FROM mybb_users"));
/*...*/
$ilosc_tematow mysql_num_rows(mysql_query("SELECT * FROM mybb_threads"));
$ilosc_postow mysql_num_rows(mysql_query("SELECT * FROM mybb_posts")); 
szybciej jest:
$zarejestrowanych mysql_fetch_array(mysql_query("SELECT count(*) as count FROM mybb_users"));
/*...*/
$ilosc_tematow mysql_fetch_array(mysql_query("SELECT count(*) as count FROM mybb_threads"));
$ilosc_postow mysql_fetch_array(mysql_query("SELECT count(*) as count FROM mybb_posts"));

$zarejestrowanych $zarejestrowanych['count'];
$ilosc_tematow $ilosc_tematow['count'];
$ilosc_postow $ilosc_postow['count']; 

szczegolnie przy pobieraniu liczby postow - gdybyś miał np. 50 000 postów, to musiałyby wszystkie zostać przesłane z mySQL do PHP, włącznie ze swoją treścią (kwestia ~40MB), a w ten sposób przesyłana jest tylko liczba postów (ok. 4 bajty).


Przy okazji, przypominam, że posty w tym dziale mogą zawierać tylko i wyłącznie uzupełnienia do tutoriali lub kolejne tutoriale - inne posty nie będą zatwierdzane przez moderatorów. Pytania do tutoriali powinny być zamieszczane w innych działach.



Użytkownicy przeglądający ten wątek:

1 gości