SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Filterscripts > Includes

Reply
 
Thread Tools Display Modes
Old 11/05/2016, 04:16 PM   #1
Max_Andolini
Huge Clucker
 
Max_Andolini's Avatar
 
Join Date: Oct 2013
Posts: 328
Reputation: 37
Default Easy MySQL - Simplifying the usage of MySQL queries!

Easy - MySQL [V3.5]


Originally, created by ThePhenix (ThreeKingz), currently maintaining and developing this include.

Old thread:


Overview:

This include allows you to create and manage several MySQL queries in a very simplified way, it means that you won't require to write queries on your own for the most part.


Login/Register example:


PHP Code:
#include <a_samp>
#include <easy-mysql>

/*
 *  Simple register/login system using easy_mysql.inc!
*/

#define mysql_host    "localhost"
#define mysql_user    "root"
#define mysql_db        "server"
#define mysql_pass         ""
#define mysql_debugging_enabled             (true)
#define SQL_PLAYERS_TABLE                    "players"
#define DIALOG_LOGIN 0
#define DIALOG_REGISTER 1

enum p_info
{
    
p_id,
    
p_name[24],
    
p_password[64],
    
p_score,
    
Float:p_posx,
    
Float:p_posy,
    
Float:p_posz,
    
p_loggedin
};
new 
UserInfo[MAX_PLAYERS][p_info];
    
stock ret_pName(playerid)
{
    new 
name[24];
    
GetPlayerName(playeridnamesizeof(name));
    return 
name;
}


#define IsPlayerRegistered(%0)    (SQL::RowExistsEx(SQL_PLAYERS_TABLE, "p_name", ret_pName(%0)))


main()
{
    
}
public 
OnGameModeInit()
{
    
//Connecting to the MySQL database, default connection handle.
    
SQL::Connect(mysql_hostmysql_usermysql_passmysql_db);
    
//Checking if the table 'players' exists
    
    //Checking if the table 'players' exists
    
if(!SQL::ExistsTable(SQL_PLAYERS_TABLE))
    {
        
//If not, then create a table called 'players'.
        
new handle SQL::Open(SQL::CREATESQL_PLAYERS_TABLE); //Opening a valid handle to create a table called 'players'
        
SQL::AddTableColumn(handle"p_id"SQL_TYPE_INT11true); //Setting auto-increment for this field.
        
SQL::AddTableColumn(handle"p_name"SQL_TYPE_VCHAR24);
        
SQL::AddTableColumn(handle"p_password"SQL_TYPE_VCHAR64);
        
SQL::AddTableColumn(handle"p_score"SQL_TYPE_INT);
        
SQL::AddTableColumn(handle"p_posx"SQL_TYPE_FLOAT);
        
SQL::AddTableColumn(handle"p_posy"SQL_TYPE_FLOAT);
        
SQL::AddTableColumn(handle"p_posz"SQL_TYPE_FLOAT);
        
SQL::Close(handle);//Closing the previous opened handle.
    
}
    return 
1;
}

public 
OnPlayerConnect(playerid)
{
    
UserInfo[playerid][p_loggedin] = 0UserInfo[playerid][p_score] = 0;  UserInfo[playerid][p_posx] = 1958.3783;
    
UserInfo[playerid][p_posy] = 1343.1572UserInfo[playerid][p_posz] = 15.3746


    if(
SQL::RowExistsEx(SQL_PLAYERS_TABLE"p_name"ret_pName(playerid))) //Check if the name is registered in the database
    
{
        
//Get the player password and unique ID.
        
new handle SQL::OpenEx(SQL::READ"players""p_name"ret_pName(playerid));
        
SQL::ReadString(handle"p_password"UserInfo[playerid][p_password], 64);
        
SQL::ReadInt(handle"p_id"UserInfo[playerid][p_id]);
        
SQL::Close(handle);
        
//Show the login dialog
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"{0080FF}Login""Please input your password below to log in.""Login""Exit");
    }
    else
    {
        
//If not registered, then show the register DIALOG.
        
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"{0080FF}Register""Please input a password below to register in.""Login""Exit");
    }
    return 
