我有兩個表:「汽車」和「代理商」:的foreach在while循環
汽車表
id_car | name_car | etc.
----------------------------
1 | A3 Sportback | etc.
2 | Ranger | etc.
3 | Transit Van |etc.
4 | Cayman | etc.
etc. | etc. | etc.
經銷權表
在deal_cars列我插入作爲陣列的對應車的ID。
deal_id | deal_name | deal_cars | etc.
--------------------------------------
1 | Ford | 2,3 | etc.
2 | Audi | 1 | etc.
3 | Porsche | 4 | etc.
etc. | etc. | etc. |
我會得到一個顯示以下信息的頁面:
經銷店的名字 - 汽車
- 福特 - 遊俠,全順範
- 奧迪 - A3 Sportback的
- Cayman - 保時捷
我沒有問題提取經銷商的名稱,但我不知道如何從id中提取汽車名稱。
我嘗試這樣做:
$dealerships_sql = $data->query("SELECT * FROM dealerships ORDER BY deal_name ASC");
while($dealerships_obj = $data->extract($dealerships_sql)){
//Dealerships data
$deal_id[] = $dealerships_obj->deal_id;
$deal_name[] = $dealerships_obj->deal_name;
etc etc
//Try to get cars ids and turn them in cars names.
$deal_cars[] = $dealerships_obj->deal_cars;
$deal_cars[] = explode(',',$deal_cars);
$cars = array();
foreach ($deal_cars AS $deal_car) {
$cars_sql = $data->query("SELECT name_car FROM cars WHERE id_car = '$deal_car'");
while($cars_obj = $data->extract($cars_sql)){
$cars[] = stripslashes($cars_obj->name_car)." ";
}
}
}
我使用Smarty的作爲模板引擎,所以我給你一些增值經銷商:
$smarty->assign ("deal_id", $deal_id);
$smarty->assign ("deal_name", $deal_name);
etc etc.
$smarty->assign ("cars", $cars);
我的模板是:
<table border="1">
<tr>
<td>Dealership</td>
<td>Cars</td>
</tr>
{section name="foo" loop=$deal_name}
<tr>
<td>{$deal_name[foo]}</td>
<td>{$cars[foo]}</td>
</tr>
{/section}
</table>
但代碼返回:
- 福特 - 遊俠
- 奧迪 - A3掀背
- 曼 - 保時捷
它僅示出了第一車每個經銷商(第一陣列中發現的元素)。我該如何解決這個問題?
'JOIN'會幫助你。開始[這裏](http://mysqljoin.com/)。 – kapa
你應該閱讀關於規範化。您的'deal_cars'列不符合第一個標準格式。 – halfdan