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

Форум MySQL

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

 

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

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

тема: массив в запрос
 
 автор: BArt Simpson   (25.11.2005 в 10:30)   письмо автору
 
 

Есть две переменные которые учавствуют в запросе, в результате запроса получается массив который должен учавствовать в другом запросе. как это реализовать?
напрмер:


<?
$a
=1
$b
=2

$sql
="SELECT * FROM tab WHERE dev_type='$a'";
$result=mysql_query($sql);

$c=mysql_fetch_array($result); //первый массив

$sql="SELECT * FROM tab WHERE dev_type='$b";
$result=mysql_query($sql);

$d=mysql_fetch_array($result); //второй массив

//а дальше что-то типо
$sql="SELECT * FROM product, cab_type WHERE product.product_id=cab_type.cab_id AND ((cab_type.f_side='$c' AND cab_type.s_side='$d') OR (cab_type.f_side='$d' AND cab_type.s_side='$c'));";

?>


или как?

   
 
 автор: BArt Simpson   (25.11.2005 в 12:35)   письмо автору
 
   для: BArt Simpson   (25.11.2005 в 10:30)
 

или может вообще по другому?

||   cab_con_type   ||    cab_dev_con   ||    cab_dev_type   ||         cab_type         ||
===========================================================================================
||con_id | con_name || dev_id | dev_con || dev_id | dev_name || cab_id | f_side | s_side ||
===========================================================================================
||  12   |  RGB     ||   1    |   12    ||    1   |    TV    ||   540  |   12   |   13   ||
||  13   |  Scart   ||   1    |   13    ||    2   |   DVD    ||   541  |   13   |   13   ||
||       |          ||   2    |   13    ||        |          ||        |        |        ||

входят две переменные $a и $b, они являются оборудованием, т.е. TV и DVD из таблици cab_dev_type
в таблице cab_dev_con описываются возможные разёмы на этом оборудование ( cab_dev_con.dev_con=cab_con_type.con_id )
а в cab_type описываюстся кабели, где cab_id=id кабеля в каталоге, а f_side и s_side разъёмы.
и на выходе варианты, должны быть, cab_id. второй день не могу придумать ничего дельного. помогите!

   
 
 автор: cheops   (25.11.2005 в 13:31)   письмо автору
 
   для: BArt Simpson   (25.11.2005 в 12:35)
 

>и на выходе варианты, должны быть, cab_id.
Что-то не очень понятно... какая информация доступна до формирования запроса и какую информацию он должен предоставлять?

   
 
 автор: BArt Simpson   (25.11.2005 в 15:19)   письмо автору
 
   для: cheops   (25.11.2005 в 13:31)
 

Для запроса доступно "TV" и "DVD" точнее их id (cab_dev_type.dev_id) получить надо cab_id (варианты подключения)

   
 
 автор: cheops   (25.11.2005 в 18:16)   письмо автору
 
   для: BArt Simpson   (25.11.2005 в 15:19)
 

А нельзя в cab_type добавить ключ dev_id? Т.е. чуть-чуть денормализовать всё, а то получается, что необходимо через 4 таблицы путешествовать...

   
 
 автор: BArt Simpson   (28.11.2005 в 09:57)   письмо автору
 
   для: cheops   (25.11.2005 в 18:16)
 

нет, там ключом является cab_id (те ID кабеля), а остольные поля id коннекторов по которым кабель и находится

   
 
 автор: BArt Simpson   (28.11.2005 в 11:19)   письмо автору
 
   для: BArt Simpson   (28.11.2005 в 09:57)
 

В принципе менипуляции только с двумя таблицами, cab_dev_con и cab_type. остальные для вывода форм.
I. получаем две переменные (обе относятся к cab_dev_con.dev_id)
II. выбираем из cab_dev_con возможные коннекторы
III. смотрим в cab_type возможные кабели с этими коннекторами.

те к первому девайсу относятся коннекторы 12 и 13, ко второму 13 и в cab_type смотрим чот бы на одной стороне было 12 или 13 и на другой 13.

   
 
 автор: BArt Simpson   (28.11.2005 в 14:24)   письмо автору
 
   для: BArt Simpson   (28.11.2005 в 11:19)
 

пробую


<?
    
if($fdev&&$sdev)
        {
        
$sql="SELECT * FROM cab_type, cab_dev_con WHERE(((cab_dev_con.dev_id_='$fdev' AND cab_type.f_side='cab_dev_con.dev_con') AND (cab_dev_con.dev_id_='$sdev' AND cab_type.s_side='cab_dev_con.dev_con')) OR ((cab_dev_con.dev_id_='$sdev' AND cab_type.f_side='cab_dev_con.dev_con') AND (cab_dev_con.dev_id_='$fdev' AND cab_type.s_side='cab_dev_con.dev_con')))";
        
$result=mysql_query($sql);
        if(
$result)
            {
            
$num_rows mysql_num_rows($result);
            while(
$myrow=mysql_fetch_array($result))
                {
                echo 
$myrow["cab_id"]."<br> - ";
                }
            echo
"найдено ".$num_rows."<br>";
            echo
"<a href=\"./?go=cab\">вернуться к подбору</a>";
            }
        else{echo
"error query ".mysql_error();}
        }
?>


но пофигу, не работает

$num_rows = mysql_num_rows($result)

пишет ноль записей

   
 
 автор: BArt Simpson   (28.11.2005 в 16:30)   письмо автору
 
   для: BArt Simpson   (28.11.2005 в 14:24)
 

Такое ощущение что просто игнорируют, пишу тут сам себе :-)
ну да ладно,всё почти получилось,


<?
$sql
="SELECT * FROM cab_type, cab_dev_con, eccatalog_product WHERE (cab_dev_con.dev_id_='$fdev' AND cab_type.f_side=cab_dev_con.dev_con) AND (cab_dev_con.dev_id_='$sdev' AND cab_type.s_side=cab_dev_con.dev_con) AND catalog_product.product_id=cab_type.cab_id;";
?>


но вот неудача.... две переменные, с различными значениями, и оба значения должны быть выбранны из поля cab_dev_con, но так как в запросе уже написано что cab_dev_con.dev_id_='$fdev' , то cab_dev_con.dev_id_='$sdev' видно уже не хочет учитываться, вот если $fdev=$sdev, то что-то выводится (типо кабели с одинаковыми коннекторами на обоих концах). А как сделать такой же запрос, только чтоб он работал, даже, в том случае, если $fdev=!$sdev?

   
 
 автор: cheops   (28.11.2005 в 20:02)   письмо автору
 
   для: BArt Simpson   (28.11.2005 в 16:30)
 

>Такое ощущение что просто игнорируют, пишу тут сам себе :-)
>ну да ладно,всё почти получилось,
Нет просто очень сложно отвечать на такие вопросы без исходных таблиц - вы то можете экспериментировать, а на приходится проблему усилием мысли пробивать...

   
 
 автор: BArt Simpson   (29.11.2005 в 10:04)   письмо автору
 
   для: cheops   (28.11.2005 в 20:02)
 

из таблици берётся только cab_dev_con.dev_id_='$fdev', а cab_dev_con.dev_id_='$sdev' видно уже не учитывается, или наоборот

   
Rambler's Top100
вверх

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