PDA

Просмотр полной версии : [Прочее] Помогите пожалуйста с выводом даных



check
13.01.2018, 13:30
Здавствуйте делаю запрос в бд и необходимо чтобы днные из бд отоброджались в диалоге покажите где я допускаю ошибку?

Запрос


if (strcmp("/r", cmdtext, true, 10) == 0)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
mysql_function_query(mysql_connect_ID, "SELECT `type`, `id` FROM `inv` WHERE `name` = '%s'", true, "player", "sd",name, playerid);
return 1;
}

forward player(name,playerid);
public player(name,playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(!rows)
{
new stringer[512];
for(new i = 0; i < rows ; i ++ )
{
new id,type;
id = cache_get_field_content_int(i, "id"); //
type = cache_get_field_content_int(i, "type"); //
format(stringer, sizeof(stringer), "\n %d %d ", stringer, id, type);
}
ShowPlayerDialog(playerid,0000,DIALOG_STYLE_TABLIST_HEADERS,"-" ,stringer,"-","-");

}
else {
}
return 1;
}

Batya_Montes
13.01.2018, 13:48
mysql_function_query(mysql_connect_ID, "SELECT `type`, `id` FROM `inv` WHERE `name` = '%s'", true, "player", "sd",name, playerid);
вот здесь, что это вообще такое?


static const fmt_query[] = "...";
static query[sizeof(fmt_query) + (...)];
query[0] = EOS;
mysql_format(...);
mysql_function_query(..., query, true, "player", "si", name, playerid);

и вот тут:

if(!rows)
простите, что? вы хоть сами понимаете условие? если нет строк в бд, то вы пытаетесь что-то прочитать из нее, magic?

check
13.01.2018, 14:00
Данный запрос работает (я проверял в бд )но не показывает что там есть if(rows) исправил ничего не понялось

Batya_Montes
13.01.2018, 14:08
Данный запрос работает (я проверял в бд )но не показывает что там есть if(rows) исправил ничего не понялось

ну добавь игрока с именем %s и будет показывать...

check
13.01.2018, 14:11
Подскажи тогда как исправить дальше?

Batya_Montes
13.01.2018, 14:13
static const fmt_query[] = "SELECT `type`, `id` FROM `inv` WHERE `name` = '%e'";
static query[sizeof(fmt_query) + (-2 + MAX_PLAYER_NAME)];
query[0] = EOS;
mysql_format(mysql_connect_ID, query, sizeof(query), fmt_query, PlayerInfo[playerid][Name]); // PlayerInfo[playerid][Name] <- ник игрока
mysql_function_query(mysql_connect_ID, query, true, "player", "si", PlayerInfo[playerid][Name], playerid); // PlayerInfo[playerid][Name] <- ник игрока

check
13.01.2018, 14:15
Спасибо а как дальше вывести эти данные?чтоб показывало в диалоге

Batya_Montes
13.01.2018, 14:17
forward player(name[],playerid);
public player(name[],playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
new stringer[512];
for(new i = 0; i < rows ; i ++ )
{
new id,type;
id = cache_get_field_content_int(i, "id"); //
type = cache_get_field_content_int(i, "type"); //
format(stringer, sizeof(stringer), "\n %d %d ", stringer, id, type);
}
ShowPlayerDialog(playerid,0000,DIALOG_STYLE_TABLIST_HEADERS,"-" ,stringer,"-","-");

}
return 1;
}

check
13.01.2018, 14:18
Спасибо!сейчас попробую

- - - Добавлено - - -

Все так же осталось просто пустое диалоговое окно открывается((

Batya_Montes
13.01.2018, 14:25
format(stringer, sizeof(stringer), "\n %s %d %d ", stringer, id, type);

check
13.01.2018, 14:28
Тоже самое(

Batya_Montes
13.01.2018, 14:29
покажи что у тебя вышло в итоге

check
13.01.2018, 14:31
forward player(name[],playerid);
public player(name[],playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
new stringer[512];
for(new i = 0; i < rows ; i ++ )
{
new id,type;
id = cache_get_field_content_int(i, "id"); //
type = cache_get_field_content_int(i, "type"); //
format(stringer, sizeof(stringer), "\n %s %d %d ", stringer, id, type);
}
ShowPlayerDialog(playerid,0000,DIALOG_STYLE_TABLIST_HEADERS,"-" ,stringer,"-","-");

}
return 1;
}

Batya_Montes
13.01.2018, 14:35
не правильно выводишь диалог, ида 0000 не бывает, а так же тип диалога DIALOG_STYLE_TABLIST_HEADERS - не правильно формируешь

check
13.01.2018, 14:49
Изменил но теперь если в таблице 2 или более выводится все ровно только одно


forward player(name[],playerid);
public player(name[],playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
new stringer[512];
for(new i = 0; i < rows ; i ++ )
{
new id,type;
id = cache_get_field_content_int(i, "id"); //
type = cache_get_field_content_int(i, "type"); //
format(stringer, sizeof(stringer), "%d %d\n", id, type);
}
ShowPlayerDialog(playerid, 12, DIALOG_STYLE_LIST, "inv",stringer,"Select", "Cancel");

}
return 1;
}

Batya_Montes
13.01.2018, 15:12
ну так ты форматируешь stringer заново и в итоге в конце останется последнее значение

format(stringer, sizeof(stringer), "%s%d %d\n", stringer, id, type);
ну а лучше - strcat

check
13.01.2018, 15:20
Можно пример?

Angeeel
13.01.2018, 23:37
forward player(name[],playerid);
public player(name[],playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
new stringer[512];
new string[512];
for(new i = 0; i < rows ; i++)
{
new id,type;
id = cache_get_field_content_int(i, "id"); //
type = cache_get_field_content_int(i, "type"); //
format(stringer, sizeof(stringer), "%d %d\n", id, type);
strcat(string, stringer);
}
ShowPlayerDialog(playerid, 12, DIALOG_STYLE_LIST, "inv",string,"Select", "Cancel");
}
return 1;
}

DeimoS
14.01.2018, 07:23
Для чего вызывать две нативки вместо одной? Как уже показали выше, скреплять можно прямо через format

forward player(name[],playerid);
public player(name[],playerid)
{
new rows = cache_get_row_count();
if(rows)
{
new string[512],
id,
type;
for(new i = 0; i < rows; i++)
{
id = cache_get_field_content_int(i, "id"); //
type = cache_get_field_content_int(i, "type"); //
format(string, sizeof(string), "%s%d %d\n", string, id, type);
}
ShowPlayerDialog(playerid, 12, DIALOG_STYLE_LIST, "inv", string, "Select", "Cancel");
}
return 1;
}