1;
}

public 
OnPlayerSpawn(playerid)
{
    
SetPlayerPos(playeridUserInfo[playerid][p_posx], UserInfo[playerid][p_posy], UserInfo[playerid][p_posz]);
    return 
1;
}

public 
OnPlayerDisconnect(playeridreason)
{
    if(
UserInfo[playerid][p_loggedin] == 1)
    {
        
//Save the player data.
        
GetPlayerPos(playeridUserInfo[playerid][p_posx], UserInfo[playerid][p_posy], UserInfo[playerid][p_posz]);
        new 
handle SQL::Open(SQL::UPDATESQL_PLAYERS_TABLE"p_id"UserInfo[playerid][p_id]); //update WHERE p_id = UserInfo[playerid][p_id]
        
SQL::WriteInt(handle"p_score"GetPlayerScore(playerid));
        
SQL::WriteFloat(handle"p_posx"UserInfo[playerid][p_posx]);
        
SQL::WriteFloat(handle"p_posy"UserInfo[playerid][p_posy]);
        
SQL::WriteFloat(handle"p_posz"UserInfo[playerid][p_posz]);
        
SQL::Close(handle);
    }
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
        case 
DIALOG_REGISTER:
        {
            if(!
response) return Kick(playerid);
            if(
strlen(inputtext) < 5)
            {
                
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"{0080FF}Register""Please input a password below to register in.""Login""Exit");
                return 
1;
            }
            
SHA256_PassHash(inputtext""UserInfo[playerid][p_password], 64);
            new 
handle SQL::Open(SQL::INSERTSQL_PLAYERS_TABLE);
            
SQL::ToggleAutoIncrement(handletrue);//Toggles auto increment, SQL::Close will return cache_insert_id();
            
SQL::WriteString(handle"p_name"ret_pName(playerid));
            
SQL::WriteString(handle"p_password"UserInfo[playerid][p_password]);
            
SQL::WriteInt(handle"p_score"0);
            
SQL::WriteFloat(handle"p_posx"0.0);
            
SQL::WriteFloat(handle"p_posy"0.0);
            
SQL::WriteFloat(handle"p_posz"0.0);
            
UserInfo[playerid][p_id] = SQL::Close(handle); 
            
SendClientMessage(playerid, -1"Successfully registered in!");
            
UserInfo[playerid][p_loggedin] = 1;
        }
        case 
DIALOG_LOGIN:
        {
            if(!
responseKick(playerid); 
            new 
hash[64];
            
SHA256_PassHash(inputtext""hash64);
            if(!
strcmp(hashUserInfo[playerid][p_password]))
            { 
                
//Load player data
                
new handle SQL::Open(SQL::READSQL_PLAYERS_TABLE"p_id"UserInfo[playerid][p_id]);
                
SQL::ReadInt(handle"p_score"UserInfo[playerid][p_score]);
                
SQL::ReadFloat(handle"p_posx"UserInfo[playerid][p_posx]);
                
SQL::ReadFloat(handle"p_posy"UserInfo[playerid][p_posy]);
                
SQL::ReadFloat(handle"p_posz"UserInfo[playerid][p_posz]);
                
SQL::Close(handle);//You must close the handle.
                
SetPlayerScore(playeridUserInfo[playerid][p_score]);
                
UserInfo[playerid][p_loggedin] = 1;
                
SendClientMessage(playerid, -1"Successfully logged in!");
                
            }
            else 
            {
                
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"{0080FF}Login""Please input your password below to log in.""Login""Exit");
            }
        }
    }
    return 
1;

Credits:

- ThePhenix (ThreeKingz) (initial developer)
- Max_Andolini (latest developer)

----------------------------------------------------------------------------------------------------------------------
Download:

Download V3.5

The latest MySQL plugin (R41-4) is required to use this include.


