Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отображение по алфавиту производителей в joomla

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Отображение по алфавиту производителей в joomla
solovyovz
Отправлено: 27 Сентября, 2012 - 18:47:33
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




есть проблема хочу вывести производителей(авторы книг) по алфавиту модуль джумлы mod_virtuemart_manufacturers,

файл mod_virtuemart_manufacturers.php


проблема в следующем есть массив $res
Array (
[0] => stdClass Object ( [manufacturer_id] => 130 [mf_name] => --- )
[1] => stdClass Object ( [manufacturer_id] => 1020 [mf_name] => Bruno Bieri )
........
есть объекты $manufacturer
stdClass Object ( [manufacturer_id] => 130 [mf_name] => --- ) stdClass Object ( [manufacturer_id] => 1020 [mf_name] => Bruno Bieri ).............

мой план такой получить первую букву каждого автора сравнить с буквой алфавита
записать автора в массив типа
$array = array(
"а" => "автор1","автор2"
"br" => "бавтор1","бавтор2",
"c" => "вавтор1","вавтор2",
........
);
и вывести а в див с классом а
б в див с классом б и тд

начал делать пока просто сравниваю
foreach ($res as $manufacturer){

for ($i = 0; $i < count($manufacturer); $i++){

if (($manufacturer->mf_name{0}) === 'B'){echo $manufacturer->mf_name.$manufacturer->manufacturer_id.'<br/>';}
elseif(($manufacturer->mf_name{0}) === 'C'){echo $manufacturer->mf_name.$manufacturer->manufacturer_id.'<br/>';}
elseif(($manufacturer->mf_name{0}) === 'А'){echo $manufacturer->mf_name.$manufacturer->manufacturer_id.'<br/>';}
}
проблема

все те авторы, которые на английском сравниваются нормально, а те, которые на кирилице первая буква а тоесть переменная $manufacturer->mf_name{0} отображается как знак вопроса помогите разобраться!!!!

есть подозрение что проблема из-за объектов????

заранее благодарен
 
 Top
Viper
Отправлено: 28 Сентября, 2012 - 16:45:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Не замучаетесь сравнивать?

В sql сделайте запрос. Выгребите всех авторов по фамилии, сделайте группировку по ней же и обрежте до первой буквы.

Что-то типа
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT SUBSTRING(`last_name`, 0, 1) AS `last_name`
  2. FROM `table`
  3. GROUP BY `last_name`
  4. ORDER BY `last_name` DESC


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
solovyovz
Отправлено: 01 Октября, 2012 - 19:21:50
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




спасибо за ответ, но так прийдется делать запрос на каждую букву?
я пытался сделать на жабаскрипте это сильно грузит страницу так как авторов больше 200


конечный вывод всех авторов должен идти так:

{div class="0"}
А

Автор
Автор
Автор
{/div class="0"}

{div class="1"}
Б

Б-автор
Б - автор
{/div class="0"}

.............................
 
 Top
Viper
Отправлено: 02 Октября, 2012 - 12:18:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




solovyovz пишет:
прийдется делать запрос на каждую букву?
не понял. Вы получите список из того что есть и у вас не попадут в алфавит буквы с несуществующими в БД авторами.

Вторым запросом выбираете всех авторов.

И в цикле проверяете букву из первого запроса с авторами из второго. (В втором сравниваемом значении выбираете substr'ом первую букву).

Конечно есть вариант ещё проще. Выгрести всех авторов в одни массив и при проходе по массиву рисовать первую букву и дальше список на эту букву.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
solovyovz
Отправлено: 02 Октября, 2012 - 12:20:29
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




спасибо за ответ, понял буду пробовать!!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB