[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: опять запрос и цикл)) опять грабли.
kuzroman
Помогите или я застрелюсь.

Скажите как, как каааааак?


	while ( $myrow1 = mysql_fetch_assoc($result1) )
{
$id_unit_tovar = $myrow1['id_unit'] ;

// здесь выводится список из id товара который потом должен одновременно
//подставляться в условие where


}


так вот как мне реализовать, чтобы в условие WHERE подставлялась эта переменная (может быть массив, или код на php можно написать прямо в where ?)


$zapros2 = " SELECT id_unit, name, firma_unit, price, pics_unit, pkod, tip, yand FROM unit_tb ";

// чтобы здесь было что то вроде этого:
$zapros2. = "WHERE pkod = '$id_unit_tovar1' AND pkod = '$id_unit_tovar2' AND
pkod = '
$id_unit_tovar3' ... ";

$zapros2. = " ORDER BY price";
$result_zapros2 = mysql_query ($zapros2,$lnk);
$myrow_2 = mysql_fetch_assoc($result_zapros_2) ;



В общем и целом мысль такая нужно выбрать из базы товар а условие взять из цикла.

Пробовал делать так:

while ( $myrow_1 = mysql_fetch_assoc($result_zapros_1) )
{
$id_unit_tovar = $myrow_1['id_unit'] ;

$zapros2 = " SELECT id_unit, name, firma_unit, price, pics_unit, pkod, tip, yand
FROM unit_tb WHERE pkod = '
$id_unit_tovar' ORDER BY price";
$result2 = mysql_query ($zapros2,$lnk);
$myrow2 = mysql_fetch_assoc($result2) ;
}


все выводит но выводит как бы сначала pkod равный 1 сортирует все по цене,
потом выводит pkod =й 2 сортирует этот блок по цене, т.е. он выводит блоками и внутри каждого блока сортирует по цене, а надо чтобы вывел одновременно по заданным условиям и отсортировал не в нескольких блоках pkod, а в одном запросе))) ну вот как то так))



Спустя 18 минут, 37 секунд (15.11.2010 - 18:30) Sanchopansa написал(а):

$id_unit_tovar = array();
while ( $myrow1 = mysql_fetch_assoc($result1) )
{
$id_unit_tovar[] = $myrow1['id_unit'] ;



}
$zapros2 = " SELECT id_unit, name, firma_unit, price, pics_unit, pkod, tip, yand FROM unit_tb ";

// чтобы здесь было что то вроде этого:
$zapros2. = "WHERE pkod IN (" . implode(',', $id_unit_tovar) . ")";

$zapros2. = " ORDER BY price";
$result_zapros2 = mysql_query ($zapros2,$lnk);
$myrow_2 = mysql_fetch_assoc($result_zapros_2) ;


Спустя 16 часов, 52 минуты, 34 секунды (16.11.2010 - 11:22) kuzroman написал(а):
Цитата (Sanchopansa @ 15.11.2010 - 15:30)

$id_unit_tovar = array();
while ( $myrow1 = mysql_fetch_assoc($result1) )
{
$id_unit_tovar[] = $myrow1['id_unit'] ;



}
$zapros2 = " SELECT id_unit, name, firma_unit, price, pics_unit, pkod, tip, yand FROM unit_tb ";

// чтобы здесь было что то вроде этого:
$zapros2. = "WHERE pkod IN (" . implode(',', $id_unit_tovar) . ")";

$zapros2. = " ORDER BY price";
$result_zapros2 = mysql_query ($zapros2,$lnk);
$myrow_2 = mysql_fetch_assoc($result_zapros_2) ;

Спасибо за код.

НЕ пойму, но после этого участка кода:

$zapros2 = " SELECT id_unit, name, firma_unit, price, pics_unit, pkod, tip, yand FROM unit_tb ";
$zapros2. = "WHERE pkod IN (" . implode(',', $id_unit_tovar) . ")";
$zapros2. = " ORDER BY price";
$result_zapros2 = mysql_query ($zapros2,$lnk);
$myrow_2 = mysql_fetch_assoc($result_zapros_2) ;


на экран ничего не выводится.

А что делает конструкция WHERE IN ? Нигде не найду ее.

Спустя 19 минут, 35 секунд (16.11.2010 - 11:42) kuzroman написал(а):
сделал в одну строку, все заработало, почему то переменная с точкой $zapros2. тупит
не прибавляет строки.

Спустя 43 минуты, 3 секунды (16.11.2010 - 12:25) glock18 написал(а):
Цитата (kuzroman @ 16.11.2010 - 08:42)
переменная с точкой $zapros2. тупит

да, переменные с точками такие

Спустя 51 минута, 12 секунд (16.11.2010 - 13:16) sergeiss написал(а):
glock18 - не прикалывайся, человек уже не первый день "бодается" с SQL и ПХП... Ну, не его дело. Но - хочется smile.gif

Спустя 8 часов, 15 минут, 46 секунд (16.11.2010 - 21:32) Sanchopansa написал(а):
$zapros2 .= "WHERE pkod IN (" . implode(',', $id_unit_tovar) . ")";

Это значит выбрать строки из базы где pkod входит в перечень в скобках.. тоесть строки с перечислеными значениями pkod

Спустя 3 минуты, 4 секунды (16.11.2010 - 21:35) Sanchopansa написал(а):
А "переменные с точкой" как ты их назвал тупят потому что это не переменная должна быть с точкой а знак ровно.. тоесть вот так (.=) и разделять их пробелом НИКОГДА НЕЛЬЗЯ!!
$zapros2 = " SELECT id_unit, name, firma_unit, price, pics_unit, pkod, tip, yand FROM unit_tb ";
$zapros2 .= "WHERE pkod IN (" . implode(',', $id_unit_tovar) . ")";
$zapros2 .= " ORDER BY price";


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.