2014-01-27 145 views
0

对不起,让我试着解释。这个问题涉及到公司可以设计自己的“日志”的自定义日志记录软件。每个日志都有一个对应的元数据表,其中包含来自其日志的列。从一张桌子与另一张桌子匹配的列

我使用php来渲染日志中的数据显示。我首先从实际日志访问的列名在元表,并用它来建立与一个foreach表头,如图

foreach ($logStructure as $header) 
{ 
    echo '<th>' . $header['label'] . '</th>'; 
} 
endforeach; 

现在我已经做了另一种选择的行显示和具有在数组调用$ logrow。 我该如何着手遍历这些行并将正确的数据放入右列? 在SQL中我会用一个WHERE子句说点什么以下等效:

'WHERE $logrow['fieldname'] = $header['label']' 

举个例子元表的字段是这样

[metaid] [columnLabel] [columnNameInData] 
    001  Log Number  logNum 
    002  Author  CreateUser 
    003  Subject  Entry 

得到的数据放到$报头[]通过像这样

SELECT columnLabel AS label FROM metatable; 

日志结构声明中看起来像这样

[logNum] [CreateUser]  [Entry] 
    001  Admin  Some Text about Stuff 
    002  Editor 1  Another Amazing Entry 
    003  Editor 2  It gets old by now 

所以选择这个样子的

SELECT logNum, CreateUser, Entry FROM log 

得到的数据放入$logrow['lognum'], $logrow['CreateUser'], $logrow['Entry']

希望这将清除的问题了好一点,我期待与匹配元数据的列名来自实际数据中这些字段的值。

+0

列名是否对应?如果是,那么一个循环和一个新的数组应该可以让你在那里。如果不是,您可能需要设置一个单独的排序数组,以便先按正确顺序排列它们。 –

+0

是的,他们是在相同的顺序,我的问题是在第一个数组中,所有列标题是数组中的'标签'键下的值,第二个数组,每个键是它自己的名字。一世。如果第一个字段是recordNumber,它将作为第一个$ header ['label']值存储在第一个数组中,在第二个数组中它将作为header ['recordNumber']存储。我试图避免硬编码字段名,这样不同的公司可以设置不同的列名。 – metaDNA

+0

我认为我们需要一些示例日志表结构和来自元数据表的数据。 –

回答

0

如果序列总是相同的,而你只是试图把它放在同一个表中,我看不出什么阻止你将两个数据读出到两个单独的数组中,然后将它绘制到表上。

第一本:

SELECT columnNameInData FROM metatable ORDER BY metaid;

结果放入数组$sort

然后破灭,并建立你的第二个SELECT子句:

$columns=implode(', ', $sort); 
$SQL="SELECT $columns FROM log"; 

而且读取结果到数组$result2

最后,将您拥有的头文件和$ result2的输出组合为日志的行和tds,此表应该使记录与标头对齐。

相关问题