Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Concatenar nome de campo com date

Recommended Posts

Tenho a seguinte consulta:



function retornaClientesDevedores ($mesReferencia, $dias) {

require_once "PhpUtil.php";
$PhpUtil = new PhpUtil();

$string = "SELECT idClientes, nome FROM clientes WHERE idClientes IN (
SELECT idClientes FROM planosclientes WHERE idPlanosClientes IN (
SELECT distinct(idPlanoClientes) FROM pagamentos WHERE mesReferencia NOT IN ('".$mesReferencia."')
) and ".$PhpUtil->diferencaDatas(date('Y-m-d'), date('Y-m')."-diaVencimento'".)->days." > ".$dias."
UNION
SELECT idPlanosClientes FROM planosclientes WHERE idPlanosClientes NOT IN (SELECT distinct(idPlanoClientes) FROM pagamentos)
) ";
}



Minha dificuldade é que tenho uma função que vem de uma classe. Essa função pede duas datas. Uma atual e outra que preciso pegar a data atual sem o dia, portanto `date('Y-m')` e concatenar com um campo `diaVencimento` da tabela para montar a data e gerar com isso 2015-09-diaVncimento. Como fazer essa concatenação no PHP?


Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer enviar a diferença de dias para a consulta que nem foi feita ainda e utilizando uma coluna da sua tabela como variável, você precisará utilizar o próprio banco de dados para calcular essa diferença.

 

Supondo que você esteja utilizando o Mysql, uma forma de fazer isso é substituindo a sua classe pela função DATEDIFF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensando bem me parece que nem vou precisar disso.

 

Um Cliente tem um plano e se compromete a pagar todo dia '15' por exemplo. Então, no dia '7'$ por exemplo quero tirar a lista do mês.

Como só entra os que ainda não pagaram e que tem uma carência de 5 dias após a data, logo tria que fazer (diaHoje - DiaVencimento) o que dará (7-15 = -8) que é menor que os 5 dias de carência.

 

Na verdade é o seguinte

 

A função que estou usando é:

 

  function diferencaDatas ($dataInicio, $dataFim) {
$dataInicio = new DateTime($dataInicio);
$dataFim  = new DateTime($dataFim);
$diferencas = $dataInicio->diff($dataFim);
 
return $diferencas;
  }

Chamada:

 

$dataHoje = date('Y-m-d');

$dataVencimento = date('Y-m')."-dataVencimento ";

 

$diasDiferenca = diferencaDatas ($dataHoje , $dataVencimento ) ->days;

 

Saber quantos dias de diferença são.

 

Mas como a listagem será efetuada sempre dentro do mesmo mês, tanto $diaHoje quanto o $diaVencimento ocorrerão no mesmo mês, logo não precisarei da função bastando fazer a simples diferença entre eles.

 

Estou certo em meu raciocínio?

 

Pois se eu vou tirar a listagem por exemplo no dia 25, o mês é 09. Logo, vou pegar a data da listagem (25) e tirar o dia do vencimento (caso ainda não tenha sido paga) se der até 5, esta no prazo, caso contrário, esta em débito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

classe corrigida.

 

 

<?php
 class Relatorios {
 
private $conexao;
 
public function __construct ($_conexao) { 
    $this->conexao = $_conexao;
}
/*
     //COMENTÁRIO DA FUNÇÃO ABAIXO
//SELECIONAR OS ID'S E OS NOMES DOS CLIENTES
$string = "SELECT idClientes, nome FROM clientes WHERE idClientes IN ( 
                   //SELECIONAR ID'S DOS CLIENTES QUE TEM PLANOS E QUE A DIA DE VENCIMENTO É MENOR QUE A O DIA ATUAL
SELECT idClientes FROM planosclientes WHERE idPlanosClientes IN (
   //MAS NÃO PAGARAM A PARCELA DO MES CORRENTE 
SELECT distinct(idPlanoClientes) FROM pagamentos WHERE mesReferencia NOT IN ('".$mesReferencia."') 
                  ) and DATEDIFF (curdate(), CONCAT('".date('Y-m')."','-', diaVencimento)) > ".$dias."
  //UNIÃO COM
UNION
    //SELECIONAR ID'S DOS CLIENTES QUE TEM PLANOS E QUE NÃO PAGARAM NENHUMA PARCELA
SELECT idPlanosClientes FROM planosclientes WHERE idPlanosClientes NOT IN                                               (SELECT distinct(idPlanoClientes) FROM pagamentos)
  ) ";         
*/
 
 function retornaClientesDevedores ($mesReferencia, $dias) {
 
$retorno = array();
 
$string = "SELECT DISTINCT(idClientes), nome FROM clientes WHERE idClientes IN ( 
              SELECT idClientes FROM planosclientes WHERE idPlanosClientes IN (
SELECT distinct(idPlanoClientes) FROM pagamentos WHERE mesReferencia NOT IN ('".$mesReferencia."') 
) and DATEDIFF (curdate(), CONCAT('".date('Y-m')."','-', diaVencimento)) > ".$dias."
UNION
SELECT idPlanosClientes FROM planosclientes WHERE idPlanosClientes NOT IN                                               (SELECT distinct(idPlanoClientes) FROM pagamentos)
  ) ORDER BY nome";        
 
$dados =  $this->conexao->query($string);   
 
if($dados->num_rows == 0) {
$retorno = null;
}
else {
$contador = 0;
while ( list ($idClientes, $nomeClientes) = $dados->fetch_row())   {
$retorno[$contador][0] = $idClientes;
$retorno[$contador][1] = $nomeClientes;
$contador++;
}
}
 
      return $retorno;
  }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.