PHP пока заполнить таблицу функцией повторения расчета данных - PullRequest
0 голосов
/ 17 октября 2018

В инструменте управления контрактами я пытаюсь заполнить таблицу из запроса PHP.

Функция работает должным образом, пока я не использую ее для вычисления нескольких дат в течение одного цикла 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 голосов
/ 17 октября 2018

Это потому, что вы эхо прямо в функции.Он должен возвращать значения, а не отражать их:

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;
    }
  }
}

Было также слишком много ;, которое я удалил.

...