|
|
|
| Хочу вставить данные в две таблице, но не получается.
Структура баз
Таблица loc_prod_cat
id_product int(11)
id_catalog int(11)
Таблица product
id_product int(11)
note tinytext
name tinytext
hide enum('show', 'hide')
pos int(11)
id_catalog int(8)
Вот примерно сделал но он не работает
$query = "INSERT INTO product,loc_prod_cat VALUES (product.id_product AS '0', product.note AS '".$_POST['note']."', product.name AS '".$_POST['name']."', product.id_catalog AS '".$_GET['id']."', log_prod_cat.id_product AS '".$per."', log_prod_cat.id_catalog AS '".$_GET['id']."')";
|
| |
|
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 10:18)
| | спасибо то что надо.
Trianon подскажи как твой код передалать чтоб он сначало проверял номер определенной категории в таблице loc_prod_cat и вытаскивал все id_product относящиеся к выбираемой категории и после этого он вытаскивал данные из таблицы продукты.
Вот твой код.
<?
include 'config.php';
function readalltree($tab, $id, $parent, $filter='')
{
$sql = "SELECT $id, $parent FROM $tab $filter";
$res = mysql_query($sql);
if(!$res)
{
echo "SQL error in ".nl2br($sql)." : <br>".mysql_error();
return false;
}
$tree = array();
while($row = mysql_fetch_row($res))
{
$id = intval($row[0]); $pid = intval($row[1]);
$pars = isset($tree[$pid]) ? $tree[$pid] : array();
$pars[] = $id;
$tree[$pid] = $pars;
}
return $tree;
}
function selectnodes(&$tree, $pid, $lev=0)
{
$s = array();
$s[$pid] = $lev;
if(isset($tree[$pid]))
foreach($tree[$pid] as $id)
foreach(selectnodes($tree, $id, $lev+1) as $k => $v)
$s[$k] = $v;
return $s;
}
function printnodes(&$tree, &$catnames, &$catprods, $id, $lev = 0)
{
echo str_repeat(" . ", $lev+1);
$nm = $catnames[$id];
echo "<a href=?cat=$id>[$nm]</a><a href=addfrom.php?cat=$id>+</a><br>\r\n";
if(!empty($catprods[$id]))
foreach($catprods[$id] as $pid => $pin)
{
echo str_repeat(" . ", $lev+1);
echo " : ";
echo "<a href=productinfo.php?prod=$pid style='text-decoration:none; color:black;'>$pin</a><br>\r\n";
}
if(!empty($tree[$id]))
foreach($tree[$id] as $nid)
printnodes($tree, $catnames, $catprods, $nid, $lev+1);
}
$tree = readalltree('catalog', 'id_catalog', 'id_parent');
$cat = intval($_REQUEST['cat']);
$lev = selectnodes($tree, $cat);
$list = implode(',',array_keys($lev));
$sql = "SELECT id_catalog, name FROM catalog WHERE id_catalog IN($list)";
if(!($res = mysql_query($sql)))
echo "SQL error in ".nl2br($sql)." : <br>".mysql_error();
$catnames = array();
$catprods = array();
while($row = mysql_fetch_row($res))
{
$catnames[$row[0]] = $row[1];
$catprods[$row[0]] = array();
}
$sql = "SELECT id_product, id_catalog, name FROM product WHERE id_catalog IN($list)";
if(!($res = mysql_query($sql)))
echo "SQL error in ".nl2br($sql)." : <br>".mysql_error();
while($row = mysql_fetch_row($res))
$catprods[$row[1]][$row[0]] = $row[2];
printnodes($tree, $catnames, $catprods, $cat);
?>
|
Заранее спасибо! | |
|
|
|
|
|
|
|
для: Spyder
(02.06.2006 в 11:05)
| | Так а он это и делает.
Раздел каталога берется вот этой строкой.
$cat = intval($_REQUEST['cat']);
Или Вас не устраивает, что он показывает продукты не только в разделе, но и в во всех подразделах? | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 11:42)
| | Меня устраеват.
Вы меня не так поняли. Теперь у меня 3 таблицы и в третей таблице указывается в скольких категориях показывать товар. Я так понимаю нужно передать id категории, потом вытащить из третей таблицы все товары у которых стоит номер категории, и по этим данным вытаскивать товар из таблицы продукт.
Надеюсь что понятно объяснил. | |
|
|
|
|
|
|
|
для: spyder
(02.06.2006 в 11:56)
| | Последний запрос должен быть переделан на:
"SELECT DISTINCT
product.id_product as id_product,
loc_prod_cat.id_catalog as id_catalog,
product.name as name
FROM product JOIN loc_prod_cat ON product.id_product = loc_prod_cat.id_product
WHERE id_catalog IN ($list)"
|
| |
|
|
|
|
|
|
|
для: spyder
(02.06.2006 в 11:56)
| | В третьей талице нет первичного ключа (id_loc NOT NULL AUTO_INCREMENT) . Без него Вы с ней замучаетесь | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 12:12)
| | нет. Только 2 столбца категорий и номер продукции.
А почему с ней замучаешся, объсните пожалуйста.
А чета ваш код не правильно работает он все равно непоказывает товар в нескольких категориях, только в одной. | |
|
|
|
|
|
|
|
для: Spyder
(02.06.2006 в 12:16)
| | поднимаю тему | |
|
|
|
|
|
|
|
для: Spyder
(02.06.2006 в 12:16)
| | Я исправил запрос:
loc_prod_cat.id_catalog as id_catalog
|
Сами виноваты. :) Я ж говорил, что колонку id_catalog из таблицы product после переноса из нее информации в таблицу loc_prod_cat нужно будет выкинуть.
Выкинули бы - тут же получили б ошибку в запросе. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2006 в 14:34)
| | >Сами виноваты. :) Я ж говорил, что колонку id_catalog из
>таблицы product после переноса из нее информации в таблицу
>loc_prod_cat нужно будет выкинуть.
>Выкинули бы - тут же получили б ошибку в запросе.
вы поняли что сами написали?
Сейчас все работает. | |
|
|
|