Forum Webscript.Ru
Программирование => PHP => Тема начата: Vad от 12 Июня 2003, 22:13:58
-
Помогите уже замучался
нужно объединить все товары определенной категории в сравнительную таблицу типа
характеристика 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
-
Так делай, раз надо.. В чём проблема? Что именно ты не можешь сделать? Или ты хочешь чтобы над твоей работой другие думали?
[off]Надо открывать отдельный форум по логике...[/off]
-
Vad
Neter прав, ничего архисложного нету.
Сядь, подумай, набросай на бумаге приблизительный план, если в уме сложно. Ну а потом начинай реализовывать.
Подсказка: характеристики одного товара выводить, надеюсь, получается?
Ну тогда что мешает вывести одновременно характеристики двух?
-
примерно такой запрос сделай
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
вывод надеюсь сам напишешь ? (если этот запрос верный)
-
проблема была в том что название характеристики товара выводится не один раз а столько сколько товара а как от этого избавится я не знал
сейчас попробую этот запрос может дело в ORDER BY
-
Непомогло
Подскажите как сделать чтобы название характеристики выводилось только один раз
Вот мой код
$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." |
";
}
выводит
цвет белый
цвет черный
а надо
цвет черный белый
блин чувствую что задача не сложной но никак не вдуплю. помогите
-
Да уж :)
Самый элементарный способ через 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." |
";
}
-
Vad
прояви немножко программистской фантазии :
$result = mysql_query ($sql);
$last_char = \'\';
echo "";
while($row = mysql_fetch_array($result) )
{
$prop_name = $row[\'prop_name\'];
$values = $row[\'value\'];
if ($last_char != $prop_name) {
if (empty($last_char)) {
echo "";
} else {
echo "
";
}
$last_char = $prop_name;
echo "".$prop_name." | ";
}
echo "".$values." | ";
}
echo "
";
примерно так. Код я конечно же не проверял =)
-
Да, и ещё. ORDER BY - это сортировка результатов. Если она тебе нужна то лучше явно указать ASC (возрастание) или DESC (убывание)
Пример:
ORDER BY id, name ASC
-
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
-
Макс Я просто обьяснил зачем используется ORDER BY чтобы подобных вопросов больше не возникало.
Vad:
проблема была в том что название характеристики товара выводится не один раз а столько сколько товара а как от этого избавится я не знал
сейчас попробую этот запрос может дело в ORDER BY