VM 3.x Список всех заказов в FrontEnd

Vollanddzaft

Постоялец
Регистрация
12 Ноя 2014
Сообщения
68
Реакции
2
Добрый день,

Возник вопрос как вывести список всех заказов в меню Front Enda "Список заказов".
Фишка в чем, когда я захожу в этот пунк меню, я вижу только тот заказ, который оформил я, но если другой пользователь оформил заказ, тогда я его не увижу у себя в личном кабинете. Может есть какая то фишка, чтоб супер-админ мог видеть все заказы с внешней стороны сайта.

Нашел путь файлов, которые выводят конкретно мой список заказов /components/com_virtuemart/views/orders/tmpl/list.php

Спасибо!
 
Последнее редактирование:
Добрый день,

Возник вопрос как вывести список всех заказов в меню Front Enda "Список заказов".
Фишка в чем, когда я захожу в этот пунк меню, я вижу только тот заказ, который оформил я, но если другой пользователь оформил заказ, тогда я его не увижу у себя в личном кабинете. Может есть какая то фишка, чтоб супер-админ мог видеть все заказы с внешней стороны сайта.

Нашел путь файлов, которые выводят конкретно мой список заказов /components/com_virtuemart/views/orders/tmpl/list.php

Спасибо!
Ну, а на сколько важен функционал этой страницы?
Можно просто вытащить данные из базы напрямую и всё)

Что-то вроде этого:

Код:
<?php
    $db = JFactory::getDbo();
    //задаем переменную с текстом запроса
    $q = "SELECT * FROM #__virtuemart_orders ORDER BY #__virtuemart_orders.virtuemart_order_id DESC ";
    //выполняем запрос в БД
    $db->setQuery($q);
    //присваиваем переменной значение результата запроса (! у нас - это массив)
    $result = $db->loadAssocList(); 
    // запускаем цикл
    foreach($result as $attr) {
       // выводим значение элемента массива
       
      //Здесь раскомментируй, что бы посмотреть какие ещё данные можно зацепить.
      //echo '<pre>'; print_r($attr);  echo '</pre>';
     echo ''.$attr['order_number'].'<br>';
     
    }
?>

Дальше я думаю додумаешь сам.
 
Последнее редактирование модератором:
Код:
<?php

    $db = JFactory::getDbo();
    //задаем переменную с текстом запроса
    $q = "SELECT * FROM #__virtuemart_orders, #__virtuemart_order_userinfos ORDER BY #__virtuemart_orders.virtuemart_order_id ASC ";
   
    //выполняем запрос в БД
    $db->setQuery($q);
    //присваиваем переменной значение результата запроса (! у нас - это массив)
    $result = $db->loadAssocList();
    // запускаем цикл

    foreach($result as $attr) {
       
       
       // выводим значение элемента массива
      //Здесь раскомментируй, что бы посмотреть какие ещё данные можно зацепить.
      //echo '<pre>'; print_r($attr);  echo '</pre>';
echo "<table>";
     echo "<tr><td>".$attr['order_number']."</td><td>".$attr['first_name']."</td><td>".$attr['order_total']."</td><td>".$attr['phone_1']."</td><td>".$attr['email']."</td><td>".$attr['created_on'],'<br/>';
    echo "</table>";
   
    }

?>

Вот что у меня получилось, но данные дублируются, скажите как можно этого избежать?
 
Тебе SQL запрос надо правильно построить. То есть объединить данные на этапе их выборки.

Вот пример, когда будет номер заказа + телефон без дублей.

SELECT #__virtuemart_orders.order_number,
#__virtuemart_order_userinfos.phone_1
FROM
#__virtuemart_orders, #__virtuemart_order_userinfos
WHERE
#__virtuemart_orders.virtuemart_user_id =
#__virtuemart_order_userinfos.virtuemart_user_id;

По примеру, через запятую указывай то, что надо.
Вот почитать на эту тему: Для просмотра ссылки Войди или Зарегистрируйся
 
