каталог на mysql

kostya1082

Новичок
каталог на mysql

есть таблица cat_form(id,name)-категории пунктов
1)Общие характеристики
2) Память
form(id,name,cat)-пункты описания
1) Разрешение снимка*1
2) Вес*1
3) Встроенная*2
таблица opis сами описания
id opis_1 opis_2 opis_3 opis_n и так далее
мне нужно чтобы выводилось так
категории пунктов
пункты - сами описания
пункты - сами описания
категории пунктов
пункты - сами описания

как это сделать


я сделал так что в одной таблицы и категории пунктов и пункты описания
только сделал столбик num где указанна позиция пункта и категории пунктов
тоесть если я добавил новый пункт то он выведется в конце а мне наприме нужно что он вывелся в середине или еще где тоесть нужно постоянно менять столбик num
 

Кром

Новичок
>нужно постоянно менять столбик num

kostya1082
И в чем проблема? Нужно, так меняй.
udate table set num=num+1 where num > num_of_new_string
 

kostya1082

Новичок
дело в том что я делаю каталог товаров
в одной таблице название категорий пунктов
а в другой должны быть названия пунктов
а в третьей наполнение
например


Общие-главная категория пунктов
Длина - пункт
Ширина- пункт
Высота
Вес (c батареей)
Питание - главная категория пунктов
Тип батареи
Продолжительность воспроизведения



я сделал сейчас что и категории пунктов и пункты ысе в одной таблице но со столбиком num которому идет сортировка
например
-Общие-
Длина
Ширина
Высота
-Дисплей плеера-
Файловая система
Типы файлов
Встроенная память
Особенности
а теперь мне нужно добавить Вес (c батареей) в Общие
получается что Вес (c батареей) становится в конец по этому мне нужно поенять поле num чтобы они встало после Высота

вообщем оправданно ли это то что я хочу вынести из общей таблицы(где и пункты и категории вместе) в две разные
если оправданно то как
 

Кром

Новичок
Ты давай завязывай с этими потоками сознания. Знаки препинания проходил в школе?
 

MajestiC

Пых
Перевожу на русский понятный мне =)

Есть таблица с категориями, есть таблица с пунктами категорий. Раньше все было в одной таблице.

У пунктов есть поле num по которому они сортируются для каждой категории.

"Общие
получается что Вес (c батареей) становится в конец по этому мне нужно поенять поле num чтобы они встало после Высота"
Да. А как ты хотел? =)

вообщем оправданно ли это то что я хочу вынести из общей таблицы(где и пункты и категории вместе) в две разные
если оправданно то как
Смотря откуда посмотреть =) В чем-то да. В чем то нет. Много факторов на это влияет.
 

kostya1082

Новичок
просто если делать на две таблицы там получается много запросов
и мало того я не знаю как это осуществить
тоесть нужно вытащить из базы Названия и id из категорий
потом сделать массив в котором от еденицы до кол-ва категорий
в этом массиве сделать запрос на выборку пунктов где есть совпадения поляс cat==id(категории) но как туда и еще приделать наполнение с таблицы opis а как это сделать я пока не знаю

-~{}~ 07.02.06 14:56:

а как бы вы сделали если б вам нужно было написать каталог mp3 плееров?
 

MajestiC

Пых
2 таблицы. А насчет запроса, то зачем делать много запросов. Все можно сделать намного легче. Учите SQL.

Неплохо бы было увидеть вашу структуру БД и что вы хотите выбрать. Но только в читабельном варианте.
 

kostya1082

Новичок
таблица cat_form
---------------------
id | name
---------------------
1 | Общие
2 | Память


таблица form

----------------------------------
id | name | num| cat_form|
----------------------------------
1 | Вес | | 1
2 |Встр. | | 2

таблица opis

------------------------------
id | opis_1| opis_2| opis_3 и так далее
-------------------------------
1 | 145 грамм| 32 мб|

вывод

---Общие----
Вес - 145 грамм
----Память----
Встр. - 32 мб
 

MajestiC

Пых
Ой... А че-ж у тебя таблица opis такая-то.... Это ж ужас ходячий.

Я бы ее переделал так :
id, form_id, value

Тогда бы код был:

PHP:
$res = mysql_query("SELECT * FROM cat_form");
while ($row = mysql_fetch_object($res))
{
    echo "---".$row->name."---";
    $res2 = mysql_query("SELECT form.name,opis.value FROM form LEFT JOIN opis ON (form.id=opis.form_id) WHERE form.catform = ".$row->id." ORDER BY form.num");
    while ($row2 = mysql_fetch_object($res2))
    {
        echo $row2->name." - ".$row2->value;
    }
}
 

kostya1082

Новичок
я что за value
да и сколько запросов максимально можно сделать чтобы не выгнали с хостинга
 

MajestiC

Пых
value = это будет значение (145 гр или 32 мб)

хехе, если у вас не 10000000000 товаров, то за выборку из 3 таблиц данным методом, вас точно не выгонят.
 

MajestiC

Пых
id | form_id | value
1 | 1 | 145 грамм
2 | 2 | 32 Мб.


То есть полей будет всего 3. А записей много. Вместо множества полей value1,value2,value3 ....
 
Сверху