Ir para conteúdo
Fórum Script Brasil
  • 0

paginando resultados - retornar n. de linhas afetadas


bartolossi

Pergunta

Boa tarde pessoal.

Tenho um problema meio chato: Tenho a função abaixo funcionando perfeitamente, dentro de uma classe chamada "medico", que retorna um array de dados.

Porém preciso que ela retorne também o número de registros afetados, quando uso filtros, e não estou conseguindo fazer isso (vou usar para paginar os resultados via jquery - é uma consulta ajax - o esquema já está pronto).

Eu passo como parametro o "LIMIT" ($limite) que eu quero (ex.: "0,10"), só que aí o nnúmero de registros obviamente nunca vai passar do limite.

Como eu poderia fazer para retornar o número total de linhas afetadas incluindo isso no objeto "$medico"?

A função da minha classe de acesso a dados para retornar o total de linhas afetadas por uma query é "$variavel = $banco->hasResultQuery();"

public static function consultaLista($limite = NULL, $nome = NULL, $especialidade = NULL, $estado = NULL, $ordenado = NULL) {
    $sql = "SELECT m.nome AS medico, e.especialidade, u.nome AS membroColih, m.dataUltimoContato, m.id FROM medicos AS m ";
    $sql .= "LEFT JOIN especialidades AS e ON (m.idEspecialidade = e.id) ";
    $sql .= "LEFT JOIN usuarios AS u ON (m.idMembroColih = u.login) ";            
    $filtro = array();
    if (isset($nome))
        $filtro[] = " m.nome LIKE '$nome' ";
    if (isset($especialidade))
        $filtro[] = " m.idEspecialidade = $especialidade ";
    if (isset($estado))
        $filtro[] = " m.estado = '$estado' ";                    
    if (!empty($filtro))
        $sql .= "WHERE " . implode("AND", $filtro);            
    if (isset($ordenado))
        $sql .= "ORDER BY m.dataUltimoContato";            
    if (isset($limite))
        $sql .= "LIMIT " . $_POST["limite"];
        
    $banco = Factory::getDatabaseInstance(); // minha classe de acesso a dados
    $banco->executeQuery($sql); // executa a query            
    $banco->close(); // fecha a conexão
    
    $medicosArray = array();
    foreach ($banco->getRecords() as $record) {
        $medico = new self($record["medico"]);
        $medico->setEspecialidade(utf8_encode($record["especialidade"]));
        $medico->setMembroColih($record["membroColih"]);
        $medico->setDataUltimoContato($record["dataUltimoContato"]);
        $medico->setId($record["id"]);
        $medicosArray[] = $medico;
    }
    
    return $medicosArray;
}

Editado por bartolossi
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Diego. Obrigado pela resposta.

O problema é a consuta. Se eu fizer a query com o "LIMIT 0, 10" vai retornar no máximo 10 registros.

Então minha dúvida é como obtenho o valor total de registros? Devo fazer uma segunda consulta sem o "LIMIT"?

Depois disso, como faço para retornar o número total de linhas afetadas incluindo isso no objeto "$medico"?

Aguardo retorno.

Obrigado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...