所以我现在已经搜索并做了几天的反复试验,我转向这里寻求帮助。
我在我的网站上创建了一个页面,用于从数据库中的表格中提取计划信息并将其显示在网页上。我试图从同一个DB中的第二个表中提取颜色方案,当第一个表上的名称与第二个表上的名称匹配时,只有该名称将以分配给它的不同颜色显示。我的表格如下:
TBL1: id time timeframe Mon Tues Wed Thur Fri Sat Sun 1 12a 00:00:00 Name1 Name2 Name3 Name2 Name5 Name6 Name7 2 1a 01:00:00 Name1 Name2 Name3 Name2 Name5 Name4 Name3 3 2a 02:00:00 Name1 Name2 Name4 Name2 Name2 Name6 Name2 4 3a 03:00:00 Name2 Name2 Name4 Name2 Name3 Name3 Name2
ECT
TBL2: id Name Color 1 Name1 #hexcolor 2 Name2 #hexcolor2 3 Name3 #hexcolor3 ect$query = array('select' => "*", 'tbl' => "Schedule"); $query2 = array('select' => "name, color", 'tbl' => "dj_colors"); $name = "select t1.*, Monday.color, Tuesday.color, Wednesday.color, Thursday.color, Friday.color, Saturday.color, Sunday.color
FROM Schedule t1 JOIN dj_colors Monday ON t1.Monday = Monday.name, JOIN dj_colors Tuesday ON t1.Tuesday = Tuesday.name, JOIN dj_colors Wednesday ON t1.Wednesday = Wednesday.name, JOIN dj_colors Thursday ON t1.Thursday = Thursday.name, JOIN dj_colors Friday ON t1.Friday = Friday.name, JOIN dj_colors Saturday ON t1.Saturday = Saturday.name, JOIN dj_colors Sunday ON t1.Sunday = Sunday.name";
$DB = new DB(); $result = $DB->select_multi($query); foreach ($result as $arrayLoop) { $printout .= "<tr>"; foreach ($arrayLoop as $field => $data) { if ($field == 'id' || $field == 'TimeFrame') continue; if ($data === $name) $printout .= "<td color=".$color.">".$data."</td>"; else $printout .= "<td class='schedule4'>".$data."</td>"; } $printout .= "</tr>"; }
编辑*这就是我想出来的尝试,但我想我仍然缺少一些东西,因为它仍然没有像我想要的那样工作。我走了一个头,并以正确的格式给出了我正在使用的实际表格的名称。仍然没有拉色,但我没有得到任何错误。请耐心等待,我还在学习。我不是要求答案,只是在哪里寻找和一些有用的提示。
答案 0 :(得分:0)
我认为你需要了解联接。您可以在与名称相同的查询中返回颜色,方法是将它们加入:
select t1.*, mon.color, tue.color, . . . sun.color
from table1 t1 join
table2 mon
on t1.name = mon.name join
tale2 tue
on t1.tue = tue.name
. . .
table2 sun
on t1.sun = sun.name
表达式:
SELECT color FROM tbl2 WHERE name
可能不会返回任何行。如果没有比较,name
将根据前面的初始数字转换为int。如果它以字母字符开头,它将被转换为0,这是假的,因此不会返回任何行。