我希望有人可以帮助我,因为我正在尝试做一些超出我的限制的事情,我甚至不知道PHP或MySQL中是否存在这样的功能所以我在google上的搜索效率不高
我在我的PHP / MySql项目中使用PHPWord,目的是我想基于模板创建一个word文档。
我已经使用了guide,这也是堆栈交换。
然而,这种方法要求行数和值是硬编码的,即在他的例子中他使用了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函数,这很好用,我的文档现在看起来像this。
所以,到目前为止一切顺利。
我现在想要的是一种方法然后将查询的每一行值附加到文档中,而不是手动设置标记值,即$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
答案 0 :(得分:0)
我能够通过将查询中的记录插入带有AI ID的临时表,然后使用:
来对此进行排序。//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"]);
}
诀窍是还有一个在使用后截断表的函数,因此可以重复使用
可能不是最有效的方式,但它有效!