Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Сортировка данных из таблицы - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

[ MySQL ]
Сортировка данных из таблицы

#1
Пользователь офлайн   minor 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Нужно отсортировать и вывести результат в диалог, с этим кодом у меня выводит только последний клан, т.е 2 раза выводит один и тот же
CMD:topclans(playerid, params[])
{
	new fulldialog[600], str[60], query[128];
	fulldialog = "{FFFF00}Место\t\tНазвание[ID клана]\t\t  Респектов\n\n";
	format(query, sizeof(query), "SELECT * FROM `clans` ORDER BY `respect` DESC LIMIT 10");
	mysql_query(query);
    mysql_store_result();
    new num = mysql_num_rows();
    for(new i = 0; i < num; i++)
	{
	    new id = cInfo[num][cID];
	    new respect = cInfo[num][cRespect];
		format(str, sizeof str, "{C1C1C1}%d\t\t {FFFFFF}%s[id: %d]\t\t  {E60000}%d\n",i+1, cInfo[num][cName], id, respect);
        strcat(fulldialog, str);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid, dNull, DIALOG_STYLE_MSGBOX, "Топ 10 кланов", fulldialog, "Закрыть", "");
	return true;
}


MySQL R5, лога нет

Сообщение отредактировал minor: 16 Апрель 2018 - 15:50

0

#2
Пользователь офлайн   Skeif 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Бред какой-то
0

#3
Пользователь офлайн   minor 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSkeif (16 Апрель 2018 - 16:14) писал:

Бред какой-то

почему?
на sql нормально работает, а тут переделал под mysql и не хочет
0

#4
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Так а данные кто извлекать будет? -_-
CMD:topclans(playerid, params[])
{
	new fulldialog[600];
	fulldialog = "{FFFF00}Место\t\tНазвание[ID клана]\t\t  Респектов\n\n";
	mysql_query("SELECT * FROM clans ORDER BY respect DESC LIMIT 10");
	mysql_store_result();
	new num = mysql_num_rows(),
		buff[11],
		clan_name[/*максимальная длина имени клана*/],
		id,
		respect;
	for(new i = 0; i < num; i++)
	{
		mysql_fetch_field_row(buff, "имя_столбца_с_id");
		id = strval(buff);
		mysql_fetch_field_row(buff, "имя_столбца_с_respect");
		respect = strval(buff);

		mysql_fetch_field_row(clan_name, "имя_столбца_с_именем_клана");
		format(fulldialog, sizeof(fulldialog), "%s{C1C1C1}%d\t\t {FFFFFF}%s[id: %d]\t\t  {E60000}%d\n", fulldialog, i+1, clan_name, id, respect);
	}
	mysql_free_result();
	ShowPlayerDialog(playerid, dNull, DIALOG_STYLE_MSGBOX, "Топ 10 кланов", fulldialog, "Закрыть", "");
	return true;
}

Хотя код не будет нормально работать, если ты сохраняешь инфу о кланах только при рестарте/по таймеру. Лучше сортировать сразу на сервере
0

#5
Пользователь офлайн   minor 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (16 Апрель 2018 - 17:05) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

+
не работает, выдает 2 места(всего создано 2 клана), и информация по нулям, возился с кодом 2 часа, так и не понял в чем ошибка, запрос правильный(проверил в phpMyAdmin), видимо что то с получением
0

#6
Пользователь офлайн   minor 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
CMD:topclans(playerid, params[])
{
        new string[144];
		stringer[0] = EOS;
		mysql_query("SELECT * FROM `clans` ORDER BY `respect` DESC LIMIT 10");
        mysql_store_result();
        new num = mysql_num_rows(), buff[11], clan_name[64], id, respect;
        for(new i = 0; i < num; i++)
        {
                mysql_fetch_field_row(buff, "ID");
                id = strval(buff), printf("id: %d", id);
                mysql_fetch_field_row(buff, "respect");
                respect = strval(buff), printf("rep: %d", respect);

                mysql_fetch_field_row(clan_name, "name");
                format(string, sizeof(string), "{C1C1C1}%d\t\t {FFFFFF}%s[id: %d]\t\t  {E60000}%d\n", i+1, clan_name, id, respect);
				strcat(stringer, string);
		}
        mysql_free_result();
        ShowPlayerDialog(playerid, dNull, DIALOG_STYLE_MSGBOX, "Топ 10 кланов", stringer, "Закрыть", "");
        return 1;
}



printf
id: 0
rep: 0
id: 0
rep: 0
id: 0
rep: 0
id: 0
rep: 0


Сообщение отредактировал minor: 16 Апрель 2018 - 20:03

0

#7
Пользователь офлайн   minor 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
решение

CMD:topclans(playerid, params[])
{
        new string[144];
		stringer[0] = EOS;
		new result[250];
		strcat(stringer, "{ffff00}\tМесто\t\tКлан[id: *]\t\tРеспекты");
		mysql_query("SELECT * FROM `clans` ORDER BY `respect` DESC LIMIT 10");
        mysql_store_result();
        new num = mysql_num_rows(), clan_name[64] = "unknown", id = -1, respect = -1, d, s[24];
        for(new c = 0; c < num; c++)
        {
					 	    mysql_fetch_row_format(result, "|");
	                        sscanf(result, "p<|>is[64]s[24]iii",
									id,
									clan_name,
									s,
									d,
									d,
									respect);
			                format(string, sizeof(string), "{C1C1C1}%d\t\t {FFFFFF}%s[id: %d]\t\t  {E60000}%d\n", c+1, clan_name, id, respect);
							strcat(stringer, string);
		}
        mysql_free_result();
        ShowPlayerDialog(playerid, dNull, DIALOG_STYLE_MSGBOX, "Топ 10 кланов", stringer, "Закрыть", "");
        return 1;
}


0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей