Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по вёрстке Как правильно получить данные с MySql?

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


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

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

$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
1

126 | 28

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

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


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

Otto61
23

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

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

Otto61
23

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

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

Proff
1

126 | 28

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

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

Otto61
23

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

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

Proff
1

126 | 28

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

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

Otto61
23

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

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

fanaticus
4

57 | 7

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

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

Otto61
23

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

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

fanaticus
4

57 | 7

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
23

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

fanaticus,

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

Otto61
23

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

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

fanaticus
4

57 | 7

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

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

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

fanaticus
4

57 | 7

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

Otto61,

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

fanaticus
4

57 | 7

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

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

Otto61
23

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
4

57 | 7

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
23

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

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

Otto61
23

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

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

Otto61
23

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
23

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

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

fanaticus
4

57 | 7

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

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

fanaticus
4

57 | 7

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

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

fanaticus
4

57 | 7

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

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

Otto61
23

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

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

fanaticus
4

57 | 7

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

fanaticus33rus

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

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