PHP,同时使用函数填充表以重复数据计算

时间:2018-10-16 23:09:09

标签: php while-loop html-table

在合同管理工具中,我试图通过PHP查询填充表格。

该功能正常运行,直到我在while中使用它来计算同一while循环中的多个日期为止。

功能代码:

 function calculo_data($data_calculo){
   if($data_calculo == 0 ){
    $result_datas = "NÂO aplicavel ";

    echo $result_datas;
   } else {
    $hoje = date_create();
    $data_calculo_date = date_create($data_calculo);

    $diff = date_diff( $hoje, $data_calculo_date );

    $meses =  (($diff->format('%y')*12)+$diff->format('%m'));
    $dias = $diff->days;

    if($data_calculo_date < $hoje){
        $result_datas = "não aplicavel ";
        echo $result_datas;
    } elseif($meses >=1 ) {
        $result_datas = $meses . " meses ";
        echo $result_datas;
    } else {
    $result_datas =  $dias . " dias ";
    echo $result_datas;
    };

    ;
  };

};

表格代码:

while ($row_detalhes = mysqli_fetch_assoc($result_listagem_contratos)){ 

            $listagem_cliente_ref = $row_detalhes['PkContrato'];
            $listagem_cliente_cliente = $row_detalhes['ClienteNome'];
            $listagem_cliente_inicio = $row_detalhes['ContratoDataInicio'];
            $listagem_cliente_fim = $row_detalhes['ContratoDataFim'];
            $listagem_cliente_senhorio = $row_detalhes['ContratoPreAvisoSenhorio'];
            $listagem_cliente_inquilino = $row_detalhes['ContratoPreAvisoInquilino'];
            $listagem_cliente_break = $row_detalhes['ContratoDataBreak'];





        echo '<tr>';
        echo '<td>' . $listagem_cliente_ref .'</td>';
        echo '<td>' . $listagem_cliente_cliente .'</td>';
        echo '<td>' . $listagem_cliente_inicio .'</td>';
        echo '<td>' . $listagem_cliente_fim .' ( ' . calculo_data($listagem_cliente_fim) . ' )</td>';
        echo '<td>' . $listagem_cliente_senhorio .' ( ' .calculo_data($listagem_cliente_senhorio) . ' )</td>';
        echo '<td>' . $listagem_cliente_inquilino .' ( ' . calculo_data($listagem_cliente_inquilino) . ' )</td>';
        echo '<td>' . $listagem_cliente_break .' ( ' . calculo_data($listagem_cliente_break) . ' )</td>';
        echo '<td><a href="detalhe_contrato.php?id='. $listagem_cliente_ref . '">
        <span class="glyphicon glyphicon-file"  style="color:black"></span>
        </a></td<>';

结果是表格,其中至少显示了部分结果,但位置与图片中的位置错误!

screen capture of the result

1 个答案:

答案 0 :(得分:1)

这是因为您直接在函数中回显。它应该返回值,而不回显它们:

function calculo_data($data_calculo){
   if($data_calculo == 0 ){
    $result_datas = "NÂO aplicavel ";
    return $result_datas;
   } else {
    $hoje = date_create();
    $data_calculo_date = date_create($data_calculo);

    $diff = date_diff( $hoje, $data_calculo_date );

    $meses =  (($diff->format('%y')*12)+$diff->format('%m'));
    $dias = $diff->days;

    if($data_calculo_date < $hoje){
        $result_datas = "não aplicavel ";
        return $result_datas;
    } elseif($meses >=1 ) {
        $result_datas = $meses . " meses ";
        return $result_datas;
    } else {
        $result_datas =  $dias . " dias ";
        return $result_datas;
    }
  }
}

我也删除了一些;