Добавление в несколько таблиц

sapar

Guest
Добавление в несколько таблиц

Добрый вечер всем, есть проблема с которой сам не смог разобратся.

Суть :

Имеються 4 таблицы
alva_cat
alva_pole
alva_pole_text
alva_products


В alva_cat добавляем категорию.
У каждой категории есть свои поля, их добавляем в alva_pole с id категории.
После добавляем продукт в категорию, при добавление мы заполняем поля с alva_pole, данные с полей alva_pole добавляются в alva_pole_text с id продукта и id поля, в поле alva_products добавляем статичные поля (имя, цена, позиция)
--
-- Структура таблицы `alva_cat`
--

CREATE TABLE `alva_cat` (
`id` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`descr` text NOT NULL,
`order` int(100) NOT NULL default '0',
`src` varchar(50) NOT NULL default '',
`width` int(11) NOT NULL default '0',
`height` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE
-- --------------------------------------------------------

--
-- Структура таблицы `alva_pole`
--

CREATE TABLE `alva_pole` (
`id` int(100) NOT NULL auto_increment,
`cat_id` int(100) NOT NULL default '0',
`name` text NOT NULL,
`vaj` int(2) default NULL,
PRIMARY KEY (`id`)
) ;

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

--
-- Структура таблицы `alva_pole_text`
--

CREATE TABLE `alva_pole_text` (
`id` int(100) NOT NULL auto_increment,
`pole_id` int(100) NOT NULL default '0',
`prod_id` int(100) NOT NULL default '0',
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ;

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

--
-- Структура таблицы `alva_products`
--

CREATE TABLE `alva_products` (
`id` smallint(10) NOT NULL auto_increment,
`name` varchar(250) default NULL,
`descr` text,
`gost` text,
`cat_id` smallint(5) default NULL,
`price` float NOT NULL default '0',
`hot` smallint(2) NOT NULL default '0',
`tech` text,
`sort` smallint(5) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `prod_id` (`id`)
) ;

Помогите разобратся с этим делом.
Честно сам не смог разобраться.

И еще вопрос : Какая функция отвечает за разбиение массива(текстовой) на части?
Спасибо.
 

Фанат

oncle terrible
Команда форума
есть проблема с которой сам не смог разобратся.
ты подробно описал таблицы, но забыл описать проблему.
попробуй еще раз.

Какая функция отвечает за разбиение массива(текстовой) на части?
текстовая массивов не бывает.
и на части массив рабивать не нужно.
задай вопрос простым языком, без использования красивых слов.
 

sapar

Guest
Фанат извини забыл дописать!
Проблема:
Я не могу передать в alva_pole_text данные, id поля и id продукта.
id продукта узнаю при помощи mysql_insert_id();
id полей и данные я так понимаю нужно записать в массив.

Но вот как это все впихать в базу не могу разобратся :(
 

Фанат

oncle terrible
Команда форума
зачем записать в массив?
почему бы не получить id поля так же, как и id продукта - через mysql_insert_id()?
если ты можешь "запихать" в одну таблицу, то какая проблема сделать то же самое со второй?
 

sapar

Guest
Фанат
id поля уже известно, ведь поля привязываются к категории.
При добавление продукта выводится список этих полей с <textarea>. Вообщем в рисунке все видно :)

То что выделено жирным это поля которые вносили для данной категории.
 

sapar

Guest
Фанат
На рисунке просто показал наглядный пример того что id поля уже известно, осталось только информацию внесенные в данные поля запихать в месте с их id в alva_pole_text. Но как это реализовать не знаю:(
 

Фанат

oncle terrible
Команда форума
я правильно тебя понимаю, что у тебя проблема подставить переменную с "id поля " в строку запроса?
 

sapar

Guest
Фанат
да ты правильно меня понимаешь :) + текст который вводился.
 

Фанат

oncle terrible
Команда форума
а при добавлении в таблицу alva_cat у тебя таких проблем нет?
то есть одну переменную в одну строку ты подставить можешь, а другую переменную в другую строку - нет?
 

sapar

Guest
Фанат
При чем тут alva_cat, alva_cat используется только для создания категорий. Затем к этим категориям добавляются поля в alva_pole с id категории.
 

Фанат

oncle terrible
Команда форума
при том, что разве при добавлении в alva_cat ты запрос не составляешь? Если на составляешь, то как запись попадает в базу?
Если составляешь, то какая проблема составить еще один запрос?
 

sapar

Guest
Фанат
Добавление категории
if ($action == 'addcat') {
mysql_query ("insert into alva_cat set name='$name', descr='$descr'");
$action = "";
}

Добавление поля
if ($action == 'addpole') {
mysql_query ("insert into alva_pole set cat_id=$razd_id, name='$name', vaj='$vaj'");
$action = "pole";
}

Добавления продукта
Форма добавления
$res = mysql_query ("select * from alva_pole where cat_id='$razd_id'");
while ($row = mysql_fetch_array ($res)) {
if ($row[vaj]==0) {$name="$row[name]";

}
else {
$name="<b>$row[name]</b>";
}

print " <tr><td width=100><p>$name: </td><td><textarea name=pole[$i] rows=2 cols=30 class=\"editclass\">$row[text]</textarea></p></td></tr>";
}
Запрос на добавления


if ($action == 'addprod') {
mysql_query ("insert into alva_products set cat_id=$razd_id, name='$name', descr='$descr', price='$price', hot='$hot'");
$prod_id = mysql_insert_id();
Что нужно дальше написать чтобы данные с pole добавились бы в alva_pole_text
 

Фанат

oncle terrible
Команда форума
то есть, ты хочешь сказать, что не понимаешь смысла вот этого, например, кода - что он делает, и зачем:
mysql_query ("insert into alva_cat set name='$name', descr='$descr'");
?
 

sapar

Guest
Фанат
if ($action == 'addprod') {
mysql_query ("insert into alva_products set cat_id=$razd_id, name='$name', descr='$descr', price='$price', hot='$hot'");
$prod_id = mysql_insert_id();
дальше нужно бы написать функцию обработки pole
после того как функция отработала добавляем в базу
mysql_query ("insert into alva_pole_text set text=$pole2, prod_id=$prod_id");

Какую функцию нужно написать я не могу понять!
 

Фанат

oncle terrible
Команда форума
не надо никаких функций!
то тебе массив, то функция!
ЗАЧЕМ?
почему ПРОСТО не написать запрос и не вписать в него нужные данные?
 

Фанат

oncle terrible
Команда форума
ну и что?
почему нельзя "несколько данных" подставить в запрос?
 

sapar

Guest
Фанат
ладно обьясни если не трудно каким образом ?
Напиши свое видиние данной задачи
 

Фанат

oncle terrible
Команда форума
вот я тебе клянусь - я не издеваюсь
я на самом деле так и не понял ни задачи, ни проблем твоих.

я не понимаю, почему ты можешь составить один запрос и не можешь составить другой.
 
Сверху