Автор Тема: объединение нескольких товаров в таблицу  (Прочитано 4512 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Помогите уже замучался
нужно объединить все товары определенной категории в сравнительную таблицу типа

характеристика 1    |   продукт 1    |    продукт 2 и т.д.
характеристика 2    |   продукт 1    |    продукт 2 и т.д.

Кол-во товаров заранее не известно

структура базы:

products
prod_id         |       prod_name       |      prod_category

properties - свойства товаров
prop_id         |       prop_name

prod_values - значение свойств
product        |        property            |      value

Заранее огромное спасибо

Примерно должно получиться так http://stibetherm.gr/english/products/solar_systems_1.html

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #1 : 12 Июня 2003, 22:56:35 »
Так делай, раз надо.. В чём проблема? Что именно ты не можешь сделать? Или ты хочешь чтобы над твоей работой другие думали?

[off]Надо открывать отдельный форум по логике...[/off]
Мне тормоз послужил толчком...

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
объединение нескольких товаров в таблицу
« Ответ #2 : 12 Июня 2003, 23:00:49 »
Vad
Neter прав, ничего архисложного нету.
Сядь, подумай, набросай на бумаге приблизительный план, если в уме сложно. Ну а потом начинай реализовывать.
Подсказка: характеристики одного товара выводить, надеюсь, получается?
Ну тогда что мешает вывести одновременно характеристики двух?
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #3 : 12 Июня 2003, 23:15:02 »
примерно такой запрос сделай
SELECT
  prop.prop_name,
  pv.value
FROM
  properties prop,
  prod_values pv,
  products prod
WHERE
  prod.prod_id = pv.product AND
  prop.prop_id = pv.properties AND
  prod.prod_category = 123456
ORDER BY prop.prop_id, prod.prod_id

вывод надеюсь сам напишешь ? (если этот запрос верный)
« Последнее редактирование: 13 Июня 2003, 10:57:58 от Макс »
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
объединение нескольких товаров в таблицу
« Ответ #4 : 13 Июня 2003, 20:42:19 »
проблема была в том что название характеристики товара выводится не один раз а столько сколько товара а как от этого избавится я не знал
сейчас попробую этот запрос может дело в ORDER BY

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
объединение нескольких товаров в таблицу
« Ответ #5 : 13 Июня 2003, 21:38:20 »
Непомогло
Подскажите как сделать чтобы название характеристики выводилось только один раз
Вот мой код

                     $sql="
                     SELECT prop_name,value
                        FROM properties,prod_values,products
                        WHERE
                             prod_id = product AND
                             prop_id = property AND
                             prod_cat_id = 1
                        ORDER BY prop_id, prod_id
                     ";
                     $result = mysql_query ($sql);
                     while($row = mysql_fetch_array($result) )
                     {
                             $prop_name = $row[\'prop_name\'];
                             $values = $row[\'value\'];
                          echo "".$prop_name."".$values."";
                     }

выводит
цвет        белый
цвет        черный

а надо
цвет         черный          белый

блин чувствую что задача не сложной но никак не вдуплю. помогите

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #6 : 13 Июня 2003, 23:07:20 »
Да уж :)
Самый элементарный способ через temp-переменную..

$sql="SELECT prop_name,value
FROM properties,prod_values,products
WHERE
prod_id = product AND
prop_id = property AND
prod_cat_id = 1
ORDER BY prop_id, prod_id";

$result = mysql_query ($sql);
$temp = "";
while($row = mysql_fetch_array($result) )
{
$prop_name = ($temp != $row[\'prop_name\']) ? $temp=$row[\'prop_name\'] : "";
$prop_name = $row[\'prop_name\'];
$values = $row[\'value\'];
echo "".$prop_name."".$values."";
}
Мне тормоз послужил толчком...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #7 : 13 Июня 2003, 23:11:26 »
Vad
прояви немножко программистской фантазии :

$result 
mysql_query ($sql);
$last_char = \'\';
echo "<table>";
while($row = mysql_fetch_array($result) ) 

   $prop_name = $row[\'prop_name\'];
   $values = $row[\'value\'];
   if ($last_char != $prop_name) {
      if (empty($last_char)) {
        echo "<tr>";
      } else {
        echo "</tr><tr>";
      }
      $last_char = $prop_name;
      echo "<td>".$prop_name."</td>";
   }
   echo "<td>".$values."</td>";
}
echo "</tr></table>";

примерно так. Код я конечно же не проверял =)
« Последнее редактирование: 13 Июня 2003, 23:25:25 от Макс »
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #8 : 13 Июня 2003, 23:21:31 »
Да, и ещё. ORDER BY - это сортировка результатов. Если она тебе нужна то лучше явно указать ASC (возрастание) или DESC (убывание)

Пример:
ORDER BY id, name ASC
Мне тормоз послужил толчком...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #9 : 13 Июня 2003, 23:29:46 »
Neter
в данном запросе сортировка нужна чтобы вывести записи в удобном для вывода порядке:
------------------------------------------
характеристика 1 | продукт 1
характеристика 1 | продукт 2
характеристика 1 | продукт 3
------------------------------------------
характеристика 2 | продукт 1
характеристика 2 | продукт 2
характеристика 2 | продукт 3
------------------------------------------
характеристика 3 | продукт 1
характеристика 3 | продукт 2
характеристика 3 | продукт 3

В этом случае удобнее выводить таблицу в виде
------------------------------------------
характеристика 1 | продукт 1 | продукт 2 | продукт 3
характеристика 2 | продукт 1 | продукт 2 | продукт 3
характеристика 3 | продукт 1 | продукт 2 | продукт 3
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких товаров в таблицу
« Ответ #10 : 14 Июня 2003, 00:15:44 »
Макс Я просто обьяснил зачем используется ORDER BY чтобы подобных вопросов больше не возникало.
Цитировать
Vad:
проблема была в том что название характеристики товара выводится не один раз а столько сколько товара а как от этого избавится я не знал
сейчас попробую этот запрос может дело в ORDER BY
Мне тормоз послужил толчком...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28