Я думаю, что ваш дизайн базы данных здесь не подходит.
Таблица автомобилей
id_car | name_car | etc.
----------------------------
1 | A3 Sportback | etc.
2 | Ranger | etc.
3 | Transit Van | etc.
4 | Cayman | etc.
etc. | etc. | etc.
Таблица дилеров
deal_id | deal_name | etc.
---------------------------
1 | Ford | etc.
2 | Audi | etc.
3 | Porsche | etc.
etc. | etc. |
Таблица дилеров по автомобилям
dealerid | carid
1 | 2
1 | 3
2 | 1
etc. | etc.
Как вы видите, я сделал еще одну таблицу для отношений между двумя таблицами.
$dealerships_sql = $data->query("SELECT * FROM dealerships ORDER BY deal_name ASC");
$dealers = array();
while($dealerships_obj = $data->extract($dealerships_sql)){
//Dealerships data, use object
$dealerid = $dealerships_obj->deal_id;
$dealers[$dealerid]['dealer'] = $dealerships_obj;
// Cars
$cars = array();
$car_sql = $data->query("SELECT name_car FROM cars JOIN dealerToCars ON carid = id_car JOIN dealer ON deal_id = dealerid WHERE deal_id = " . $dealerid);
// now you have all cars from the selected dealer
while ($cars_obj = $data->extract($car_sql))
{
$cars[] = stripslashes($cars_obj->name_car);
}
// Assign Cars to dealer
$dealers[$dealerid]['cars'] = $cars;
}
Теперь выу $ дилеров все ваши дилеры со своими автомобилями.
Поскольку вы используете smarty, просто передайте весь этот массив smarty, и пусть остальные делают smarty в своем шаблоне.Smarty может использовать массивы и объекты, поэтому вам не нужно разбивать его на несколько массивов:
$smarty->assign ("dealers", $dealer);
Поскольку я не знаю ваших классов, вам, возможно, потребуется добавить несколько методов получения или установки илипросто сделайте свойства общедоступными, чтобы smarty мог получить к ним доступ:
<table border="1">
<tr>
<td>Dealership</td>
<td>Cars</td>
</tr>
{foreach $dealers as $dealer}
<tr>
<td>{$dealer['dealer']->deal_name}</td>
<td>{foreach $dealer['cars'] as $car}{$car}, {/foreach}</td>
</tr>
{/foreach}
</table>
Может быть, вам нужно взглянуть на идентификаторы в шаблоне.
(я использую для этого smarty 3)