Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставка данных в две таблицы...
 
 автор: Spyder   (02.06.2006 в 09:43)   письмо автору
 
 

Хочу вставить данные в две таблице, но не получается.
Структура баз

Таблица 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)   письмо автору
 
   для: Spyder   (02.06.2006 в 09:43)
 

см. http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=18471

   
 
 автор: Spyder   (02.06.2006 в 11:05)   письмо автору
 
   для: 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);


?>

Заранее спасибо!

   
 
 автор: Trianon   (02.06.2006 в 11:42)   письмо автору
 
   для: Spyder   (02.06.2006 в 11:05)
 

Так а он это и делает.
Раздел каталога берется вот этой строкой.
$cat = intval($_REQUEST['cat']);
Или Вас не устраивает, что он показывает продукты не только в разделе, но и в во всех подразделах?

   
 
 автор: spyder   (02.06.2006 в 11:56)   письмо автору
 
   для: Trianon   (02.06.2006 в 11:42)
 

Меня устраеват.
Вы меня не так поняли. Теперь у меня 3 таблицы и в третей таблице указывается в скольких категориях показывать товар. Я так понимаю нужно передать id категории, потом вытащить из третей таблицы все товары у которых стоит номер категории, и по этим данным вытаскивать товар из таблицы продукт.
Надеюсь что понятно объяснил.

   
 
 автор: Trianon   (02.06.2006 в 12:10)   письмо автору
 
   для: 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)"

   
 
 автор: Trianon   (02.06.2006 в 12:12)   письмо автору
 
   для: spyder   (02.06.2006 в 11:56)
 

В третьей талице нет первичного ключа (id_loc NOT NULL AUTO_INCREMENT) . Без него Вы с ней замучаетесь

   
 
 автор: Spyder   (02.06.2006 в 12:16)   письмо автору
 
   для: Trianon   (02.06.2006 в 12:12)
 

нет. Только 2 столбца категорий и номер продукции.
А почему с ней замучаешся, объсните пожалуйста.
А чета ваш код не правильно работает он все равно непоказывает товар в нескольких категориях, только в одной.

   
 
 автор: Spyder   (02.06.2006 в 14:22)   письмо автору
 
   для: Spyder   (02.06.2006 в 12:16)
 

поднимаю тему

   
 
 автор: Trianon   (02.06.2006 в 14:34)   письмо автору
 
   для: Spyder   (02.06.2006 в 12:16)
 

Я исправил запрос:
loc_prod_cat.id_catalog as id_catalog


Сами виноваты. :) Я ж говорил, что колонку id_catalog из таблицы product после переноса из нее информации в таблицу loc_prod_cat нужно будет выкинуть.
Выкинули бы - тут же получили б ошибку в запросе.

   
 
 автор: Spyder   (02.06.2006 в 14:41)   письмо автору
 
   для: Trianon   (02.06.2006 в 14:34)
 

>Сами виноваты. :) Я ж говорил, что колонку id_catalog из
>таблицы product после переноса из нее информации в таблицу
>loc_prod_cat нужно будет выкинуть.
>Выкинули бы - тут же получили б ошибку в запросе.
вы поняли что сами написали?

Сейчас все работает.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования