Вытаскивание информации из БД

Статус
В этой теме нельзя размещать новые ответы.

sidor

Старатель
Регистрация
7 Июн 2006
Сообщения
220
Реакции
14
Есть каталог товара. в нем есть поле "category" - категория товара.
Используются классы, но суть понятна.
PHP:
 $sql_result = $db->query ( "SELECT * FROM " . PREFIX . "_shop ORDER BY posi ASC" );
Теперь нужно вывести в разных местах товары РАЗНЫХ категорий. Тоесть вариант вида
PHP:
while ( $row = $db->get_row ( $sql_result ))
{

bla bla bla

}
не покатит, т.к. он выведет всеможно впринципе сделать несколько запросов к БД, но это же будет ***уя себе запросов :(
помогите пожалуйста.
 
Если я прально понял, то сделай промежуточный массив ориентированный относительно категорий типа $tmpVar[cat1][good1] и работай уже с ним, а не с кучей запросов.
 
Приведите дампы таблиц ..по идее у вас должно быть как минимум две таблицы
1 таблица категорий и разделов ...либо только категорий
2 таблица товаров которыен связаны по ID (ключами) с таблицей категорий
тогда никаких проблем с выводом того что нужно не возникнет...
 
стрктуру БД в студию
а вообще самый просто вариант сформировать массив массивов, из запроса, в котором ключом будет id категории
$cat[idCategory] = array();
PHP:
$html ='';
foreach($cat[<id нужной категории>] as $k=>$val){
    $html .= 'Товар: '.$val.'<br>';
}
echo $html;
 
Используй ajax, закидывай продукты в массив на javascript, и выводи что нужно, как например:


т.е. обращение к бд одно, нагрузки на сервер почти никакой, всё происходит в браузере (сортировка, постраничный вывод и т.п.).
 
К примеру :

Код:
for ( $i = 0; $row = $db->get_row ( $sql_result ); $i++ )
{
$cat[ $row['category'] ] .= $row['tovar'].", ";
}

И потом просто в нужных местах скрипта использовать $cat[категория]
 
sidor, делается это следующим образом.

Для начала раздели логику программы от шаблона - сначала все выборки в массив, а потом уже вывод в темплейт.
Например, так

<?php
$goods = array();
while ( $row = $db->get_row ( $sql_result ))
{

$goods[] = $row;

}
?>

Ниже уже код шаблона:
<?php foreach($goods as $k=>$v:( ?>
<?php if($v['category'] == 'default':( ?>
<div><?=$v['name']?></div>
<?php endif; ?>
<?php endforeach; ?>

Вроде как все понятно.
 
ммм...забыл закрыть тему. я уже и забыл как решил проблему, но решил :D
по-моему все-таки как t0os.

тема закрыта
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху