2017-06-01 34 views
0

我想打印的第一个值219的情况下截图中提到:downloadl然后我需要打印第二个值id = 219的情况下:downloadp.but,数组$ value ['printp']得到两个值放入表格中(例如:选择usera选择用户b)。 但我需要打印这个$ value ['printp']只有一个和第一个值。 enter image description here如何从数组中打印特定值?

case 'downloadl': 


$sql = "SELECT post_id,printprocess,printsupply,printesb,printwork,printpri,printmate FROM printtable WHERE post_id=" .$post_id; 

     $query = $db->sql_query($sql); 
     $print_data = array(); 
     while($roww = mysqli_fetch_array($query)){ 

       $print_data[] = array(
       'printp' => $roww['printprocess'], 
       'prints' => $roww['printsupply'], 
       'printsb' => $roww['printesb'], 
       'printwrk' => $roww['printwork'], 
       'printpr' => $roww['printpri'], 
       'printmat' => $roww['printmate'], 
       ); 
     } 

       foreach($print_data as $value) { 

        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, ''); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, ''); 
        $j++; 
        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, 'Printing Process'); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printp']); 
        $j++; 
        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, 'Supplier'); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['prints']); 
        $j++; 
        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, 'Espon Sub'); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printsb']); 
        $j++; 
        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, 'WorkFlow ID'); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printpr']); 
        $j++; 
        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, 'Printer'); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printwrk']); 
        $j++; 
        $objPHPExcel->setActiveSheetIndex(0) 
         ->setCellValue('A'.$j, 'Printing Material'); 
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printmat']); 
        $i++; 
        $j++; 
       } 
break; 
       case:downloadp: 

      foreach($print_data as $value) { 

          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, ''); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, ''); 
          $j++; 
          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, 'Printing Process'); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printp']); 
          $j++; 
          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, 'Supplier'); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['prints']); 
          $j++; 
          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, 'Espon Sub'); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printsb']); 
          $j++; 
          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, 'WorkFlow ID'); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printpr']); 
          $j++; 
          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, 'Printer'); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printwrk']); 
          $j++; 
          $objPHPExcel->setActiveSheetIndex(0) 
           ->setCellValue('A'.$j, 'Printing Material'); 
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printmat']); 
          $i++; 
          $j++; 
         } 
     break; 
+0

您的查询中没有'ORDER BY',因此无法预测哪一个会优先。 – Barmar

+0

如果您只想打印一行,请去掉while循环。 – Barmar

+0

我编辑了我的问题@Barmar可以请你再读一遍......! –

回答

1

在不同情况下更改您的查询。

switch ($something) { 
    case 'downloadl': 
     $sql = "SELECT post_id,printprocess,printsupply,printesb,printwork,printpri,printmate FROM printtable WHERE post_id=" .$post_id . " AND printprocess = 'Select UserA'"; 
     break; 
    case 'downloadp': 
     $sql = "SELECT post_id,printprocess,printsupply,printesb,printwork,printpri,printmate FROM printtable WHERE post_id=" .$post_id . " AND printprocess = 'Select UserB'"; 
     break; 
} 

$query = $db->sql_query($sql); 
$print_data = array(); 
while($roww = mysqli_fetch_array($query)){ 

    $print_data[] = array(
    'printp' => $roww['printprocess'], 
    'prints' => $roww['printsupply'], 
    'printsb' => $roww['printesb'], 
    'printwrk' => $roww['printwork'], 
    'printpr' => $roww['printpri'], 
    'printmat' => $roww['printmate'], 
    ); 
} 

foreach($print_data as $value) { 

    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, ''); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, ''); 
    $j++; 
    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, 'Printing Process'); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printp']); 
    $j++; 
    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, 'Supplier'); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['prints']); 
    $j++; 
    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, 'Espon Sub'); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printsb']); 
    $j++; 
    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, 'WorkFlow ID'); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printpr']); 
    $j++; 
    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, 'Printer'); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printwrk']); 
    $j++; 
    $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A'.$j, 'Printing Material'); 
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, $value['printmat']); 
    $i++; 
    $j++; 
} 
+0

你的情况2应该是'downloadp' – mrid

+0

感谢您的努力@Barmar,但我想打印这个printprocess(选择UserA)动态,因为它可能会改变任何时候当我改变数据库。 ..我可以使用任何数组函数这是可能的..?? –

+0

@mrid ya downloadp是case2我提到case2而不是downloadp sry我的错误\ –

1

使用LIMIT 1

SELECT post_id,printprocess,printsupply,printesb,printwork,printpri,printmate FROM printtable WHERE post_id=" .$post_id." LIMIT 1"; 
+1

MySQL没有'TOP 1'它使用'LIMIT 1' – Barmar

+0

谢谢。 @Barmar –

+0

他改变了这个问题。他希望在不同的'case'块中有不同的行。 – Barmar

1

使用此查询:

$sql = "SELECT post_id,printprocess,printsupply,printesb,printwork,printpri,printmate FROM printtable WHERE post_id=" .$post_id . " ORDER BY pid LIMIT 1"; 

这里ORDER BY post_id将返回在POST_ID的升序(默认)输出

LIMIT 1将限制行数返回到1.

+0

他只选择一个'post_id',为什么你需要按同一个列排序? – Barmar

+0

谢谢你指出,我的坏。必须通过pid(似乎是自动生成的主键)而不是post_id进行排序。更新了我的答案。 – mrid

+0

你见过这个问题的编辑吗?他希望在'case'下载''中选择UserA'并在'case'下载''中选择UserB'。 – Barmar

1

我认为问题出在数据库中,因为您的post_id不是唯一值,所以您需要从表中提取2个或更多值。我会重新设计数据库,或者您可以使用:

$sql = "SELECT post_id,printprocess,printsupply,printesb,printwork,printpri,printmate FROM printtable WHERE post_id=" .$post_id LIMIT 1; 

从资料库拉一个值,或者从你的代码中删除

foreach($print as $value) 

打印的第一个值。