Raised This Month: $ Target: $400
 0% 

SQL sending killer id to SQL Query


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
devWaleed
Member
Join Date: Apr 2013
Location: Karachi, Pakistan
Old 08-08-2014 , 19:22   SQL sending killer id to SQL Query
Reply With Quote #1

OK, as the first rule I tried myself and learned basics of this SQLx working. It is (almost) working but there is a little problem passing the killer id to sql query. Look here:

In DeathEvent:

PHP Code:
//I made killer a global var to make it reach the subthread of query but it doesn't work.
killer read_data(1);
    
username[killer] = get_user_name(killernamecharsmax(name));        
formatex(Query511"SELECT * FROM points WHERE `username`='%s'"username[killer]);        
SQL_ThreadQuery(g_SqlTuple"QueryThread_SELECT"Query); 


This works and I can reach next step without errors:



PHP Code:
public QueryThread_SELECT(FailStateHandle:QueryError[], ErrcodeData[], DataSize){
    
    if(
FailState == TQUERY_CONNECT_FAILED){
        return 
set_fail_state("Couldn't connect to DB");        
    }else if(
FailState == TQUERY_QUERY_FAILED){
        return 
set_fail_state("Query failed");
    }
    
    if(
SQL_NumResults(Query) < 1){
        
//I assume from tutorial that NumResults returns the selected rows, if 0 means no previous entry
        
formatex(szquery511"INSERT INTO `points` VALUES('%s', '+1')"username[killer]);
        
SQL_ThreadQuery(g_SqlTuple"FreeQueryHandler"szquery);
    }else if(
SQL_NumResults(Query) == 1){
               
//and if ==1 means there is previous entry, so +1 in last entry.
        
formatex(szquery511"UPDATE `points` SET `coins` = '+1' WHERE `username` = '%s'"username[killer]);
        
SQL_ThreadQuery(g_SqlTuple"FreeQueryHandler"szquery);
    }
    return 
PLUGIN_CONTINUE;

Results are:

I get 1 point data entered in MYSQL db but with empty 'username' field and after, it doesn't update. I think it has to do with that Data[] paramter right? Please show me...
__________________
Steam: Waleedbaig2013
devWaleed is offline
Send a message via Skype™ to devWaleed
devWaleed
Member
Join Date: Apr 2013
Location: Karachi, Pakistan
Old 08-08-2014 , 20:17   Re: SQL sending killer id to SQL Query
Reply With Quote #2

OK I'm sorry for double post but I found my answer by looking at settask data parameter.

It should be done like this:

In DeathMsg event:

PHP Code:
get_user_name(killernamecharsmax(name));        
        
formatex(Query511"SELECT * FROM points WHERE `username`='%s'"name);
        
SQL_ThreadQuery(g_SqlTuple"QueryThread_SELECT"Querynamecharsmax(name)); 
In Handler:

PHP Code:
public QueryThread_SELECT(FailStateHandle:QueryError[], ErrcodeData[], DataSize){
    
    if(
FailState == TQUERY_CONNECT_FAILED){
        return 
set_fail_state("Couldn't connect to DB");        
    }else if(
FailState == TQUERY_QUERY_FAILED){
        return 
set_fail_state("Query failed");
    }
    
    if(
SQL_NumResults(Query) < 1){
        
        
formatex(szquery511"INSERT INTO `points` VALUES('%s', '+1')"Data);
        
SQL_ThreadQuery(g_SqlTuple"FreeQueryHandler"szquery);
        
        
client_print(0print_chat"Insert for %s"Data);
        
        
        
    }else if(
SQL_NumResults(Query) == 1){
        
        
formatex(szquery511"UPDATE `points` SET `coins` = `coins`+1 WHERE `username` = '%s'"Data);
        
SQL_ThreadQuery(g_SqlTuple"FreeQueryHandler"szquery);
        
        
client_print(0print_chat"Update for %s"Data);
    }
    return 
PLUGIN_CONTINUE;

It works perfectly now...but if someone could do some improvements please reply..

Thanks
__________________
Steam: Waleedbaig2013
devWaleed is offline
Send a message via Skype™ to devWaleed
quark
Veteran Member
Join Date: Oct 2011
Location: Your mind.
Old 08-09-2014 , 07:56   Re: SQL sending killer id to SQL Query
Reply With Quote #3

Thats so unnecessary. Why dont u use the 'traditional way', load on player connect, save no user disconnect?
__________________

Check out My Plugins:
qServerInfo ; ASKTAG
quark is offline
devWaleed
Member
Join Date: Apr 2013
Location: Karachi, Pakistan
Old 08-09-2014 , 15:25   Re: SQL sending killer id to SQL Query
Reply With Quote #4

Quote:
Originally Posted by quark View Post
Thats so unnecessary. Why dont u use the 'traditional way', load on player connect, save no user disconnect?
Load what? O.o Save what? I am saving kills in SQLx after some interval.


EDIT: There is another problem now.
Code:
	if(SQL_NumResults(Query) == 1){
		flags = SQL_ReadResult(Query, 2);	
		client_print(0, print_chat, "%s flag", flags);
	}
Database structure:
http://i.minus.com/ibpeuIuxaT1jGf.png

In database, second field is flag. It has p flag stored for me. But when I print it, it prints nothing but blank space. Any help?
__________________
Steam: Waleedbaig2013

Last edited by devWaleed; 08-10-2014 at 02:08.
devWaleed is offline
Send a message via Skype™ to devWaleed
quark
Veteran Member
Join Date: Oct 2011
Location: Your mind.
Old 08-09-2014 , 17:05   Re: SQL sending killer id to SQL Query
Reply With Quote #5

to be honest i cant see the querys cause im on my mobile but i think running the query every kill is not eficcient
__________________

Check out My Plugins:
qServerInfo ; ASKTAG
quark is offline
Reply



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

Forum Jump


All times are GMT -4. The time now is 12:57.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode