好的,所以我目前正在尝试设置一个脚本,该脚本将在每月1日作为cron作业运行。
我所建造的物业管理系统。每个属性都将其费用存储在MySQL数据库中。
我需要的是脚本遍历每个块并查找单独的费用,然后将它们创建为单独的发票条目。这有点长篇大论,但对我们有用。
更新的代码:
<?php
require_once("lib/common.php");
$sql = "SELECT id,service_charge,utility_charge,ground_rent,insurance,communalcleaning,maintenance FROM blocks GROUP BY id";
$rs = $conn->query($sql);
while($r = $rs->fetch_assoc()){
foreach($r as $key=>$value) {
$blkid = $r['id'];
$invid = time();
$date = date('Y-m-d');
switch($key) {
case "service_charge":
$type = "Service Charge";
break;
case "utility_charge":
$type = "Utility Charge";
break;
case "ground_rent":
$type = "Ground Rent";
break;
case "insurance":
$type = "Insurance";
break;
case "communalcleaning":
$type = "Communal Cleaning";
break;
case "maintenance":
$type = "Maintenance";
$ins2 = "INSERT INTO incomings (id,block_id,amount,date) VALUES ('','$blkid','$value','$date')";
$conn->query($ins2);
break;
}
$ins = "INSERT INTO invoices(id,invoice_id,block_id,entry_description,entry_amount,entry_date) VALUES('','$invid','$blkid','$type','$value','$date')";
$conn->query($ins);
}
}
?>
**编辑**
好的,我现在已经将代码编辑为一个更明智的解决方案。问题仍然存在,我需要为每个&#34; block_id&#34;创建新的$invid
。从blocks
表中提取。
目前为两个块生成相同的$invid
。它按预期分隔所有$key=>$value
,只是不拆分发票。
我希望我已经解释得这么好了!如有任何问题,请咨询!
提前致谢。
答案 0 :(得分:0)
您将$invid
设置为time()
,这精确到秒。计算机比这快得多,因此$invid
将在循环中重复设置为相同的数字。通常的方法是在MySQL中使用自动递增列,因此它将自己处理插入id
列的递增数字。以下是修复表格的方法:
ALTER TABLE `invoices` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
之后,调整您的PHP代码,使其甚至不会尝试为id插入值。删除$invid
变量,并从INSERT
语句中的列和值列表中删除id列。