Need help with mysql update...
#1

So basically with mysql I'm on we. It ain't my scripting language.. But still want to learn it.. maybe some one could
explain how to upgrade this code... I'm using MySQL plugin R34...

Here is my code:

pawn Код:
forward LoadGarages();
public LoadGarages()
{
    new arrCoords[15][64];
    new sql[80], row[512];
    format(sql, sizeof(sql), "SELECT COUNT(*) FROM Garages");
    mysql_query(sql);
    mysql_store_result();
    mysql_fetch_row(row);
    mysql_free_result();
    for (new idx=0; idx<MAX_GARAGES; idx++) {
        format(sql, sizeof(sql), "SELECT * FROM Garages WHERE GarageID=%d", idx);
        mysql_query(sql);
        mysql_store_result();
        if (mysql_num_rows() > 0) {
            mysql_fetch_row(row);
            split(row, arrCoords, '|');
            mysql_free_result();
            Garages[idx][EnterX] = floatstr(arrCoords[1]);
            Garages[idx][EnterY] = floatstr(arrCoords[2]);
            Garages[idx][EnterZ] = floatstr(arrCoords[3]);
            Garages[idx][ExitX] = floatstr(arrCoords[4]);
            Garages[idx][ExitY] = floatstr(arrCoords[5]);
            Garages[idx][ExitZ] = floatstr(arrCoords[6]);
            Garages[idx][EnterAngle] = floatstr(arrCoords[7]);
            Garages[idx][ExitAngle] = floatstr(arrCoords[8]);
            Garages[idx][Owned] = strval(arrCoords[9]);
            strmid(Garages[idx][Owner], arrCoords[10], 0, strlen(arrCoords[10]), 255);
            Garages[idx][Price] = strval(arrCoords[11]);
            Garages[idx][ExitInterior] = strval(arrCoords[12]);
            Garages[idx][Dynamic] = strval(arrCoords[13]);
            Garages[idx][Locked] = strval(arrCoords[14]);

            new string[128];
            if(Garages[idx][Owned] == 0)
            {
                new garagelocation[MAX_ZONE_NAME];
                GetCoords2DZone(Garages[idx][EnterX],Garages[idx][EnterY], garagelocation, MAX_ZONE_NAME);
                format(string, sizeof(string), "[Garage For Sale]\nAddress: %d %s\nPrice: $%d",idx,garagelocation,Garages[idx][Price]);
                garagetext[idx] = Create3DTextLabel(string,0xbec339ff,Garages[idx][EnterX],Garages[idx][EnterY],Garages[idx][EnterZ],5.0,0, 0);
            } else {
                new garagelocation[MAX_ZONE_NAME];
                GetCoords2DZone(Garages[idx][EnterX],Garages[idx][EnterY], garagelocation, MAX_ZONE_NAME);
                format(string, sizeof(string), "[Garage]\nAddress: %d %s\nOwner: %s",idx,garagelocation,Garages[idx][Owner]);
                garagetext[idx] = Create3DTextLabel(string,0xbec339ff,Garages[idx][EnterX],Garages[idx][EnterY],Garages[idx][EnterZ],5.0,0, 0);
            }
        }
    }
    mysql_free_result();
    printf("%d Garages loaded from database", MAX_GARAGES);
    return true;
}

forward SaveGarages(busid);
public SaveGarages(busid)
{
    new query[1024];
    format(query, sizeof(query), "UPDATE Garages SET EnterX=%f,EnterY=%f,EnterZ=%f,ExitX=%f,ExitY=%f,ExitZ=%f,EnterAngle=%f,ExitAngle=%f WHERE GarageID=%d",
    Garages[busid][EnterX],
    Garages[busid][EnterY],
    Garages[busid][EnterZ],
    Garages[busid][ExitX],
    Garages[busid][ExitY],
    Garages[busid][ExitZ],
    Garages[busid][EnterAngle],
    Garages[busid][ExitAngle],
    busid);
    mysql_query(query);
    //printf("Query : %s",query);

    format(query, sizeof(query), "UPDATE Garages SET Owned=%d,Owner='%s',Price=%d,Interior=%d,Dynamic=%d,Open=%d WHERE GarageID=%d",
    Garages[busid][Owned],
    Garages[busid][Owner],
    Garages[busid][Price],
    Garages[busid][ExitInterior],
    Garages[busid][Dynamic],
    Garages[busid][Locked],
    busid);
    mysql_query(query);
    //printf("Query : %s",query);
}
With best regards Scrillex.. And btw big thanks for your help any answers will be appreciated.
Reply
#2

This is a great tutorial I learned from.
https://sampforum.blast.hk/showthread.php?tid=337810
Reply
#3

In this case I would need to use : mysql_function_query(dbHandle, "SELECT COUNT(*) FROM Garage Or how it would work...
Reply
#4

BUMP.. Need some help..
Reply
#5

Код:
stock LoadGarages()
{
	mysql_tquery(sql_handle, "SELECT * FROM Garages", "OnGarageDataLoad", "");
}

forward OnGarageDataLoad();
public OnGarageDataLoad()
{
    for(new i=0, max = cache_get_row_count(); i < max; ++i)
	{
		Garages[i][EnterX] = cache_get_row_float(i, 1);
		Garages[i][EnterY] = cache_get_row_float(i, 2);
		Garages[i][EnterZ] = cache_get_row_float(i, 3);
		//....
		cache_get_row(i, 10, Garages[i][Owner], sql_handle, MAX_PLAYER_NAME);
		Garages[i][Price] = cache_get_row_int(i, 11);
		//....
		
		//if(Garages[i][Owned]...
	}
	printf("%d Garages loaded from database", cache_get_row_count());
	return 1;
}
For that SaveGarages code, just replace "mysql_query" with "mysql_tquery" (like in function "LoadGarages").
Reply
#6

Like this? It will look like?
pawn Код:
stock LoadGarages()
{
    mysql_tquery(sql_handle, "SELECT * FROM Garages", "OnGarageDataLoad", "");
}

forward OnGarageDataLoad();
public OnGarageDataLoad()
{
    for(new i=0, max = cache_get_row_count(); i < max; ++i)
    {
        Garages[i][EnterX] = cache_get_row_float(i, 1);
        Garages[i][EnterY] = cache_get_row_float(i, 2);
        Garages[i][EnterZ] = cache_get_row_float(i, 3);
        Garages[idx][ExitX]  = cache_get_row_float(i, 4);
        Garages[idx][ExitY]  = cache_get_row_float(i, 5);
        Garages[idx][ExitZ]  = cache_get_row_float(i, 6);
        Garages[idx][EnterAngle]  = cache_get_row_float(i, 7);
        Garages[idx][ExitAngle]  = cache_get_row_float(i, 8);
        cache_get_row(i, 10, Garages[i][Owner], sql_handle, MAX_PLAYER_NAME);
        Garages[i][Price] = cache_get_row_int(i, 11);
        Garages[idx][ExitInterior] = cache_get_row(i, 12);
        Garages[idx][Dynamic] = cache_get_row(i, 13);
        Garages[idx][Locked] = cache_get_row(i, 14);
    }
    printf("%d Garages loaded from database", cache_get_row_count());
    return 1;
}
Thank you for your time.. I really appreciate it..
Reply
#7

cache_get_row is for strings (like the Owner-variable), cache_get_row_float is for float values (like EnterX, ExitX, ...) and cache_get_row_int is for int values (like Price, Dynamic, Locked, ...). That means you have the last three variables assigned wrong (ExitInterior, Dynamic and Locked).
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)