Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) MySQL Вывод информации с другой базы данных

Вывод информации с другой базы данных


     14.05.2014    MySQL    1654

вопрос
Здравствуйте, начнем, постараюсь объяснить подробно. У меня DLE + CS сервер + Hlstats, мне нужно в профиль дле вывести данные с базы данных статистики Hlstats.

Я вот делал по этой статье, поэтому у меня код такой же, только изменил статистику http://www.amxserv.net/forum/viewthread.php?thread_id=5081.

Я вывожу данные с одной таблицы в таблицу dle_users со сравнением, т.е по крону у меня сравнивает логин пользователя и логин игрока в статистики, с помощью этих данных я присваиваю id, точно такой же способ используется для вывода фрагов, код ниже:

$db->query("UPDATE dle_users, hlstats_PlayerNames SET dle_users.plrid=hlstats_PlayerNames.playerId WHERE dle_users.name = hlstats_PlayerNames.name");
$db->query("UPDATE dle_users, hlstats_PlayerNames SET dle_users.kills=hlstats_PlayerNames.kills WHERE dle_users.plrid = hlstats_PlayerNames.playerId");


Вопрос в следующем: Я же могу эти данные вывести на прямую без записи в свою таблицу dle_users и без крона? Подскажите как :)

Т.е задача: Вывести фраги в профиль пользователя из таблицы hlstats_PlayerNames и поля kills (в запросе нужно сравнить логины).

Ответа пока нет


Комментарии пользователей (8)

Kolya groza morey
30

301 | 95

Kolya groza morey - 14 мая 2014 10:29 - Юзер

Я бы делал так:
1. Запретил бы регистрацию на сервере.
2. Переписал бы регистрацию на дле чтобы одновременно регистрировал и на сайте и на сервере.
3. И тогда бы по полю логин (или другому общему полю) вытягивал бы данные базы данных сервера

Artyom91
2

157 | 21

Artyom91 - 14 мая 2014 10:46 - Юзер

Так и есть, у меня на сервере авторизация по логину DLE, используется поле name, я переписал плагин, но сейчас всё таки вернул, так как лучше использовать отдельный ник на CS сервере, теперь пользователи могут его сами вписать при регистрации или в редактировании профиля, и изменить потом невозможно, скрыл это поле когда оно заполнено.

Всё это хорошо что вы сказали, но вопрос в другом, мне нужно логику понять как вытаскивать данные из другой таблицы сравнивая логины.

Например: Есть пользователь admin в DLE, он играет под этим ником в CS и вся стата пишется на этот ник, нужно сравнить логины DLE и CS и вытащить по ниме поле kills например.

Эта задача реализована у меня в коде выше, но я хочу сделать без участия крона, так как эта операция проиходит по нему, записывает поле kills статистики в поле DLE потом уже оно появляется на сайте, а мне нужно что бы это поле сразу бралось из статистики.

--------------------------------------------------

Там сбор статистики идет через perl скрипты, я вот думаю может вообще переписать эти PERL скрипты под запросы в DLE, и сделать что-то мини модуля, но это геморно, и боюсь не справлюсь один )

Artyom91
2

157 | 21

Artyom91 - 15 мая 2014 12:01 - Юзер

Запрос вроде сделал правильно, как мне теперь через row вывести из нужной таблицы?
$row = $db->super_query( "SELECT * FROM hlstats_Players WHERE dle_users.name = hlstats_Players.lastName" );


Вот у меня допустим такое

$tpl->set( '{skill}', stripslashes( $row['skill'] ) );


Этот запрос скорей всего будет братся из dle_users, а мне нужно hlstats_Players (mysql запрос выше).

Artyom91
2

157 | 21

Artyom91 - 15 мая 2014 13:16 - Юзер

Ну запрос 100% правельный, в phpmyadmin его выполняю, показывает данные из таблиц которые мне нужны.

В шаблон что-то не выводит...

Artyom91
2

157 | 21

Artyom91 - 15 мая 2014 13:41 - Юзер

Ребата, помогайте, всё правильно, вот запрос которые выводит данные правильно, со сравнением, как мне надо.

$row2 = $db->query( "SELECT * FROM hlstats_Players, " . USERPREFIX . "_users WHERE hlstats_Players.lastName = dle_users.auth" );


Вот пытаюсь вывести в профиле пользователя, но не выводит:

$tpl->set( '{skill}', $row2['skill']);


Что не так?

Artyom91
2

157 | 21

Artyom91 - 15 мая 2014 15:08 - Юзер

Всем спасибо, не туда запрос вставлял, надо было в просмотр профиля, ура, я крутой программист )

Artyom91
2

157 | 21

Artyom91 - 15 мая 2014 17:06 - Юзер

Ребята, помогите, уже два часа копаюсь, выборка рабочая, но выводит одинаковые данные для всех пользователей, как-то нужно что-то еще сравнить, что бы результат был один.

Artyom91
2

157 | 21

Artyom91 - 15 мая 2014 17:37 - Юзер

Вроде разобрался, так правильно?

$auth = ( $row['auth'] );
$hlx = $db->super_query( "SELECT * FROM hlstats_Players, " . USERPREFIX . "_users WHERE hlstats_Players.lastName = dle_users.auth  AND hlstats_Players.lastName = '$auth'" );

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы