SA-MP Forums Archive
Problema TOP MySQL - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Problema TOP MySQL (/showthread.php?tid=635853)



Problema TOP MySQL - EdgarHN - 15.06.2017

Hola, mi problema es en un top que hice en MySQL
al cargar la lista del TOP no actualiza cada nombre, y se queda en el que tenga mas Score
Pero el Score si lo cambia, lo que no cambia es el nombre

Imagen:


Codigo:

Код HTML:
			new lista[49+20*(75)],linea[(75)];
   			new Cache:R = mysql_query(MySQLDB,"SELECT Nombre,Score FROM usuarios ORDER BY Score DESC LIMIT 20",true);
			new name[MAX_PLAYER_NAME],score;
			strcat(lista,""BLANCO"#-Nombre\t"BLANCO"Score\t"BLANCO"Estado\n");
			foreachEx(i:cache_num_rows()){
			contador++;
			cache_get_row(i,0,name,MySQLDB,sizeof(name));
			score = cache_get_row_int(i,1);
			format(linea,sizeof(linea),"#%d-%s\t"LIMA"%d\t%s\n",contador,name,score,ObtenerConeccion(name));
			strcat(lista,linea);
			}
			if(!contador)return POFFSET[playerid] = 0 && SendClientMessage(playerid,COLOR_ROJO,"* No hay usuarios en el top score.") && cache_delete®;
			ShowPlayerDialog(playerid,DIALOGO_TOP_SCORE,DIALOG_STYLE_TABLIST_HEADERS,""BLANCO"TOP - "LIMA"Score",lista,"Siguiente","Salir");
			cache_delete®;



Respuesta: Problema TOP MySQL - mcreed - 15.06.2017

Para ser sincero no entiendo tu codigo, pero aqui te dejo un ejemplo de como deberнa ser (con la versiуn mбs reciente de MySQL):
pawn Код:
new strDialogo[49+20*(75)] =""BLANCO"#\t"BLANCO"Nombre\t"BLANCO"Score\t"BLANCO"Estado\n", strLinea[75], strNombre[MAX_PLAYER_NAME + 1], intScore;
    mysql_query(MySQLDB, "SELECT Nombre, Score FROM usuarios ORDER BY Score DESC LIMIT 20");
    if(!cache_num_rows())
        return SendClientMessage(playerid, COLOR_RED, "No hay jugadores para el TOP :(");
    for(new a = 0, t = cache_num_rows(); a < t; a++)
    {
        cache_get_value_name(a, "Nombre", strNombre);
        cache_get_value_name_int(a, "Score", intScore);
        format(strLinea, sizeof strLinea, "\n#%d\t%s\t%d", a, strNombre, intScore);
        strcat(strDialogo, strLinea);
    }
    ShowPlayerDialog(playerid,DIALOGO_TOP_SCORE,DIALOG_STYLE_TABLIST_HEADERS,""BLANCO"TOP - "LIMA"Score",strDialogo,"Siguiente","Salir");



Respuesta: Problema TOP MySQL - EdgarHN - 15.06.2017

Actualizare MySQL y lo probare, gracias compaсero


Respuesta: Problema TOP MySQL - mcreed - 16.06.2017

El de arriba solo es un ejemplo (osea no sй si este funcional), pero si te recomiendo actualizar, hay funciones nuevas interesantes.
Para mбs facilidad tambiйn te recomiendo utilizar cache_get_value_name y derivados para obtener datos en vez de utilizar los indices, en opiniуn personal es mбs facil a traves del nombre del campo.
Si de pronto necesitas ayuda con el codigo, enviame un mensaje privado.


Respuesta: Problema TOP MySQL - Matyaas - 16.06.2017

Perdуn por desviar pero como hago esos tipos de dialogos?


Respuesta: Problema TOP MySQL - EdgarHN - 16.06.2017

Ahi te mande privado


Respuesta: Problema TOP MySQL - The-Krew - 16.06.2017

Hay una manera mбs eficiente de hacer eso usando solo la consulta de sql.

ejemplo.

SET @pos=0;
SELECT @pos:=@pos+1,name FROM players ORDER BY score DESC;