在PHP / Postgresql WHILE循环中设置基于数据库字段的条件

时间:2014-11-22 07:15:59

标签: php postgresql jpgraph

我有一个部分解决方案,但是在一个while循环中,如何根据记录字段最好地设置条件?我试过“IF”,但进一步使用开关/外壳。 我正在使用jpgraph与PHP / Postgresql并设置了一个开关来根据记录类型字段“rectype”格式化甘特条。在我的测试代码中,“rectype”可以是“NORMAL”或“GROUP”。 查询确实输出表中的所有7条记录(使用pgadmin3进行测试),但甘特图仅输出7条表记录中的前6条,条形图格式应用于上一条记录 - 在我的测试用例中,记录4具有“ rectype“字段设置为”GROUP“,但”GROUP“格式应用于记录3.

$sql = "SELECT activity, start, due, rectype, title, FROM activity LEFT JOIN project ON activity_projectid = projectid ORDER BY activity_projectid, start";
$result = pg_query($sql);

// Add data to gantt
$i = 0;
while($act = pg_fetch_assoc($result)) {
 $type = pg_fetch_result($result,"rectype");
 switch($type) {  
 case "GROUP":  
    $data = new GanttBar ($i,array($act['activity'],$act['title']),$act['start'],$act['due']);
    $data->SetPattern(BAND_SOLID,'black');
 break;  
 case "NORMAL":  
    $data = new GanttBar ($i,array($act['activity'],$act['title']),$act['start'],$act['due']);
    $data->SetPattern(BAND_RDIAG,'red');
 break;
 }
$graph->Add($data);
$i++;
}

1 个答案:

答案 0 :(得分:0)

您不能将pg_fetch_assocpg_fetch_result混在一起。你应该使用:

while($act = pg_fetch_assoc($result)) {
    $type = $act['rectype'];