2017-01-23 37 views
0

我试图使用fpdf从循环数据库打印数据。所以我有许多进程。并且每个过程都有一定数量的人员。所以第一个SQL是让流程:循环中的单独值

$process=mysqli_query($con,"SELECT * FROM `process` WHERE projectNo='$projectNo'"); 
if (!$process) {die('Invalid queryyyyy: ' . mysqli_error());} 
while($row = mysqli_fetch_array($process)) 
{ 
    $proc[] = $row["process"]; 
    $len = count($proc); // getting length of an array 
} 

然后我试着打印指定的人对每一个过程:

for($y=0;$y<$len;$y++) 
{ 

    $result4 = getProcessLeader($projectNo,$proc[$y]); 
     if (!$result4) { 
      die('Invalid queryyyy: ' . mysqli_error($con)); 
     } 
     while($row4 = mysqli_fetch_array($result4)) 
     { 
      $procLeader = $row4['proc_leader']; 
      $column_procLeader .= $procLeader." (leader), "; 

     } 

    $result5 = getProcessChecker($projectNo,$proc[$y]); 
     if (!$result5) { 
      die('Invalid query: ' . mysqli_error($con)); 
     } 
     while($row5 = mysqli_fetch_array($result5)) 
     { 
      $procChecker = $row5['proc_checker']; 
      $column_procChecker .= $procChecker." (checker), "; 
     } 

    $result6 = getProcessStaff($projectNo,$proc[$y]); 
     if (!$result6) { 
      die('Invalid query: ' . mysqli_error($con)); 
     } 
     while($row6 = mysqli_fetch_array($result6)) 
     { 
      $procStaff = $row6['proc_staff']; 
      $column_procStaff .= $procStaff." (staff), "; 
     } 
    $pdf->Mach("Process Name: $proc[$y]","","", $column_procLeader, $column_procChecker, $column_procStaff); 
} 

所以我预期的输出应该是这样的:

Process A: 
AHMAD (leader) 
JOHN (checker) 
ACOL (staff) 

Process B: 
BOB (leader) 
PETER (checker) 
DON (staff) 

etc. 

但我得到的是:

Process A: 
AHMAD (leader) 
JOHN (checker) 
ACOL (staff) 

Process B: 
AHMAD (leader), BOB (leader) 
JOHN (checker), PETER (checker) 
ACOL (staff), DON (staff) 

如何正确指定名称?

+0

我不完全了解你的过程。但似乎你对一个项目编号执行3次相同的查询。我认为你可以通过用'role'获取所有进程来最小化查询,并按项目编号排序并循环显示...... – Naga

回答

1

在for循环旁边添加$column_procLeader = $column_procChecker = $column_procStaff = '';行,如下所示。

for($y=0;$y<$len;$y++) 
{ 
    $column_procLeader = $column_procChecker = $column_procStaff = ''; 
    .....