- Регистрация
- 26.05.15
- Сообщения
- 546
- Реакции
- 476
- Баллы
- 63
Появилась задача.
Нужно вывести значок в личку для лидеров викторины, находящихся в ТОП-10.
Делаю запрос к БД
Но что-то я делаю не так. Или всё совсем не так...
Запрос работает. Но выводит не совсем то, что мне нужно. Выбирается 10-ка в произвольном порядке, а не первых 10.
К примеру, у меня:
У лидера ТОПа получается не 1 место, а 6е...
Делал так:
заменял на
Не работает. Выводит
Как я понимаю, запрос срабатывает для того пользователя, чья личка просматривается.
Значит мне сам ник и не нужен. Достаточно получить только его место в ТОПе от 1 до 10 (или от 0 до 9).
Ну и для информации: - у тех, кого нет ответов в викторине выводится:
Теперь собственно вопросы:
1. Как правильно составить запрос, чтобы получить только номер места пользователя (владельца профиля) в 10-ке лидеров ТОПа?
2. Как в таких случаях исправлять кодировку кириллицы (на будущее может пригодится)?
Нужно вывести значок в личку для лидеров викторины, находящихся в ТОП-10.
Делаю запрос к БД
PHP:
if ($current_user->registered) {
require_once $data_path.'quiz/init.php';
require_once $quiz_config_file;
if (mysql_connect($quiz_config['db_server'], $quiz_config['db_user'], $quiz_config['db_pass']) && mysql_select_db($quiz_config['db_name'])) {
$sql = 'SELECT user_name FROM '.$quiz_config['db_prefix'].'quiz_full_stat WHERE user_id='.intval($user_id).' LIMIT 10';
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
var_dump($row);
}
}
Но что-то я делаю не так. Или всё совсем не так...
Запрос работает. Но выводит не совсем то, что мне нужно. Выбирается 10-ка в произвольном порядке, а не первых 10.
К примеру, у меня:
Хотя реально у меня не 3е место, а 22е и, по идее, мой ник не должен вообще учитываться.array(2) { [0]=> string(3) "LML" ["user_name"]=> string(3) "LML" }
У лидера ТОПа получается не 1 место, а 6е...
И тут сразу - вторая проблема. Несоответствие кодировки для русских ников.array(2) { [0]=> string(6) "??????" ["user_name"]=> string(6) "??????" }
Делал так:
PHP:
$res = mysql_query($sql);
заменял на
PHP:
$res = mysqli_query($sql, "SET NAMES 'utf8' COLLATE 'cp1251_general_ci'");
$res = mysqli_query($sql, "SET CHARACTER SET 'cp1251'");
Не работает. Выводит
Хотя, похоже, это мне и не нужно. :)))
Как я понимаю, запрос срабатывает для того пользователя, чья личка просматривается.
Значит мне сам ник и не нужен. Достаточно получить только его место в ТОПе от 1 до 10 (или от 0 до 9).
Ну и для информации: - у тех, кого нет ответов в викторине выводится:
bool(false)
Теперь собственно вопросы:
1. Как правильно составить запрос, чтобы получить только номер места пользователя (владельца профиля) в 10-ке лидеров ТОПа?
2. Как в таких случаях исправлять кодировку кириллицы (на будущее может пригодится)?
Последнее редактирование: