2010-10-08 3 views
1

У нас есть система посещаемости сотрудников в базе данных mysql, но у меня нет возможности создания отчетов, я пытаюсь создавать отчеты с использованием PHP.Отобразить результат запроса MYSQL в горизонтальном представлении

Позвольте мне четко объяснить:

работник удар в и выбивать ежедневно. Эти входы и выходы перфорации хранятся в таблице базы данных mysql (посещаемость). Эта таблица содержит 5 полей, таких как punch in, punchout, employeeid, note, attendanceid. Названия наших сотрудников и другие данные хранятся в другой таблице (сотруднике).

Мой запрос состоит в том, что я хочу сгенерировать отчет, используя эти две таблицы в горизонтальном представлении.

пример:

column1: имя сотрудника column2: Punchin колонка3: Punchout column4: Punchin колонка: Punchout

Я способен генерировать ежедневный отчет для всех сотрудников, но надеюсь генерировать еженедельно/Месячный отчет.

помощь в помощи.

спасибо, Радж

+0

Возможно, вы знаете, о чем вы просите, но я не думаю, что вы это объяснили очень хорошо. Предоставьте соответствующие данные схемы, примеры записей и пример того, как вы хотите форматировать данные. – symcbean

ответ

0

Формат отчета является слишком расплывчатым. Должна ли она быть:

  • одна строка для каждого пользователя с последующим всех punchins и punchouts как один ряд (не хороший).

или

  • должны ли punchins/выходы быть объединены, чтобы дать в общей сложности отработанного времени для каждого пользователя в течение периода?
1

Похоже, вы пытаетесь выполнить сводный запрос (переключаете строки и столбцы). MySQL не поддерживает эту функцию, но ее можно моделировать. Однако гораздо проще просто получить нужные вам данные и проанализировать их с помощью php.

Похоже, что (и это всего лишь догадка), что вы хотите, чтобы сотрудник был первым столбцом, а все входы/выходы для пунша были в одной строке для этого сотрудника.

Вот трещина на то, что вы хотите сделать:

$data = select_all_relevant_data_with_mysql(); 
$employees = array(); 
while ($row = $data->fetch()) { 
    $employees[$row['employee']][] = array(
     'in' => $row['punchin'] 
     , 'out' => $row['punchout'] 
    ); 
} 

(Обратите внимание, это будет генерировать неопределенный индекс уведомление для каждой записи Сотрудника Вы должны справиться с этим, но это удвоит код.).

Теперь у вас есть данные punchin/out для каждого сотрудника (надеюсь, в порядке, MySQL может легко справиться с ORDER BY).

Теперь вы делаете что-то ссылка:

foreach ($employees as $name => $punches) { 
    echo <<<HTML 
     <tr><td>$name</td> 
HTML; 
    foreach ($punches as $punch) { 
     echo <<<HTML 
     <td>$punch[in]</td><td>$punch[out]</td> 
HTML; 
    } 
    echo '</tr>'; 
} 

Я предложил бы использовать шаблонную систему как PHPTAL для такого рода вещи.Бесстыдный плагин :)

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