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]
Podziękowali: MaciejB
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.

Skocz do:

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

1 gości