Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по вёрстке » Как правильно получить данные с MySql?

Как правильно получить данные с MySql?


     26.10.2016    Общие вопросы по вёрстке, Общие вопросы по PHP, MySQL, Ламерские вопросы    2105

вопрос
Никак не могу вывести данные с бд. Знаю, что неправильно делаю, помогите пожалуйста.

$rowU = $db->super_query( "SELECT * FROM `users` WHERE `balance` = '{$row['id']}'" );

    $tpl->set( '{fix}', stripslashes( $rowU['balance'] ) );


Проще говоря:есть таблица под названием users, которая содержит id и баланс пользователя. Как правильно настроить запрос? То есть, узнаем id пользователя в списке, а потом выводим столбец с содержимым (баланс)

Ответил: fanaticus



    $sql_balanse = $db->super_query("SELECT b.*, u.* FROM " . PREFIX . "_user_balance b LEFT JOIN " . PREFIX . "_users u ON (b.uid=u.user_id) WHERE u.user_id = '{$row['user_id']}'");

    if($sql_balanse) {
        $tpl->set( '{realmoney}', stripslashes( $sql_balanse['balance'] ) );
    }   else {
        $tpl->set( '{realmoney}', "0" );
    }

Вывод не из users

26 комментариев

Proff
Юзер

Proff - 26 октября 2016 13:07 -

а так?
$rowU = $db->super_query( "SELECT * FROM `users` WHERE id = '" . $row['id'] . "'" );
$tpl->set( '{fix}', $rowU['balance'] );


зачем stripslashes не понял.

Otto61
Юзер

Otto61 - 26 октября 2016 15:19 -

Proff, работает если у пользователя id = 0(криво), если больше 0, то вообще не работает. Я неправильно описал ситуацию. Есть у меня база данных test, в ней таблица money, из этой таблицы надо вывести баланс и id пользователя.

Otto61
Юзер

Otto61 - 26 октября 2016 15:29 -

Проще говоря, есть база test, в ней таблица users, надо вывести в шаблон значения username,id,balance, и всё это по отдельности( в шаблоне)

Proff
Юзер

Proff - 27 октября 2016 07:01 -

Если тебе надо вывести id из твоей таблицы, то тогда откуда берется $row['id'] и с чем его в таком случае сравнивать-то?
Какое-то поле тебе должно быть известно, что бы его использовать в условии WHERE твоего запроса.

Otto61
Юзер

Otto61 - 27 октября 2016 11:47 -

я же писал, что неправильно делаю. ты решил мне напомнить что-ли?

Proff
Юзер

Proff - 27 октября 2016 16:19 -

Вот давай без нервов, в 2х строках кода неправильного много. Просто если у тебя нет входных данных, то вся затея на провал обречена.
Ниже у тебя правильно спросили, в каком файле правки вносишь?
Если ты вывести хочешь баланс только самому пользователю, то используй массив $member_id, в нём хранится вся инфа авторизованного пользователя. Например его id - $member_id['user_id'].

Otto61
Юзер

Otto61 - 27 октября 2016 21:35 -

попробую что-нибудь сделать, лучше бы показал пример

fanaticus
Юзер

fanaticus - 27 октября 2016 11:51 -

В каком файле ты правишь ?

Otto61
Юзер

Otto61 - 27 октября 2016 19:04 -

profile.php, можно было выводить из dle_users
$tpl->set( '{realmoney}', stripslashes( $row['realmoney'] ) );
, но мне надо выводить из другой таблицы

fanaticus
Юзер

fanaticus - 27 октября 2016 22:25 -


CREATE TABLE IF NOT EXISTS `PREFIX_user_balance` (
  `bid` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `balance` int(11) NOT NULL,
  PRIMARY KEY (`bid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2;

Otto61
Юзер

Otto61 - 27 октября 2016 22:56 -

fanaticus,

а можешь расписать строки? чтобы я понимал как это работает.

Otto61
Юзер

Otto61 - 27 октября 2016 23:20 -

fanaticus,
так, стоп, лол. что-то я поспешил, это же вставка в саму базу данных, зачем мне это ?

fanaticus
Юзер

fanaticus - 27 октября 2016 23:11 -

Какие строки ?

В скайп напиши - fanaticus33rus

fanaticus
Юзер

fanaticus - 27 октября 2016 23:21 -

Otto61,

Какая вставка ? вы о чем ?

fanaticus
Юзер

fanaticus - 27 октября 2016 23:22 -

Я ответил на ваш вопрос. Привел пример. Все!

Otto61
Юзер

Otto61 - 27 октября 2016 23:30 -

Proff,
Дак а какая разница?
$tpl->set( '{realmoney}', stripslashes( $row['realmoney'] ) );

$tpl->set( '{realmoney}', - тег для шаблона userinfo.tpl
stripslashes( $row['realmoney'] ) - вывод значения "realmoney", но это работает только с dle_users. Мне надо вывести не из dle_users, ну а например из acc значения id, username, balance.

fanaticus
Юзер

fanaticus - 27 октября 2016 23:37 -

Я уже ответил на вопрос.

 $sql_balanse = $db->super_query("SELECT b.*, u.* FROM " . PREFIX . "_user_balance b LEFT JOIN " . PREFIX . "_users u ON (b.uid=u.user_id) WHERE u.user_id = '{$row['user_id']}'");

    if($sql_balanse) {
        $tpl->set( '{realmoney}', stripslashes( $sql_balanse['balance'] ) );
    }   else {
        $tpl->set( '{realmoney}', "0" );
    }

Вывод не из users


Не видно ответа ? По аналогии сделаете из любой таблице!

Otto61
Юзер

Otto61 - 28 октября 2016 00:03 -

да я только потом заметил

Otto61
Юзер

Otto61 - 28 октября 2016 00:05 -

fanaticus,
$tpl->set( '{realmoney}', "0" );
зачем значению "realmoney" приравнивать 0? Но а так, ничего кроме "realmoney" не работало, и то показывает всем 0. Все равно ничего не могу понять, буду сам разбираться.

Otto61
Юзер

Otto61 - 28 октября 2016 00:20 -

Смотрел другую тему, где ответили вот таким примером
    $rowU = $db->super_query( "SELECT * FROM `money` WHERE `username` = '{$row['username']}'" );

    $tpl->set( '{balance}', stripslashes( $rowU['balance'] ) );

money - таблица
username - имя пользователя
[balance] - вывод содержимого столбца
{balance} - тег в шаблоне
всё это дело не работает, думаю, что надо изменить вот эту часть кода
WHERE `username` = '{$row['username']}'" );

Всё получается очень сложно. Потому что есть таблица dle_users, и money. У каждой из этих таблиц есть свои значения username, id. Кто-то мог бы сказать, чувак, в чем проблема? Проблема в том, что плагин подключаемые к базе данных создаем свою таблицу money со своими значениями username, id, когда в dle_users - name, user_id. Получается полная каша, хотелось бы перенести колонки money и balance в dle_users, но тогда и плагин не будет работать. Тогда и смысла нет подключения, потому что id пользователей могут различаться в колонках. Придется тогда прощаться с плагином, другого решения не вижу.

Otto61
Юзер

Otto61 - 28 октября 2016 01:25 -

Хотя есть альтернатива. ID пользователей буду в любом случае разными, но ники будут одинаковыми. Что можно сделать? Выводить balance из таблицы money, но при этом проверять name в dle_users и username в money. И когда никнеймы будут совпадать, тогда и выводить в userinfo.tpl. Вопрос, как это оформить правильно?

fanaticus
Юзер

fanaticus - 28 октября 2016 05:47 -

Мой код работает на 100%. Проверял. Вы делаете что то не так.

fanaticus
Юзер

fanaticus - 28 октября 2016 07:53 -

Ид пользоваться определяется так - $row['user_id']

fanaticus
Юзер

fanaticus - 28 октября 2016 07:55 -

В скайп добавь. Завтра смогу помочь. Объясню как и что.

Otto61
Юзер

Otto61 - 28 октября 2016 08:16 -

а какой у тебя логин? такой-же как и на сайте fanaticus?

fanaticus
Юзер

fanaticus - 28 октября 2016 10:22 -

fanaticus33rus

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

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

наверх