LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 01:53:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Как в Joomla вывести данные из таблиц MySQL  (Прочитано 2582 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dmonco
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


http://0312.com.ua


« : 26.12.2009, 19:21:51 »

Делаю бонусную программу для сайта. Не получается вывести нужные данные. Либо знаний MySQL не хватает, либо PHP, либо вывод через PHP именно в Joomla... (либо плохому танцору яйяяя мешают Crazy)

Есть две таблицы:
родная таблица ВиртМарта `jos_vm_orders`, где по id юзера можно посчитать, какие покупки он сделал
и таблица `jos_vm_friends`, созданная мною, где есть привязка друзья друзей: поля id, user_id, user_friend_id

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

Например, запрос 1: выводим сначала друзей, которые под меня подписаны:

<?php
        $db =& JFactory::getDBO();
        $query =  'SELECT `user_friend_id` FROM  `jos_vm_friends` WHERE `user_id` = '.$auth['user_id'].'';
           $db =& JFactory::getDBO();
                  $result = $db->setQuery($query);
        $res =  $db->loadAssoc();
?>

Запрос 2: вывести сумму заказа по id.

<?php
        $db =& JFactory::getDBO();
        $query2 =  'SELECT SUM( order_total ) AS  `total` FROM  `jos_vm_orders` WHERE `order_status` =  "ЗД" AND `user_id` = "120"';
           $db =& JFactory::getDBO();
                  $result = $db->setQuery($query);
        $res =  $db->loadAssoc();
?>

Как объединить эти запросы и вывести сумму покупок всех моих друзей?

Заранее благодарю!

Модераторы! Не знал, куда эту тему прикрутить. Если больше к разработке подходит, прошу перенести тему и сильно не меня не матюггать  Cool
« Последнее редактирование: 26.12.2009, 19:26:03 от dmonco » Записан
beliyadm
Профи
********

Репутация: +1438/-61
Offline Offline

Пол: Мужской
Сообщений: 8893


Севастополь==Россия


« Ответ #1 : 26.12.2009, 19:31:28 »

Код
$user =& JFactory::getUser();
$db =& JFactory::getDBO();
 
$query = 'select f.user_friend_id AS fid, SUM(o.order_total) AS osun
from #__vm_friends as f
join jos_vm_orders as o on o.user_id = f.user_friend_id
where f.user_id = "'
.$user->id.'" and o.order_status =  "ЗД"
group by f.user_friend_id'
;
 
$db->setQuery($query);
$rows = $db->loadObjectList();
 
foreach ( $rows as $row )
{
echo $row->fid.' - '.$row->osun;
}

То есть - получили объект авторизованного пользователя (в запросе используем его id), написали общий запрос, берущий ID друга и сумму его объектов из второй таблицы и в цикле выводим.
Будет работать в стандартном окружении движка (компонент\модуль\плагин\шаблон), писал на глаз, в синтаксисе мог где ошибиться
Записан
dmonco
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


http://0312.com.ua


« Ответ #2 : 26.12.2009, 20:24:56 »

Принцип понял! Огромное спасибо!
Чё-то на самом деле где-то ошибочка. В мускуле проверяю:

SELECT `f.user_friend_id` AS `fid`, SUM( o.order_total ) AS `osun`
FROM `jos_vm_friends` AS `f` JOIN `jos_vm_orders` AS `o` ON `o.user_id` = `f.user_friend_id`
WHERE `f.user_id` = "131" AND `o.order_status` = "ЗО" GROUP BY `f.user_friend_id`

пишет Unknown column 'f.user_friend_id' in 'field list'
Записан
beliyadm
Профи
********

Репутация: +1438/-61
Offline Offline

Пол: Мужской
Сообщений: 8893


Севастополь==Россия


« Ответ #3 : 26.12.2009, 20:26:09 »

пишет Unknown column 'f.user_friend_id' in 'field list'
проверьте по структуре ваших таблиц, я же ее досконально не знаю, но принцип надеюсь понятен Azn
Записан
dmonco
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


http://0312.com.ua


« Ответ #4 : 30.12.2009, 02:03:11 »

Блин, знаю, что 100% какая-то мелочь, а что именно найти не получается.

Beliyadm, помогите, пожалуйста.

Пробовал разбить на части, проверить, например, таким запросом:

SELECT `user_id`, `user_friend_id`, `order_total`
FROM `jos_vm_friends`
INNER JOIN `jos_vm_orders`
ON `jos_vm_friends.user_friend_id` = `jos_vm_orders.user_id`

Выдает ошибку: #1052 - Column 'user_id' in field list is ambiguous

Структура таблиц следующая:

jos_vm_friends
   id   user_id   user_friend_id
   1   131           130
   2   131           140
   3   131           122

jos_vm_orders
   order_id   user_id   order_total
   1           130           5060.00000
   2           140           1070.00000
   3           122           2430.00000

Заранее благодарю!
Записан
beliyadm
Профи
********

Репутация: +1438/-61
Offline Offline

Пол: Мужской
Сообщений: 8893


Севастополь==Россия


« Ответ #5 : 30.12.2009, 02:09:00 »

Ну тут два варианта Azn Либо поля user_id нет ни в одной таблице, либо оно есть с таким названием в обоих таблицах, а вы в SELECT не указываете псевдоним, соответственно запрос не знает из какой таблицы брать данное поле
Записан
beliyadm
Профи
********

Репутация: +1438/-61
Offline Offline

Пол: Мужской
Сообщений: 8893


Севастополь==Россия


« Ответ #6 : 30.12.2009, 02:10:45 »

Код
SELECT f.user_id, f.user_friend_id, o.order_total
FROM jos_vm_friends AS f
INNER JOIN jos_vm_orders AS o ON f.user_friend_id = o.user_id
Записан
dmonco
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


http://0312.com.ua


« Ответ #7 : 30.12.2009, 05:13:48 »

Огромное спасибо!  Cheesy Cheesy Cheesy Cheesy Cheesy Cheesy

Всё работает чётко!

Вот окончательный вариант, может пригодится кому-то:

Код:
SELECT f.user_id, f.user_friend_id, SUM(o.order_total)
FROM jos_vm_friends AS f
INNER JOIN jos_vm_orders AS o ON f.user_friend_id = o.user_id where f.user_id = "'.$user->id.'" and o.order_status =  "ЗД"
group by f.user_friend_id

Тему можно закрывать.
Записан
nik_neman
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 61


« Ответ #8 : 27.10.2011, 19:06:50 »

А как вывести php на отдельной странице Joomla?
Подскажите, пожалуйста, принцип...
Заранее спасибо.
Записан
RoooMka
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 9


RoooM


« Ответ #9 : 12.12.2011, 05:26:59 »

Может знаете, как добавить в order.order_list.php (список продаж) столбец с названием товара или хотя бы производителя?

$list  = "SELECT #__{vm}_orders.order_id,order_status, #__{vm}_orders.cdate,#__{vm}_orders.mdate,order_total,order_currency,#__{vm}_orders.user_id, ";
$list .= "first_name, last_name FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";
$count = "SELECT count(*) as num_rows FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";

Заранее спасибо!
Записан
Mick_20
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 26


« Ответ #10 : 24.04.2012, 17:46:13 »

Ребят а как просто вывести все содержимое  таблицы?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet