2013-03-14 47 views
2

我想顯示每個標記的圖標,就像Stackoverflow一樣。 Heroku Android Jetty從數據庫提取每個標記的圖標

有2個相關的表,table_icon和table_event。

table_event是用於記錄發生的事件,當然標籤爲每個事件; table_tag用於存儲標籤和圖標給他們。

這裏的table_icon的結構:

tag_id 
tag_name 
icon (an url to an img) 

這裏的table_event的結構:

event_id 
name 
modtime 
tag 

在table_event,標籤存儲 「標籤1,標籤2,標籤3」 的標籤細胞。

使其更清晰,下面是一個例子 -

事件: 「科比受傷了」,相關標籤:科比,湖人,傷害

table_event:

event_id ---- 1 
name -------- Kobe Bryant got hurt 
modtime ----- Mar. 13, 2013 
tag --------- Kobe,Lakers,injure 

通訊table_tag:(說我們有這些數據在table_tag之前)

tag_id ------ 24 
tag_name ---- Kobe 
icon -------- .../icon/kobe.png 


tag_id ------ 123 
tag_name ---- Lakers 
icon -------- .../icon/NBA_team_lakers.png 


tag_id ------ 36 
tag_name ---- injure 
icon -------- .../icon/red_cross.png 

這是我如何提取e PHP中的ach標籤:

... // Link to Db and table and call smarty. 
$t_sql = mysql_query("SELECT * FROM event WHERE 1"); 

$id = array(); 
$name = array(); 
$tag = array(); 
$icon = array(); 

while($t_row = mysql_fetch_array($t_sql)){ 
    array_push($id, $t_row['event_id']); 
    array_push($name, $t_row['name']); 
    $tag_array = explode(',', $t_row['tag']); 
    array_push($tag, $tag_array); 
     // Don't know how to extract icon for each tag. 
} 

$smarty->assign('tid', $tid); 
$smarty->assign('name', $name); 
$smarty->assign('tag', $tag); 
$smarty->display('event.html'); 

任何建議? Thx提前!

回答

2

使用MySQL joinIN子句。

SELECT table_event.* 
FROM table_event 
WHERE 
    EXISTS 
    (
     SELECT 1 
     FROM table_tag 
     WHERE 
     table_tag.tag_id IN(table_event.tag) 
    ) 
+0

Thx,它就像一個魅力! :) – Matt 2013-03-14 04:55:33

+0

@Matt永遠歡迎花花公子。 – 2013-03-14 04:56:28