[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод информации из списка товаров...
aveBen
Народ, нужна помощь!


/**
* Метод генерации списка товаров выбранной категории
* @param int $id
* @param int $num_words
* @return void
*/
public function createListCollect($id, $num_words)
{
$this->res = mysqlQuery("SELECT `id`, `name`, `photo`,
SUBSTRING_INDEX(`description`,' ', ". $num_words .") AS `description`
FROM `". IRB_DBPREFIX . $this->table ."`
WHERE `id_parent` = ".(int)$id ."
ORDER BY `sort` ASC "
);
}



Товары с генерировал, вывел на экран. Выбираем один товар и получаем множество таблиц, в которых разные виды товаров.

Т.е. Выбрали Категорию -> Выбрали Товар -> Смотрим какие товары есть данного вида.

Прошу помощи, пожалуйста!



Спустя 13 минут, 56 секунд (19.01.2012 - 00:48) m4a1fox написал(а):
Не увидел ни одного знака вопроса. В чем помочь?

Спустя 21 минута, 11 секунд (19.01.2012 - 01:09) aveBen написал(а):
Да, мозг настолько кипит что вопрос не составил даже грамотно.

Вот какая структура сайта.
Все продукты -> Фрукты -> Яблоко а далее идут на странице из БД выводы таблиц, яблоко зеленое, яблоко антоновка и т.д.

Я сделал запрос так (последний в списке):

class collection_model
{

public $table, $cat_name;
private $res;

/**
* Конструктор
* @param string $table
*/
public function __construct($table)
{
$this->table = $table;
}

/**
* Метод генерации списка категорий
* @param int $id
* @return void
*/
public function createCategory($id = '')
{

$res = mysqlQuery("SELECT *
FROM `". IRB_DBPREFIX . $this->table ."_cat`
ORDER BY `id` ASC "
);

if(empty($id))
$this->res = $res;
else
$this->cat_name = mysql_result($res, 0, 'name');
}

/**
* Метод генерации списка товаров выбранной категории
* @param int $id
* @param int $num_words
* @return void
*/
public function createListCollect($id, $num_words)
{
$this->res = mysqlQuery("SELECT `id`, `name`, `photo`,
SUBSTRING_INDEX(`description`,' ', ". $num_words .") AS `description`
FROM `". IRB_DBPREFIX . $this->table ."`
WHERE `id_parent` = ".(int)$id ."
ORDER BY `sort` ASC "
);
}


/**
* Метод генерации видов выбранного товара
* @param int $id
* @return void
*/

public function createCountryCollect($id, $num_words)
{
$this->res = mysqlQuery("SELECT `id`, `name`, `image`,
SUBSTRING_INDEX(`description`,' ', ". $num_words .") AS `description`
FROM `". IRB_DBPREFIX . $this->table."_country`
WHERE `id_parent` = ".(int)$id."
ORDER BY `sort` ASC "
);
}

/**
* Метод представления.
* @param string $template
* @param string $mod
* @param string $flag
* @return string
*/
public function createRows($template, $mod, $flag = false)
{
$rows = '';
$tpl = getTpl($template);

while($row = mysql_fetch_assoc($this->res))
{
$row['name'] = htmlspecialchars($row['name']);
$row['description'] = nl2br(htmlspecialchars($row['description']));
$row['src'] = !empty($row['photo']) ? IRB_HOST . 'upload/' . $row['photo'] : '';
if(!$flag)
$row['url'] = href('mod='. $mod, 'parent='. $row['id']);
else
$row['url'] = href('mod='. $mod, 'id='. $row['id']);

$rows .= parseTpl($tpl, $row);
}
return $rows;
}
}


Вот контроллер:

$collect = new collection_model('collection');

if($GET['mod'] === 'cat')
{
$collect -> createCategory($GET['parent']);
$collect -> createListCollect($GET['parent'], IRB_CONFIG_NUM_WORDS);
$back_link = '<a href="'. href('mod=all') .'">'. IRB_LANG_BACK .'</a>';
$cat_name = $collect -> cat_name;
$collection = $collect -> createRows('collection/rows', 'country', true);

}
elseif($GET['mod'] === 'country')
{
$collect -> createListCollect($GET['parent'], IRB_CONFIG_NUM_WORDS);
$collect -> createCountryCollect($GET['parent'], IRB_CONFIG_NUM_WORDS);
$back_link = '<a href="'. href('mod=cat', 'parent='. $GET['parent']) .'">'. IRB_LANG_BACK .'</a>';
$cat_name = $collect -> cat_name;
$collection = $collect -> createRows('collection/rows', 'country', true);

}
else
{
$collect -> createCategory();
$cat_name = $back_link = '';
$collection = $collect -> createRows('collection/rows', 'cat');
}


include IRB_ROOT .'/skins/tpl/collection/show.tpl';


Все выводит архитектурно как я и задумывал, НО выводит он все виды товаров на всех категориях, т.е. выбрал я яблоки а там и антоновка и бананы, вобщем все виды. Почему-то сортировки нету по выбранным товарам...

Где ошибка моя?

Спустя 32 минуты, 8 секунд (19.01.2012 - 01:42) m4a1fox написал(а):
Ваша ошибка, ИМХО в том что может быть нужно использовать при запросе к БД оператор WHERE?

Спустя 25 минут, 31 секунда (19.01.2012 - 02:07) aveBen написал(а):
Цитата (m4a1fox @ 18.01.2012 - 22:42)
Ваша ошибка, ИМХО в том что может быть нужно использовать при запросе к БД оператор WHERE?

А как же тогда скрипт определит, какую информацию выводить?

Он же мне в списки с фруктами тогда и колбасу выведет?! А мне нужно что бы все было отсортировано:

Продукты -> Фрукты -> Яблоки -> Яблоки зеленые, Яблоки Антоновка
Продукты -> Фрукты -> Виноград -> Синий виноград, зеленый виноград, Киш Миш
родукты -> Овощи -> Круглые -> Помидоры
Продукты -> Мясная лавка -> Отбивные -> Баранина

А в таком случае будет

Продукты -> Фрукты -> Яблоки -> Яблоки зеленые, Яблоки Антоновка, Помидоры, Баранина.
Продукты -> Овощи -> Круглые -> Яблоки зеленые, Яблоки Антоновка, Помидоры, Баранина
Продукты -> Мясная лавка -> Отбивные -> Яблоки зеленые, Яблоки Антоновка, Помидоры, Баранина


WHERE делает сортировку по id_parent из таблицы С видами фруктов в таблицу с Яблоками, Яблоки идут и проверяют правильно ли запрос вывел их из БД, да, действительно мы из Фруктовой таблицы...


А в моем коде Яблоки зеленые и Яблоки Антоновка верно попали, но если я добавлю во Фрукты бананы, они выведутся в яблоках...

Спустя 12 часов, 33 минуты, 14 секунд (19.01.2012 - 14:40) nugle написал(а):
aveBen

покажите структуру таблиц и примеры

Спустя 6 часов, 55 минут, 13 секунд (19.01.2012 - 21:36) aveBen написал(а):
Вот структура...



-- phpMyAdmin SQL Dump
-- version 3.2.3
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jan 19, 2012 at 10:35 PM
-- Server version: 5.1.40
-- PHP Version: 5.3.3

SET SQL_MODE=
"NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `myfbsite`
--

-- --------------------------------------------------------

--
-- Table structure for table `footballbadges_collection`
--

CREATE TABLE IF NOT EXISTS `footballbadges_collection` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`id_parent` int(5) NOT NULL,
`club_id` int(5) NOT NULL,
`name` varchar(250) NOT NULL,
`description` text NOT NULL,
`photo` varchar(250) NOT NULL,
`sort` int(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_parent` (`id_parent`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

--
-- Dumping data for table `footballbadges_collection`
--

INSERT INTO `footballbadges_collection` (`id`, `id_parent`, `club_id`, `name`, `description`, `photo`, `sort`) VALUES
(1, 1, 1, 'ФК Спартак Москва', 'Значки футбольного клуба Спартак Москва.', 'clubs/russia/FC_Spartak_Moscow_Emblem.jpg', 1),
(2, 1, 2, 'ФК Локомотив Москва', 'Значки футбольного клуба Спартак Москва.', 'clubs/russia/FC_Lokomotiv_Moscow_Emblem.png', 2),
(9, 2, 0, 'ФК Ноттингем Форест', 'Значки футбольного клуба Ноттингем Форест.', 'clubs/russia/FC_Spartak_Moscow_Emblem.jpg', 0);

-- --------------------------------------------------------

--
-- Table structure for table `footballbadges_collection_cat`
--

CREATE TABLE IF NOT EXISTS `footballbadges_collection_cat` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(250) NOT NULL,
`description` text NOT NULL,
`photo` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

--
-- Dumping data for table `footballbadges_collection_cat`
--

INSERT INTO `footballbadges_collection_cat` (`id`, `name`, `description`, `photo`) VALUES
(1, 'Россия', 'Значки российских футбольных клубов.', 'category/Flag_of_Russia.png'),
(8, 'Польша', 'Значки украинских футбольных клубов', 'category/Flag_of_Poland.png'),
(2, 'Англия', 'Значки английских футбольных клубов', 'category/Flag_of_England.png'),
(7, 'Украина', 'Значки украинских футбольных клубов', 'category/Flag_of_Ukraine.png'),
(6, 'Испания', 'Значки испанских футбольных клубов.', 'category/Flag_of_Spain.png'),
(5, 'Италия', 'Значки итальянских футбольных клубов.', 'category/Flag_of_Italy.png'),
(9, 'Бразилия', 'Значки украинских футбольных клубов', 'category/Flag_of_Brazil.png');

-- --------------------------------------------------------

--
-- Table structure for table `footballbadges_collection_country`
--

CREATE TABLE IF NOT EXISTS `footballbadges_collection_country` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`id_parent` int(5) NOT NULL,
`name` varchar(250) NOT NULL,
`description` text NOT NULL,
`image` varchar(50) NOT NULL,
`sort` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `footballbadges_collection_country`
--

INSERT INTO `footballbadges_collection_country` (`id`, `id_parent`, `name`, `description`, `image`, `sort`) VALUES
(1, 1, 'Первый знак ФК Спартак Москва', 'Первый знак ФК Спартак Москва\r\nПервый знак ФК Спартак Москва', 'clubs/russia/FC_Spartak_Moscow_Emblem.jpg', 1),
(2, 1, 'Второй знак ФК Спартак Москва', 'Второй знак ФК Спартак Москва\r\nВторой знак ФК Спартак Москва\r\n', 'clubs/russia/FC_Spartak_Moscow_Emblem.jpg', 2);

-- --------------------------------------------------------

--
-- Table structure for table `footballbadges_news`
--

CREATE TABLE IF NOT EXISTS `footballbadges_news` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL,
`title` varchar(250) NOT NULL,
`text` text NOT NULL,
`public` int(1) NOT NULL,
`photo` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;

--
-- Dumping data for table `footballbadges_news`
--

INSERT INTO `footballbadges_news` (`id`, `date`, `title`, `text`, `public`, `photo`) VALUES
(4, '2010-08-08 15:27:26', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Spartak_Moscow_Football_Club(Russia)_0017.JPG'),
(22, '2011-09-08 15:27:26', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Chelsea_Football_Club(England)_001.JPG'),
(23, '2011-09-08 17:26:28', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Spartak_Moscow_Football_Club(Russia)_0017.JPG'),
(24, '2011-09-08 15:27:26', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Chelsea_Football_Club(England)_001.JPG'),
(25, '2011-09-08 17:26:28', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Spartak_Moscow_Football_Club(Russia)_0017.JPG'),
(26, '2011-09-08 15:27:26', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Chelsea_Football_Club(England)_001.JPG'),
(27, '2011-09-08 17:26:28', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Spartak_Moscow_Football_Club(Russia)_0017.JPG'),
(28, '2011-09-08 15:27:26', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, '/cat/Chelsea_Football_Club(England)_001.JPG'),
(29, '2011-09-08 17:26:28', '«Спартак» (Москва). Цифровые итоги 2011 года', 'Московский "
Спартак", крайне неудачно пройдя первый круг, во втором сильно прибавил, что позволило ему вплотную приблизиться к первой тройке команд. Посмотрим, как выглядят его показатели.', 1, 'cat/Spartak_Moscow_Football_Club(Russia)_0017.JPG');

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.