Skocz do zawartości


Zdjęcie

Skript + MySQL (np. pieniądze gracza na profilu forumowym)


  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 Capa

Capa

    Nowy

  • Użytkownik
  • 45 postów

Napisano 23 May 2014 - 13:31

Cześć,

 

Na wstępie chciałbym zaznaczyć, że nie jest to gotowiec a jedynie szablon, który można modyfikować wedle własnych upodobań.

____

 

Poniżej przedstawiam Wam łatwy sposób na połączenie Skripta z bazą danych.

 

Przepraszam za tytuł posta, ale nie miałem pojęcia jak go nazwać, nie wiedziałem też czy wybieram dobry dział, ale skoro bazuje na samym skript'cie + php to dział pluginy odpada.

 

Przykłady:

- lista najbogatszych graczy na stronie

- nazwa gildii, ilość kasy jaką posiada gracz pod avatarem na zew. forum

 

 

Mamy zewnętrzne forum, np. MyBB i chcemy aby pod avatarem czy też pod ilością postów wyświetlały się dodatkowe rzeczy. 

Opiszę Wam jak to zrobić na przykładzie wyświetlania ilości wirtualnej waluty jaką gracz posiada.

 

Do tego oczywiście będzie wymagana integracja MyBB z pluginem obsługującym konta w grze (np. AuthME, czy jakikolwiek inny, przykładu nie przytoczę, bo niestety innych nie używałem).

 

 

Do rzeczy.

 

Wymagania:

1. Serwer z obsługą PHP/MySQL (może być zewnętrzny)

2. Skript+ (poprawcie mnie proszę jeśli się mylę, ale wydaje mi się, że odczyt url nie jest w standardowej wersji możliwy).

3. MyBB (opcjonalnie)

 

Ja u siebie skonfigurowałem AuthME tak, żeby współpracowało z MyBB. 

 

1.Do tabeli mybb_users dodaj kolumnę money jako integer.

2. Plik skript.php załączony poniżej proszę zapisać i umieścić w katalogu WWW

 

 

<?php/*
Ustawienia bazy danych
*/
$db_host = 'localhost'; //adres bazy danych, localhost = lokalny
$db_port = '3306'; //port, domyślnie 3306
$db_user = ''; //nazwa użytkownika bazy
$db_pass = ''; //hasło użytkownika bazy
$db_name = ''; //nazwa bazy danych
$db_tablename = ''; //nazwa tabeli


/*
Połączenie z bazą danych
*/
$info = $_GET['info'];
$podziel = explode("$",$info);
$player_name = $podziel[0];
$player_money = $podziel[1];


if (!empty($_GET['info']))
{
$connect = mysql_connect("$db_host:$db_port", $db_user, $db_pass); //otwieramy połączenie do bazy danych
mysql_select_db($db_name); // wybieramy konkretną baze danych




$update_money = "UPDATE $db_tablename SET money = '$player_money' WHERE username='$player_name'";
$wykonaj = mysql_query($update_money);
if($wykonaj === FALSE){die(mysql_error());}  //tylko do debugowania
mysql_close($connect); //zamykamy połączenie


}


else


echo "error";
?>

 

 
 

Jako, że player's money zwraca nam liczbę poprzedzoną znakiem $, użyłem funkcji explode i zamieniłem je na dwie zmienne.

 

Sugerowałbym operować na jednej zmiennej(GET) dodając jakiś znak, który będzie potem pomocny do parsowania GET'a i rozbicia go na pozostałe zmienne. 

 

 

3. Skript:

 

 

set {_x} to text from url "http://naszastrona.pl/skript.php?info=%player%%player's money%"

Jeśli chcemy, żeby stan konta aktualizował się po wylogowaniu to użyjemy:

 

on disconnect:
    set {_x} to text from url "http://naszastrona.pl/skript.php?info=%player%%player's money%"

 

 

Każdy krok zakomentowałem (chyba), więc jakby pojawiły się jakieś pytania to śmiało.

Chciałbym tylko raz jeszcze przypomnieć, że to nie jest gotowiec, celem też nie było nauczyć kogoś podstaw PHP czy Skriptu. Na tym możecie bazować tworząc własne pomysły :)


  • KoORNEL, astranaar i KuzynProcesor lubią to

craftportal

Craftserve to największy i najlepszy polski hosting serwerów Minecraft, jest solidny i tani więc go polecam

#2 Gość_Michaukso_*

Gość_Michaukso_*
  • Gość

Napisano 23 May 2014 - 13:44

Poniżej przedstawiam Wam łatwy sposób na połączenie Skripta z bazą danych.

 

To nie łączy skripta z bazą.

 

Edit: ale sposób fajny, może wykorzystam


  • Capa lubi to

#3 Capa

Capa

    Nowy

  • Użytkownik
  • 45 postów

Napisano 23 May 2014 - 13:56

To nie łączy skripta z bazą.

 

Nie w tym sensie, o którym Ty myślisz :)

 

Dzięki za komentarz.

 

 

Jeśli ktoś ma jakieś pytania, albo chciałby wykorzystać ten sposób, ale nie może sobie poradzić to śmiało piszcie, postaram się Wam pomóc, albo zrobić gotowce.



#4 Gość_Michaukso_*

Gość_Michaukso_*
  • Gość

Napisano 23 May 2014 - 17:57

Tera pytanie...

 

Czy da się zrobić aby pokazywało zmienną np. w skripcie zmienna {ranga.%player%} jest równa VIP, a na np. www.stronaserwera.pl/ranga.php?nick=NICKGRACZA pokazuje wartość zmiennej z skriptu czyli: pokazuje zmienną ze skriptu na stronie, ale zamiast %player% jest wartość z GET czyli $_GET('nick')



#5 Capa

Capa

    Nowy

  • Użytkownik
  • 45 postów

Napisano 23 May 2014 - 18:22

Nie bardzo zrozumiałem. Chcesz aby PHP otrzymało informację od skriptu o nicku gracza i jego randze? 



#6 Gość_Michaukso_*

Gość_Michaukso_*
  • Gość

Napisano 24 May 2014 - 17:35

Nie bardzo zrozumiałem. Chcesz aby PHP otrzymało informację od skriptu o nicku gracza i jego randze? 

Chcę aby np. na www.strona.pl/zmienna.php pokazało zawartość zmiennej w skript.

 

Przykład:

Zmienna w skript {dni.do.eventu} jest równa 3

 

|

\/

 

Na stronie www.strona.pl/dnidoeventu.php pokazuje wartość zmiennej z skriptu {dni.do.eventu} i wyświetla 3



#7 Capa

Capa

    Nowy

  • Użytkownik
  • 45 postów

Napisano 24 May 2014 - 19:46

Da sie.

 

Skript przesyła zmienną (np. co 24h w tym wypadku) do skryptu PHP, który wrzuca to do bazy MySQL, potem skrypt pobiera z bazy i wypluwa na stronie :)

 

Dlatego można bardzo wiele ciekawych rzeczy robić. Np. panel logowania graczy (jeśli masz np. authme z MySQL), tworzyć aukcje na www itp. Do tego permissions, skripty i zmienne.



#8 Gość_Michaukso_*

Gość_Michaukso_*
  • Gość

Napisano 14 June 2014 - 11:57

Da sie.

Możesz zademonstrować?



#9 Capa

Capa

    Nowy

  • Użytkownik
  • 45 postów

Napisano 14 August 2014 - 12:04

Wybacz, trochę mnie nie było. Jeśli nadal jesteś zainteresowany przykładem to daj znać, postaram się jakiś zlepić. 

 

 

Zmienna w skript {dni.do.eventu} jest równa 3 >> Na stronie www.strona.pl/dnidoeventu.php pokazuje wartość zmiennej z skriptu {dni.do.eventu} i wyświetla 3

 

 

Dni do eventu:

 

skript:

 

(zdarzenie) np. co 24h 


 

set {_x} to text from url "http://naszastrona.pl/skript.php?info={dni.do.eventu}"

Tłumaczenie: W praktyce skript niczego nie pobiera, ale za to przesyła zmienną {dni.do.eventu} do serwera w postaci zmiennej info.

 

By zobaczyć linki musisz się zalogować lub zarejestrować

 

Czyli teraz zmienna info = 3.

 

 

PHP (skript handler)

 

 

 

 

<?php/*
Ustawienia bazy danych
*/
$db_host = 'localhost'; //adres bazy danych, localhost = lokalny
$db_port = '3306'; //port, domyślnie 3306
$db_user = ''; //nazwa użytkownika bazy
$db_pass = ''; //hasło użytkownika bazy
$db_name = ''; //nazwa bazy danych
$db_tablename = ''; //nazwa tabeli




/*
Połączenie z bazą danych
*/
$info = $_GET['info'];




if (!empty($_GET['info']))
{
$connect = mysql_connect("$db_host:$db_port", $db_user, $db_pass); //otwieramy połączenie do bazy danych
mysql_select_db($db_name); // wybieramy konkretną baze danych








$update_event= "UPDATE $db_tablename SET events= '$info' ";
$wykonaj = mysql_query($update_event);
if($wykonaj === FALSE){die(mysql_error());}  //tylko do debugowania
mysql_close($connect); //zamykamy połączenie




}




else




echo "error";
?>

 

Tłumaczenie: Powyższy skrypt przechwytuje zmienną info = 3 i wrzuca ją do bazy danych do pola events.

 

 

PHP (dni do eventu)

 

Tutaj tylko pobieramy dane z bazy danych.

 

<?php$zapytanie = "SELECT * FROM $db_tablename";
$idzapytania = mysql_query($zapytanie);
if($idzapytania === FALSE) {
    die(mysql_error());
}
if(mysql_num_rows($idzapytania) > 0) {
while($wiersz = mysql_fetch_array($idzapytania))
{
echo $wiersz['events'];
}
}


?>

Tłumaczenie: Powyższy skrypt pobiera z bazy danych wartość pola events. 

 

Pisane z ręki, mogą być gdzieś małe błędy ;)
 
 
edit: dodałem "tłumaczenie"
 
W skrócie > Skript ustawia wartosc info na 3 (bo taką wartość ma {dni.do.eventu}, następnie PHP pobiera tą wartość, wrzuca do bazy a kolejny skrypt wypluwa tą wartość na stronie internetowej :)
 
Dzięki tej prostej metodzie można zrobić np:
 
- Statystyki WWW (najbogatszy, najwięcej zabitych, najwięcej interakcji, najwięcej wydobytego diamentu, ilość logowań,)
- Kupowanie działek online i jako takie zarządzanie nimi
- rangi
- zarządzanie uprawnieniami online
 
Możliwości jest sporo

Użytkownik Capa edytował ten post 14 August 2014 - 12:20


#10 kryxkan

kryxkan

    Bywalec

  • Użytkownik+
  • 144 postów
  • kryxkan

Napisano 19 August 2014 - 19:07

a mógłbyś mi napisać mini tutek na PW?
\\edit: nie było pytania. To jest tutek.

Użytkownik kryxkan edytował ten post 19 August 2014 - 19:19