Duda SELECT*FROM -
Minikole - 15.05.2015
Hola, tengo una duda, sobre como sacar datos de mбs de una fila usando SELECT * FROM.
Pondre mi ejemplo:
Tengo una tabla llamada regalos en las que almaceno, la ID(Autoincrementada y Primaria), el tipo que dio el regalo y el nombre del que lo recibio..y el tipo de regalo que es. Usando una consulta como esta
Код:
mysql_query(1, "SELECT * FROM regalos WHERE UserID=4");
(el 4 se sustituye por la id que se quiera etc )
Vale, me gustaria saber, en caso de que haya por ejemplo 2 o mas filas afectadas porque el ID '4' haya dado el regalo, como sacar dichos datos para luego ponerlos en un SendClientMessage o un printf (por ejemplo)
Espero que hayan entendido
![Huh?](images/smilies/confused.gif)
.
Chao
// SOLUCION
Quote:
Originally Posted by Daniel-92
Asi seria la lуgica del codigo.
pawn Код:
mysql_format(1,consulta,sizeof consulta, "SELECT * FROM regalos WHERE UserSQL=%i",id_menu); mysql_query(1,consulta); mysql_store_result(); new contador = mysql_num_rows(); //Me habia equivocado aqui en el codigo anterior habia puesto field format(string2,sizeof string2,"ID\tFecha\tUser\n"); if (contador > 0) { new id_sql[8],user_sql[MAX_PLAYER_NAME],fecha_sql[16]; for(new a = 0; a < contador; a++) { cache_get_field_content(a,"ID" ,id_sql); cache_get_field_content(a,"UserSQL" ,user_sql); cache_get_field_content(a,"Fecha1" ,fecha_sql); format(string2, sizeof string2, "%s%s\t%s\t%s\n",string2,id_sql,fecha_sql,user_sql); } ShowPlayerDialog(playerid, DIALOGO_MENU_REGALO,DIALOG_STYLE_TABLIST_HEADERS, "Seleccione la adv para mбs informacion", string2, "Aceptar", "Cancelar"); } else { ShowPlayerDialog(playerid, DIALOGO_MENU_REGALO,DIALOG_STYLE_TABLIST_HEADERS, "Seleccione la adv para mбs informacion", "No hay datos disponibles, "Aceptar", "Cancelar"); } mysql_free_result();
|
Re: Duda SELECT*FROM -
SickAttack - 15.05.2015
Primeramente te recomiendo que escojas solamente las columnas que vas a utilizar, por ejemplo:
pawn Код:
SELECT `%s`, `%s`, `%s` FROM `%s` WHERE %s = %d
Y para seleccionar la siguiente fila, ejemplo:
pawn Код:
new field[128], playerid;
while(db_next_row(result))
{
db_get_field_assoc(result, USER_ID, field, sizeof(field));
playerid = strval(field);
if(playerid != 4) break;
else
{
SendClientMessage(playerid, -1, "REGALO!!!!");
}
}
Respuesta: Duda SELECT*FROM -
Zume - 15.05.2015
si lo encuentra de arriba a abajo o de abajo arriba, depende de cual encuentre primero!, si va en orden DESC y encuentra por ejemplo:
ID MONEY LEVEL
4 5000 1
4 4000 2
tomarб el de 5000 de money, si no tiene un orden establecido encontrarб en orden ASC y serб el 4000 de money
Respuesta: Re: Duda SELECT*FROM -
Minikole - 15.05.2015
Quote:
Originally Posted by SickAttack
Primeramente te recomiendo que escojas solamente las columnas que vas a utilizar, por ejemplo:
pawn Код:
SELECT `%s`, `%s`, `%s` FROM `%s` WHERE %s = %d
Y para seleccionar la siguiente fila, ejemplo:
pawn Код:
new field[128], playerid; while(db_next_row(result)) { db_get_field_assoc(result, USER_ID, field, sizeof(field)); playerid = strval(field);
if(playerid != 4) break; else { SendClientMessage(playerid, -1, "REGALO!!!!"); } }
|
Gracias por responder
![Cheesy](images/smilies/biggrin.png)
, una duda adicional.
Si quisiera poner los datos recibidos(teniendo en cuenta que la consulta me ha dado dos filas minimo), se podria poner en un DIALOG_STYLE_TABLIST_HEADER de los de la 0.3.7 ?, si es asн....en que variables guardo los datos recibidos
Saludos
Respuesta: Duda SELECT*FROM -
Minikole - 15.05.2015
Quote:
Originally Posted by _Zume
si lo encuentra de arriba a abajo o de abajo arriba, depende de cual encuentre primero!, si va en orden DESC y encuentra por ejemplo:
ID MONEY LEVEL
4 5000 1
4 4000 2
tomarб el de 5000 de money, si no tiene un orden establecido encontrarб en orden ASC y serб el 4000 de money
|
Si Zume, solo me sale un dato(de una fila), y mi duda era esa...si es posible o como se podria hacer para sacar los datos de mбs de una fila afectada
Respuesta: Duda SELECT*FROM -
Zume - 15.05.2015
creas un loop para todas las filas encontradas, y pues ya estб, los valores los metes en variables obteniйndolos con el "i" del bucle, pon como tienes el cуdigo
Re: Respuesta: Re: Duda SELECT*FROM -
SickAttack - 15.05.2015
Quote:
Originally Posted by Minikole
Gracias por responder ![Cheesy](images/smilies/biggrin.png) , una duda adicional.
Si quisiera poner los datos recibidos(teniendo en cuenta que la consulta me ha dado dos filas minimo), se podria poner en un DIALOG_STYLE_TABLIST_HEADER de los de la 0.3.7 ?, si es asн....en que variables guardo los datos recibidos
Saludos
|
Si, se puede. Pones la tabulacion (\t) y el identificador para ponerlo en otra linea (\n). Guardas todo la informacion en un string y lo muestras en el dialog de tipo tablist.
Respuesta: Duda SELECT*FROM -
Minikole - 15.05.2015
Quote:
Originally Posted by SickAttack
Si, se puede. Pones la tabulacion (\t) y el identificador para ponerlo en otra linea (\n). Guardas todo la informacion en un string y lo muestras en el dialog de tipo tablist.
|
Quote:
Originally Posted by _Zume
creas un loop para todas las filas encontradas, y pues ya estб, los valores los metes en variables obteniйndolos con el "i" del bucle, pon como tienes el cуdigo
|
En principio lo habia hecho asн, pero de esta forma en el dialogo solo me sale 1 dato de los 2 que cree de prueba
Код:
new
consulta[200],
string[60],
columna[512],
consulta2[200],
contador
;
format(consulta, sizeof(consulta), "SELECT ID FROM regalos ORDER BY ID DESC");
mysql_query(1, consulta);
mysql_store_result();
mysql_fetch_row(columna);
contador = strval(columna);
for(new a = 0; a <= contador; a++)
{
mysql_format(1,consulta2,sizeof consulta2, "SELECT * FROM regalos WHERE UserSQL=%i",id_menu);
mysql_query(1,consulta2);
mysql_store_result();
RegInfo[a][aSQLID] = cache_get_field_content_int(0,"ID");
RegInfo[a][aUserSQL] = cache_get_field_content_int(0,"UserSQL");
RegInfo[a][aFecha_DMA] = cache_get_field_content(0,"Fecha1",string);
format(RegInfo[a][aFecha_DMA], sizeof string, "%s", string);
format(string2, sizeof string2, "%i\t%s\t%s\n",RegInfo[a][aSQLID],RegInfo[a][aFecha_DMA],RegInfo[a][aUserSQL]);
}
mysql_free_result();
format(string2, sizeof string2, "ID\tFecha\tUser\n%s\n", string2);
ShowPlayerDialog(playerid, DIALOGO_MENU_REGALO,DIALOG_STYLE_TABLIST_HEADERS, "Seleccione la adv para mбs informacion", string2, "Aceptar", "Cancelar");
Re: Duda SELECT*FROM -
SickAttack - 15.05.2015
pawn Код:
format(string2, sizeof string2, "%s%i\t%s\t%s\n",string2,RegInfo[a][aSQLID],RegInfo[a][aFecha_DMA],RegInfo[a][aUserSQL]);
No estas guardando el string previo.
Respuesta: Re: Duda SELECT*FROM -
Minikole - 15.05.2015
Quote:
Originally Posted by SickAttack
pawn Код:
format(string2, sizeof string2, "%s%i\t%s\t%s\n",string2,RegInfo[a][aSQLID],RegInfo[a][aFecha_DMA],RegInfo[a][aUserSQL]);
No estas guardando el string previo.
|
Bien, puse como dijiste pero ahora lo que ocurre es que me sale triplicado jejeje