If you have any questions or suggestions, comment below.

Last edited by Max_Andolini; 26/11/2017 at 07:06 PM.
Max_Andolini is offline   Reply With Quote
Old 11/05/2016, 04:18 PM   #2
Evoturk
Big Clucker
 
Evoturk's Avatar
 
Join Date: Jul 2009
Posts: 80
Reputation: 2
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Thanks for this
__________________
Evo Scripts™
Evoturk is offline   Reply With Quote
Old 11/05/2016, 04:22 PM   #3
Unrea1
Gangsta
 
Unrea1's Avatar
 
Join Date: Oct 2013
Location: Venezuela
Posts: 865
Reputation: 123
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

new things have version 3?
__________________
Unrea1 is offline   Reply With Quote
Old 11/05/2016, 04:25 PM   #4
Max_Andolini
Huge Clucker
 
Max_Andolini's Avatar
 
Join Date: Oct 2013
Posts: 328
Reputation: 37
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Quote:
Originally Posted by LatinZ View Post
new things have version 3?
Table Read, Multi Table Read, Multi Read, Multi ReadEx etc.

Examine the code for more.
Max_Andolini is offline   Reply With Quote
Old 11/05/2016, 06:40 PM   #5
Sensation
Big Clucker
 
Join Date: Jul 2014
Posts: 82
Reputation: 0
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Çok güzel, böyle devam kardeş..
Sensation is offline   Reply With Quote
Old 11/05/2016, 06:41 PM   #6
Max_Andolini
Huge Clucker
 
Max_Andolini's Avatar
 
Join Date: Oct 2013
Posts: 328
Reputation: 37
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Quote:
Originally Posted by Sensation View Post
Çok güzel, böyle devam kardeş..
I do not know who you are but thank you krdş
Max_Andolini is offline   Reply With Quote
Old 11/05/2016, 06:42 PM   #7
Sensation
Big Clucker
 
Join Date: Jul 2014
Posts: 82
Reputation: 0
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Quote:
Originally Posted by eco1999 View Post
Kimsin krdş bilmiyorumda teşekkür ederim
What is your gtaturkish nickname bro?
Sensation is offline   Reply With Quote
Old 11/05/2016, 06:49 PM   #8
Sensation
Big Clucker
 
Join Date: Jul 2014
Posts: 82
Reputation: 0
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

<removed>

Last edited by Sensation; 11/05/2016 at 08:16 PM.
Sensation is offline   Reply With Quote
Old 19/06/2016, 08:22 AM   #9
Luicy.
Banned
 
Join Date: Dec 2014
Location: Sweden, Skövde
Posts: 830
Reputation: 79
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Not really a bump but, Great work buddy.
Finally I'll move over to MySQL. I'm gone from INI now.
You just received a rep mate. x3
Luicy. is offline   Reply With Quote
Old 19/06/2016, 10:22 AM   #10
Max_Andolini
Huge Clucker
 
Max_Andolini's Avatar
 
Join Date: Oct 2013
Posts: 328
Reputation: 37
Default Re: Easy MySQL - Simplifying the usage of MySQL queries!

Quote:
Originally Posted by Meller View Post
Not really a bump but, Great work buddy.
Finally I'll move over to MySQL. I'm gone from INI now.
You just received a rep mate. x3
Thank you.

The new version was released.

Description:

Bug fixes and improvements.


https://github.com/MaxAndolini/easy-...easy-mysqlv3.1
Max_Andolini is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Include] Easy SQLite: Simplyfing the usage of SQLite queries! ThePhenix Includes 7 14/07/2018 10:12 AM
[Include] Easy MySQL 1.0 - Simplifying the usage of MySQL queries! ThePhenix Includes 93 08/01/2017 04:04 AM
[Tutorial] MySQL-queries iRaiDeN Tutorials 2 21/03/2014 03:20 PM
Help with MySQL queries LiamM Scripting Help 4 20/03/2013 10:37 AM


All times are GMT. The time now is 11:56 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.