Большое спасибо!Очень полезная статья!Сейчас изучаю. Возник один вопрос:
Код:
$q = "SELECT #__virtuemart_orders.order_number,
                 #__virtuemart_order_userinfos.phone_1,
                 #__virtuemart_order_userinfos.email,
                 #__virtuemart_order_userinfos.first_name,
                 #__virtuemart_order_userinfos.created_on
                 
                 
                 
          FROM
                 #__virtuemart_orders RIGHT OUTER JOIN #__virtuemart_order_userinfos
          ON
                 #__virtuemart_orders.virtuemart_order_id =
                 #__virtuemart_order_userinfos.virtuemart_order_id;";

И я хочу так же вывести "virtuemart_order_order_total" - но когда я его пытаюсь вывести, выдается ошибка!Проверив таблицы, оказалось что в #__virtuemart_orders - нет virtuemart_order_order_total, подскажите как вывести это значение?

Вопрос снят!Разобрался)
SELECT -
#__virtuemart_orders.order_total - нужно было вписать!

Подскажите еще такое вот:
Код:
     echo "<tr><th>"
   .$attr['order_number']."</th><th>"
         .$attr['first_name']."</th><th>"
         .$attr['phone_1']."</th><th>"
         .$attr['email']."</th><th>"
         .$attr['created_on']."</th><th>"
         .$attr['order_total']."</th><tr>";
Можно ли первое значение где order_number - сделать как ссылку на редактирование заказа? Сколько я не пробовал, не выходит, подскажите синтаксис для реализации этого!
Спасибо!

Если кому интересно, у меня вышло реализовать задуманное!
Огромное спасибо "Menro" - что откликнулся и помог с решением задачи!
Вот и собственно код:
Код:
<?php


    $db = JFactory::getDbo();
    //задаем переменную с текстом запроса
    $q = "SELECT #__virtuemart_orders.order_number,
                 #__virtuemart_orders.order_total,
                 #__virtuemart_order_userinfos.phone_1,
                 #__virtuemart_order_userinfos.email,
                 #__virtuemart_order_userinfos.first_name,
                 #__virtuemart_order_userinfos.created_on     
                 
             
          FROM
                 #__virtuemart_orders RIGHT OUTER JOIN #__virtuemart_order_userinfos
          ON
                 #__virtuemart_orders.virtuemart_order_id =
                 #__virtuemart_order_userinfos.virtuemart_order_id;";
   
    $db->setQuery($q);

    $result = $db->loadAssocList();
echo "<table id='orders-custom'><tr><th>Номер заказа</th><th>Имя</th><th>Телефон</th><th>Email</th><th>Дата создания</th><th>Сумма заказа</th></tr>";
    foreach($result as $attr) {
        echo "<tr><th>"
    . '<a href="/список-заказов/number/'. $attr['order_number'] . '.html">' . $attr['order_number'] . ' </a>' ."</th><th>";
    echo "" .$attr['first_name']."</th><th>";
    echo "" .$attr['phone_1']."</th><th>";
    echo "" .$attr['email']."</th><th>";
    echo "" .$attr['created_on']."</th><th>";
    echo "" .$attr['order_total']."</th><tr>";
    }
    echo "</table>";
?>
 
Последнее редактирование модератором:
Большое спасибо!Очень полезная статья!Сейчас изучаю. Возник один вопрос:
Код:
$q = "SELECT #__virtuemart_orders.order_number,
                 #__virtuemart_order_userinfos.phone_1,
                 #__virtuemart_order_userinfos.email,
                 #__virtuemart_order_userinfos.first_name,
                 #__virtuemart_order_userinfos.created_on
               
               
               
          FROM
                 #__virtuemart_orders RIGHT OUTER JOIN #__virtuemart_order_userinfos
          ON
                 #__virtuemart_orders.virtuemart_order_id =
                 #__virtuemart_order_userinfos.virtuemart_order_id;";

И я хочу так же вывести "virtuemart_order_order_total" - но когда я его пытаюсь вывести, выдается ошибка!Проверив таблицы, оказалось что в #__virtuemart_orders - нет virtuemart_order_order_total, подскажите как вывести это значение?

