15/01/2022, 04:27 PM
(Última modificación: 26/01/2022, 02:13 PM por Nelo. Edited 6 times in total.)
mas que un tutorial es una breve explicacion de como usar un stock, llevo un par de dias dando vueltas por el foro y no encontre un post donde lo expliquen por completo (pude entender su uso viendo varios post y experimentando por mi mismo con mis plugins)
bueno paso a explicar como me funciono a mi, lo pude testear y por lo menos a mi me funciona correctamente
este es el array que vamos a convertir a string para almancenarlo en sql
los stocks que vamos a usar para llevar a cabo lo antes dicho son los siguientes (los stocks son de metalicross, los creditos van para el)
nuestra funcion de guardado seria mas o menos asi
y nuestra funcion de carga seria
dato: a la columna tipo varchar le tuve que dar valor default '' porque sino no guardaba nada
si el string no se guarda/carga completo hay que aumentar el valor de string[]
bueno paso a explicar como me funciono a mi, lo pude testear y por lo menos a mi me funciona correctamente
este es el array que vamos a convertir a string para almancenarlo en sql
Código PHP:
new has_skills[33][21]
los stocks que vamos a usar para llevar a cabo lo antes dicho son los siguientes (los stocks son de metalicross, los creditos van para el)
Código PHP:
PackArrayToString(szString[], iLen, const iDest[], const iDestSize = sizeof iDest, const iSeparator = ',')
{
if(iDestSize <= 0)
return 0;
new iWritten, i = 1
iWritten = num_to_str(iDest[0], szString, iLen)
while( i < iDestSize && iWritten < iLen )
iWritten += formatex(szString[iWritten], iLen - iWritten, "%c%d", iSeparator, iDest[i++])
return iWritten;
}
StringToArray(const szData[], iDest[], const iDestSize = sizeof iDest, const iSeparator = ',')
{
new szChunk[32], szBuffer[128], i;
copy(szBuffer, charsmax(szBuffer), szData);
while( i < iDestSize )
{
strtok(szBuffer, szChunk, charsmax(szChunk), szBuffer, charsmax(szBuffer), iSeparator, 1)
iDest[i++] = str_to_num(szChunk)
}
return i;
}
nuestra funcion de guardado seria mas o menos asi
Código PHP:
public Guardar(id)
{
static string[99] // esto va a almacenar nuestro array en string para despues guardarla
PackArrayToString(string, charsmax(string), has_skills[id]) // convertimos el array has_skills[] y lo almacenamos en string[]
////// importante al guardarlo en la base de datos lo guardamos como string "%s" en una columna tipo varchar
g_Tuple = SQL_PrepareQuery(g_Connection, "UPDATE ^"%s^" SET db_skills = ^"%s^" WHERE Nombre = ^"%s^"", g_dbtable, string, pname[id])
SQL_Execute(g_Tuple)
}
y nuestra funcion de carga seria
Código PHP:
public Cargar(id)
{
g_Tuple = SQL_PrepareQuery(g_Connection, "SELECT db_skills FROM ^"%s^" WHERE Nombre = ^"%s^"", g_dbtable, pname[id])
if(SQL_Execute(g_Tuple))
{
static string[99]
SQL_ReadResult(g_Tuple, 0, string, charsmax(string))
StringToArray(string, has_skills[id]) // convertimos el string obtenido de la base de datos y lo almacenamos en el array
}
}
dato: a la columna tipo varchar le tuve que dar valor default '' porque sino no guardaba nada
si el string no se guarda/carga completo hay que aumentar el valor de string[]
Aportes: