Динамические строки таблицы с PHPWord

Я надеюсь, что кто-то может мне помочь, потому что я пытаюсь сделать что-то, что выходит за рамки моих возможностей, я даже не знаю, существует ли для этого функция в PHP или MySQL, поэтому мой поиск в Google не был очень продуктивным.

Я использую PHPWord с моим проектом PHP/MySql, намерение состоит в том, что я хочу создать текстовый документ на основе шаблона.

Я использовал это руководство, которое также находится в разделе обмена стеками.

Однако этот подход требует, чтобы количество строк и значения были жестко запрограммированы, т.е. в своем примере он использовал cloneRow('first_name', 3), который затем клонирует таблицу, чтобы иметь 3 строки, а затем переходит к ручному определению теги, т.е.

$doc->setValue('first_name#1', 'Jeroen');
$doc->setValue('last_name#1', 'Moors');
$doc->setValue('first_name#2', 'John');

Я пытаюсь сделать это динамическим, в моем случае я пытаюсь составить расписание, и одна из дочерних таблиц именно такая, поэтому запрос, который у меня есть, ищет, сколько записей есть, а затем собирает их количество, это Затем $count используется для динамического создания правильного количества строк. Это счет, который я использую:

$rs10 = CustomQuery("select count(*) as count FROM auditplanevents where AuditModuleFk='" . $result["AuditModulePk"]."'"); 
$data10 = db_fetch_array($rs10);
$Count = $data10["count"];

Затем я использую этот $document->cloneRow('date', $Count); для запуска функции clonerow, которая отлично работает, и теперь мой документ выглядит примерно так: этим.

Итак, пока все хорошо.

Теперь мне нужен способ добавления каждого значения строки запроса в документ, поэтому вместо ручной установки значения тега, т.е. $doc->setValue('first_name#1', 'Jeroen');, я мог бы использовать что-то вроде $doc->setValue('first_name#1', '$name from row 1'); Я подозреваю, что это будет включать запрос foreach, но не слишком уверен.

Я надеюсь, что вышеизложенное имеет смысл, но, пожалуйста, не стесняйтесь просить меня о чем-нибудь еще и стать моим личным героем. Спасибо

Обновление: просто для ясности, я бы хотел, чтобы вывод выглядел примерно так:

В моем примере 5 результатов и, следовательно, создано 5 строк, я хочу установить значения следующим образом:

${$date1} = date column from query 1st row
${$date2} = date column from query 2nd row
${$date3} = date column from query 3rd row
${$date4} = date column from query 4th row
${$date5} = date column from query 5th row

person Jonathan K Green    schedule 30.05.2015    source источник
comment
Могу ли я использовать что-то вроде этого blog.sqlauthority.com/2014/03/08/ для добавления во временную таблицу (и усечения после использования)?   -  person Jonathan K Green    schedule 30.05.2015


Ответы (1)


Я смог разобраться с этим, вставив записи из запроса во временную таблицу с идентификатором AI, а затем используя:

//update timetable with events from temp table
$rs14 = CustomQuery("select *  FROM tempauditplan where AuditModuleFk='" . $result["AuditModulePk"]."'"); 
while ($data14 = db_fetch_array($rs14))
    {
        $document->setValue('date#'.$data14["rowid"], date('d/m/y', strtotime($data14["date"])));
        $document->setValue('time#'.$data14["rowid"], date('H:i', strtotime($data14["time"])));
        $document->setValue('auditor#'.$data14["rowid"], $data14["auditor"]);
        $document->setValue('area#'.$data14["rowid"], $data14["area"]);
        $document->setValue('notes#'.$data14["rowid"], $data14["notes"]);
        $document->setValue('contact#'.$data14["rowid"], $data14["contact"]);
    }

Хитрость заключается в том, чтобы также иметь функцию, которая усекает таблицу после использования, чтобы ее можно было использовать снова.

Возможно, это не самый эффективный способ, но он работает!

person Jonathan K Green    schedule 30.05.2015