Вопрос снят!Разобрался)
SELECT -
#__virtuemart_orders.order_total - нужно было вписать!

Подскажите еще такое вот:
Код:
     echo "<tr><th>"
   .$attr['order_number']."</th><th>"
         .$attr['first_name']."</th><th>"
         .$attr['phone_1']."</th><th>"
         .$attr['email']."</th><th>"
         .$attr['created_on']."</th><th>"
         .$attr['order_total']."</th><tr>";
Можно ли первое значение где order_number - сделать как ссылку на редактирование заказа? Сколько я не пробовал, не выходит, подскажите синтаксис для реализации этого!
Спасибо!

Если кому интересно, у меня вышло реализовать задуманное!
Огромное спасибо "Menro" - что откликнулся и помог с решением задачи!
Вот и собственно код:
Код:
<?php


    $db = JFactory::getDbo();
    //задаем переменную с текстом запроса
    $q = "SELECT #__virtuemart_orders.order_number,
                 #__virtuemart_orders.order_total,
                 #__virtuemart_order_userinfos.phone_1,
                 #__virtuemart_order_userinfos.email,
                 #__virtuemart_order_userinfos.first_name,
                 #__virtuemart_order_userinfos.created_on   
               
           
          FROM
                 #__virtuemart_orders RIGHT OUTER JOIN #__virtuemart_order_userinfos
          ON
                 #__virtuemart_orders.virtuemart_order_id =
                 #__virtuemart_order_userinfos.virtuemart_order_id;";
 
    $db->setQuery($q);

    $result = $db->loadAssocList();
echo "<table id='orders-custom'><tr><th>Номер заказа</th><th>Имя</th><th>Телефон</th><th>Email</th><th>Дата создания</th><th>Сумма заказа</th></tr>";
    foreach($result as $attr) {
        echo "<tr><th>"
    . '<a href="/список-заказов/number/'. $attr['order_number'] . '.html">' . $attr['order_number'] . ' </a>' ."</th><th>";
    echo "" .$attr['first_name']."</th><th>";
    echo "" .$attr['phone_1']."</th><th>";
    echo "" .$attr['email']."</th><th>";
    echo "" .$attr['created_on']."</th><th>";
    echo "" .$attr['order_total']."</th><tr>";
    }
    echo "</table>";
?>

Можно сделать ссылку на редактирование заказа:

Код:
<?php


    $db = JFactory::getDbo();
    //задаем переменную с текстом запроса
    $q = "SELECT #__virtuemart_orders.order_number,
                 #__virtuemart_orders.order_total,
                 #__virtuemart_orders.virtuemart_order_id,
                 #__virtuemart_order_userinfos.phone_1,
                 #__virtuemart_order_userinfos.email,
                 #__virtuemart_order_userinfos.first_name,
                 #__virtuemart_order_userinfos.created_on  
              
          
          FROM
                 #__virtuemart_orders RIGHT OUTER JOIN #__virtuemart_order_userinfos
          ON
                 #__virtuemart_orders.virtuemart_order_id =
                 #__virtuemart_order_userinfos.virtuemart_order_id;";

    $db->setQuery($q);

    $result = $db->loadAssocList();
echo "<table id='orders-custom'><tr><th>Номер заказа</th><th>Имя</th><th>Телефон</th><th>Email</th><th>Дата создания</th><th>Сумма заказа</th></tr>";
    foreach($result as $attr) {
        echo "<tr><th>"
    . '<a href="/administrator/index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id='. $attr['virtuemart_order_id'] . '">' . $attr['order_number'] . ' </a>' ."</th><th>";
    echo "" .$attr['first_name']."</th><th>";
    echo "" .$attr['phone_1']."</th><th>";
    echo "" .$attr['email']."</th><th>";
    echo "" .$attr['created_on']."</th><th>";
    echo "" .$attr['order_total']."</th><tr>";
    }
    echo "</table>";
  
  
?>
 
Назад
Сверху