2014-01-27 5 views
0

Извините за запутанное название, позвольте мне попытаться объяснить. Вопрос связан с пользовательским программным обеспечением регистрации, где компания может создавать свой собственный журнал. Каждый журнал имеет соответствующую таблицу метаданных, в которой есть столбцы из своего журнала.Соответствующие столбцы из одной таблицы с другой

Я использую php для визуализации отображения данных в журнале. Я первый доступ имена столбцов в мета-таблицы и использовать, чтобы создать заголовки таблицы с Еогеасп, как показано

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

Теперь я сделал другой выбор из фактического журнала для строк для отображения и есть, что в array call $ 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; 

The сруб выглядит так

[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

да, они в одном порядке, моя проблема в первом массиве, все заголовки столбцов - это значения под ключом «label» в массиве, второй массив, каждый ключ - свое имя. я.e, если первое поле является recordNumber, оно сохраняется в первом массиве как первое значение $ header ['label'], во втором массиве оно хранится как header ['recordNumber']. Я пытаюсь избежать имен жестко заданных полей, так что разные компании могут настраивать разные имена столбцов. – metaDNA

+0

Я думаю, для этого нам нужны некоторые структуры журнальных таблиц и данные из таблиц метаданных. –

ответ

0

Если последовательность будет всегда одинаковой, и вы только пытаетесь отобразить ее в одной таблице, я не вижу, что мешает вам читать оба на 2 отдельных массива, а затем нанести их на стол ,

Сначала это:

SELECT columnNameInData FROM metatable ORDER BY metaid;

поместить результат в массив $sort

Затем лопаются его и построить свой второй выберите пункт:

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

И читать результат в массив $result2

Наконец, соберите заголовок, который у вас есть, и результат $ result2 как строки и tds журналов, эта таблица должна иметь записи, выровненные с заголовками.

Смежные вопросы