Как вывести список пользователей и оформить его шаблоном XSL?

#
Как вывести список пользователей и оформить его шаблоном XSL?
Смотрите. Можно вывести список пользователей:

Откорректируйте пожалуйста, не отображаются:

<?php
$SiteUsers = new SiteUsers();
$resource = $SiteUsers->GetAllUsers();
while($row = mysql_fetch_assoc($resource))
{
echo $row[site_user_login];
}
?>

А как вывести этот вывод, с оформлением?
И еще отсортировать этот список по определенным параметрам?
Наприер:
Имя пользователя: количество комментариев, количество добавленных инфоэлементов
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
Модератор
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
1. Вы пишите
echo $row[site_user_login];
, это не верно, нужно
echo $row['site_user_login'];

3dkvadrat писал(а):
количество комментариев, количество добавленных инфоэлементов
этих данных в результирующем массиве Вы не найдете. Нужно сделать отдельно запросы и для каждого пользователя посчитать количество комментариев и количество инфоэлементов.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Не выводит список юзеров


<?php
$SiteUsers = new SiteUsers();
$resource = $SiteUsers->GetAllUsers();
while($row = mysql_fetch_assoc($resource))
{
echo $row['site_user_login'];
}
?>

Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
Модератор
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
3dkvadrat,
1. Включите в атрибутах сайта режим вывода ошибок E_ALL, тогда ВЫ будете видеть возникающие ошибки!
2. Возникают ошибки ЗАМЕЧАНИЕ: Undefined index: site_user_login
3. Необходимо указывать site_users_login, узнать все возвращаемые параметры можно с помощью print_r($row);
<?php
$SiteUsers = new SiteUsers();
$resource = $SiteUsers->GetAllUsers();
while($row = mysql_fetch_assoc($resource))
{
//print_r($row);
echo $row['site_users_login'];
}
?>
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Как же оформить список пользователей сайта?
При таком запросе:

$SiteUsers = new SiteUsers();
$resource = $SiteUsers->GetAllUsers();
while($row = mysql_fetch_assoc($resource))
{
print_r($row['site_users_login']);
}
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Ну примерно как-то так:

<?php
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');

// получим список пользователей
$resource = $SiteUsers->GetAllUsers();

// подготовим массив для генерации XML
// подробнее см. api класса ExternalXml, метод GenXml()
$users = array();
$usersCount = 0;
while ($row = mysql_fetch_assoc($resource)) {
    $usersCount++;
    $user_item = array();
    $user_item['xml_name'] = 'user';
    $user_item['attribute'] = array('id' => $row['site_users_id']);
    $user_value = array();
    foreach ($row as $key => $value) {
        if ($key != 'site_users_id') {
            $user_value['xml_name'] = $key;
            $user_value['value'] = $value;
        }
    }
    $user_item['value'] = $user_value;
    $users[] = $user_item;
}

// cгенерируем XML
$ExternalXml = &singleton('ExternalXml');
$type = 1;
$usersxml = '<?xml version="1.0" encoding="windows-1251"?><users count="'
         . $usersCount
         . '">'
         . $ExternalXml->GenXml($users, $type)
         . '</users>';

// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'XSL_для_пользователей_сайта';
echo $xsl->build($xml, $xsl_name);
?>


Естественно, шаблон "XSL_для_пользователей_сайта" предварительно должен быть создан.

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

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

   <xsl:template match="/users">
      <xsl:apply-templates select="user"/>
   </xsl:template>

   <xsl:template match="/users/user">
      <p>Идентифтикатор пользователя
         <xsl:value-of select="@id"/>,
   логин -
         <xsl:value-of select="site_users_login"/>.</p>
   </xsl:template>
</xsl:stylesheet>

Это все так, навскидку, на живой системе я не тестил, но логика именно такая и вроде ничего не забыл. Хотя может с первого раза на что-нибудь ругнется...
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Спасибо. Попробую...
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Выдает ошибку:
Fatal error: Only variables can be passed by reference in /home/renskov/top64.ru/docs/modules/Kernel/ExternalXml.class.php on line 151
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Ога, пофиксил чуток
<?php
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');

// получим список пользователей
$resource = $SiteUsers->GetAllUsers();

// подготовим массив для генерации XML
// подробнее см. api класса ExternalXml, метод GenXml()
$users = array();
$usersCount = 0;
while ($row = mysql_fetch_assoc($resource)) {
    $usersCount++;
    $user_item = array();
    $user_item['xml_name'] = 'user';
    $user_item['attribute'] = array('id' => $row['site_users_id']);
    $user_value = array();
    foreach ($row as $key => $value) {
        if ($key != 'site_users_id') {

            $node = array();           
            $node['xml_name'] = $key;
            $node['value'] = $value;
            $user_value[] = $node;

        }
    }
    $user_item['value'] = $user_value;    
    $users[] = $user_item;
}

// cгенерируем XML
$ExternalXml = &singleton('ExternalXml');
$type = 1;
$usersxml = '<?xml version="1.0" encoding="windows-1251"?><users count="'
         . $usersCount
         . '">'
         . $ExternalXml->GenXml($users, $type)
         . '</users>';

// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'XSL_для_пользователей_сайта';
echo $xsl->build($xml, $xsl_name);
?>


А XSL-шаблон тот-же
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Ничего не происходит...
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
Авторизация