Conseguir la ID de una fila MySQL para actualizar variable
#1

Hola,

Estaba introduciйndome a MySQL y probй a realizar un comando para dar facciуn:

Код:
CMD:hacerlider(playerid, params[]) // Administrador
{
	new id, faccionid, string[128], targetnombre[24], nombreusuario[24];
	if(Jugador[playerid][Admin] == 0) return SendClientMessage(playerid, COLOR_ROJOO, "* No perteneces al staff");
	if(1 < Jugador[playerid][Admin] < 4) return SendClientMessage(playerid, COLOR_ROJOO, "* No tienes los permisos suficientes para usar este comando");
	if(sscanf(params, "ui", id, faccionid)) return SendClientMessage(playerid, COLOR_GRISC, "Uso: /hacerlider [ID] [Facciуn(1-2)]");
	if(Jugador[playerid][Faccion] > 1) return SendClientMessage(playerid, COLOR_ROJOO, "* No puedes hacer lнder al usuario, debes expulsarlo antes");
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_ROJOO, "* El jugador no se encuentra conectado");
	if(0 < faccionid < 2)
	{
		GetPlayerName(playerid, nombreusuario, sizeof(nombreusuario));
		GetPlayerName(id, targetnombre, sizeof(targetnombre));
		format(string, sizeof(string), "Le has dado a %s la facciуn %i y le asignaste como lнder", targetnombre, faccionid);
		SendClientMessage(playerid, COLOR_CELESTE, string);
		format(string, sizeof(string), "El administrador %s te asignу la facciуn %i y te ha puesto como lнder", nombreusuario, faccionid);
		SendClientMessage(playerid, COLOR_CELESTE, string);
		
		Jugador[id][Faccion] = faccionid;
		Jugador[id][Rangofac] = 6;
		Jugador[id][Lider] = 1;
		new query[128];
		mysql_format(mysql, query, sizeof(query), "UPDATE `usuarios` SET `Faccion` = %d, `Rangofac` = %d, Lider` = %d WHERE `ID` = %d", Jugador[id][Faccion], Jugador[id][Rangofac], Jugador[id][Lider],  Jugador[id][ID]);
	}
	else return SendClientMessage(playerid, COLOR_ROJOO, "* La ID de la facciуn debe estar entre 1-2");
	return 1;
}
No estoy seguro de cuбl es el problema pero pienso que es el UPDATE:

Код:
mysql_format(mysql, query, sizeof(query), "UPDATE `usuarios` SET `Faccion` = %d, `Rangofac` = %d, Lider` = %d WHERE `ID` = %d", Jugador[id][Faccion], Jugador[id][Rangofac], Jugador[id][Lider],  Jugador[id][ID]);
Lo que estoy haciendo ahн es asignarle todo a la ID in-game no la de la tabla MySQL pero no se cуmo solucionarlo.

їQuй podrнa hacer?

Un saludo.
Reply
#2

Veo que te falta enviar la query, lo que tienes en el mysql_format es la query (consulta) que enviarбs a la base de datos. Bбsicamente tienes que hacer esto:
PHP код:
mysql_format(mysqlquerysizeof(query), "TU CONSULTA %d"variable); 
mysql_pquery(mysqlquery); 
Reply
#3

Muchas gracias por la ayuda aunque no he podido solucionarlo.

Yo creo que es la sentencia UPDATE que estб cambiando las variables de la facciуn, rango y lнder a otra ID que no es la mнa. Es decir, in-game soy la ID 0 y bueno yo en pawn estoy algo verde pero pienso que en el UPDATE:

Код:
mysql_format(mysql, query, sizeof(query), "UPDATE `usuarios` SET `Faccion` = %d, `Rangofac` = %d, Lider` = %d WHERE `ID` = %d", Jugador[id][Faccion], Jugador[id][Rangofac], Jugador[id][Lider],  Jugador[id][ID]);
Estб algo mal, y creo que es la variable de la ID (Jugador[id][ID]) que estб a la derecha del todo. la "id" minъscula se supone que es el parбmetro de la ID del que recibe el comando. Si pongo Jugador[playerid][ID] lo que hace bбsicamente es actualizar mi perfil pero no el del otro usuario.

Un saludo, gracias nuevamente
Reply
#4

De donde sacas la variable ID?
Reply
#5

La variable id en minъscula es la del otro usuario la que uso por ejemplo para enviarle el mensaje al que recibe el comando en vez de a playerid y la ID mayъscula es la variable ID de la tabla de usuarios MySQL que estб en un enum
Reply
#6

Quote:
Originally Posted by Joake6
Посмотреть сообщение
La variable id en minъscula es la del otro usuario la que uso por ejemplo para enviarle el mensaje al que recibe el comando en vez de a playerid y la ID mayъscula es la variable ID de la tabla de usuarios MySQL que estб en un enum
De acuerdo a lo que dices, parece que no estб cargando la ID ъnica de la base de datos que identifica a cada jugador en:

PHP код:
Jugador[playerid][ID
Muestra como estбs cargando aquel valor.
Reply
#7

La tengo en un enum:

Код:
enum InfoJugador
{
    ID,
    Nombre[MAX_PLAYER_NAME],
    Clave[129],
    Admin,
    Dinero,
    Skin,
    Faccion,
    Lider,
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    Float:PosA
};
new Jugador[MAX_PLAYERS][InfoJugador];
No creo que sea esto pero tambiйn recojo la ID del AUTO IMCREMENT cuando se registra:

Код:
Jugador[playerid][ID] = cache_insert_id();
La ID en la base de datos estб como primaria y funciona correctamente cuando se registra.

Si mal no recuerdo si lo pongo con playerid los datos se envнan bien pero a mн pero no a la id de otro usuario
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)