php - 从数据库中提取每个标签的图标

标签 php mysql tags

我想显示每个标签的图标,就像 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中,标签存储在标签单元格中的“tag1,tag2,tag3”。

为了更清楚地说明这一点,这里有一个例子 -

事件:“科比受伤”,相关标签:科比、湖人队、受伤

表事件:

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

这是我在 PHP 中提取每个标签的方法:

... // 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');

有什么建议吗?提前谢谢!

最佳答案

使用 MySQL joinIN 子句。

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

关于php - 从数据库中提取每个标签的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401088/

相关文章:

php - 如何访问数组数据

php - 由于 Apache2.4,XAMPP Apache 未启动

git - 如何区分git标签和分支

java - 在 android 应用程序中读取 mp3 标签

php - Wordpress Contact Form 7 将 POST 变量传递给感谢页面

php - jQuery - 追加 ajax 结果

php - 如何在 HTML 中嵌入 Scala?

php - symfony2 - 在存储库或类中使用多个连接

mysql - DATE_SUB() 和使用算术运算符进行日期时间计算之间有什么区别吗?

java - 如何给struts2标签添加CSS