[Duda] Funcion mysql
#1

Buenas que tal, estoy haciendo un gm desde 0 y estoy teniendo problemas para leer un dato tipo String que tengo en mi base de datos.
Lo que quiero hacer es que dependiendo de lo que haya adentro de ese campo, el script haga una u otra cosa con un if.
Por ejemplo adentro del campo este puede ir el string "groovestreet" o "ballas"
Probe con cache_get_field_content pero no me sirvio, no lee lo que tengo adentro del campo para empezar.

Gracias, saludos
Reply
#2

Buenas, para hacer eso debes usar la funciуn cache_get_row

Saludos.
Reply
#3

PHP код:
new _variable[30];
cache_get_field_content(0"campo"_variableTuVariableDeConexionMYSQL30);
if(
_variable == "texto")
{
     .........

Deberнa funcionar, de lo contrario verifica que el campo realmente estй definido como texto (VARCHAR en la BD)
Reply
#4

Buenaas, gracias por responder!

Quote:
Originally Posted by Goncho28
Посмотреть сообщение
Buenas, para hacer eso debes usar la funciуn cache_get_row

Saludos.
Probe con cache_get_row y tampoco me funciono.

Quote:
Originally Posted by DragonZafiro
Посмотреть сообщение
PHP код:
new _variable[30];
cache_get_field_content(0"campo"_variableTuVariableDeConexionMYSQL30);
if(
_variable == "texto")
{
     .........

Deberнa funcionar, de lo contrario verifica que el campo realmente estй definido como texto (VARCHAR en la BD)
Asi tal cual como vos lo pones, es como tengo el codigo, y me tira un error en la linea del if.
error 033: array must be indexed (variable "_variable")
Reply
#5

Las cadenas que no tengan exactamente el mismo tamaсo no pueden ser comparadas con el operador '==' pues este es para otro tipo de variables (nъmeros, float etc).

Utiliza strcmp.
Reply
#6

Al fin pude arreglarlo!, gracias admantis, dejo el codigo por si a alguno le sirve. Aunque ahora tengo otro problema, es que cuando me uno a una de las 2 bandas, no se actualiza la base de datos a menos que salga y vuelva a entrar del server, o que lo reinicie, dejo el codigo completo

Код:
CMD:unir(playerid,params[])
{
new parametro[50];
if(!sscanf(params,"s[50]",parametro))
if(!strcmp(parametro,"grovestreet",false))
	{
	new query[512];
	mysql_format(mysql, query, sizeof(query), "UPDATE `cuentas` SET `Organizacion` = 'GroveStreet' WHERE `ID` = %d",Player[playerid][ID]);
    mysql_tquery(mysql, query, "", "");
	SendClientMessage(playerid,-1,"Te uniste a groveestreet");
	}
else if(!strcmp(parametro,"ballas",true))
	{
	new query[512];
 	mysql_format(mysql, query, sizeof(query), "UPDATE `cuentas` SET `Organizacion` = 'Ballas' WHERE `ID` = %d",Player[playerid][ID]);
    mysql_tquery(mysql, query, "", "");
    SendClientMessage(playerid,-1,"Te uniste a los ballas");
	}
else
	{
    SendClientMessage(playerid,-1,"Usa /unir [grovestreet/ballas]");
	}
return 1;
}
Код:
CMD:conquistar(playerid,params[])
{
new dest[50];
cache_get_field_content(0,"Organizacion",dest);
if(!strcmp(dest,"GroveStreet",false))
{
	SendClientMessage(playerid,-1,"Conquistaste este territorio para grovestreet, +1rep");
}
else if(!strcmp(dest,"Ballas",false))
{
	SendClientMessage(playerid,-1,"Conquistaste este territorio para los ballas, +1rep");
}
else
{
SendClientMessage(playerid,-1,"No tenes banda");
}
return 1;
}
edit: Solo para aclarar, no es que no se actualiza la base de datos, si me soy de grovestreet y me uno a los ballas, aparece en la base de datos el cambio, pero no en el juego.
Reply
#7

Como recomendaciуn personal te dirнa que almacenes la banda en una variable para asн no tener que solicitar la informaciуn de la base de datos. Asн serб mбs fбcil controlar todo, luego simplemente al desconectar / cambiar la banda guardas la informaciуn en la base de datos. Y al cargar la informaciуn del jugador (por ejemplo: login) le asignas la banda a esa variable.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)