Duda SELECT*FROM
#1

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 .

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();
Reply
#2

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!!!!");
    }
}
Reply
#3

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
Reply
#4

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 , 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
Reply
#5

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
Reply
#6

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
Reply
#7

Quote:
Originally Posted by Minikole
Посмотреть сообщение
Gracias por responder , 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.
Reply
#8

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");
Reply
#9

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.
Reply
#10

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

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)