Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Função em PHP que retorne 2 valores

Por favor alguém poderia me enviar um código de uma função em php que retorne 2 valores. Obrigado. Ari.

7 respostas

Você não pode retornar dois valores ao mesmo tempo. Mas você pode retornar um array que contenha dois valores.

return array($valor1,$valor2);

Juliano boa noite. Como eu faço depois fora da função para pegar esses valores?

Tenho a função: function parametrosPaginacao(){

//Verificar se está sendo passado na URL a página atual, senao é atribuido a pagina $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;

//Selecionar todos as contas da tabela $result_conta = "select * from copag where copag_ano = {$ano} and copag_mes = {$mes}"; $resultado_conta = mysqli_query($this->conexao, $result_conta);

//Contar o total de contas $total_contas = mysqli_num_rows($resultado_conta);

//Seta a quantidade de contas por pagina $quantidade_pg = 9;

//calcular o número de pagina necessárias para apresentar os contas $num_paginas = ceil($total_contas/$quantidade_pg);

//Calcular o inicio da visualizacao $incio = ($quantidade_pg*$pagina)-$quantidade_pg;

return array($total_contas,$quantidade_pg,$inicio); }

Obrigado, Ari.

$arr = array($total_contas,$quantidade_pg,$inicio); 
$total_contas = $arr[0];
$quantidade = $arr[1];
$inicio = $arr[2];

Uma outra forma de receber os dados da função é usando a função list do php http://php.net/list, ele recebe o array e atribui nas variáveis que você define:

list($total_contas, $quantidade_pg, $inicio) = parametrosPaginacao();

Juliano a Alex obrigado pela ajuda.

solução!

Juliano e Alex boa tarde.

Não consegui sucesso no que vocês me passaram, mas o que eu preciso exatamente é o seguinte:

Tenho a classe ContaDao e dentro desta classe tenho duas funções parametrosPaginacao() e listaContas($mes, $ano).

Na função listaContas uso 2 variavies da função parametrosPaginacao(), gostaria de saber como pegar os valores das variáveis $inicio e $quantidade_pg.

Segue o codigo da classe:

<?php class ContaDao{

private $conexao;

function parametrosPaginacao(){

//Verificar se está sendo passado na URL a página atual, senao é atribuido a pagina $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;

//Selecionar todos as contas da tabela $result_conta = "select * from copag where copag_ano = {$ano} and copag_mes = {$mes}"; $resultado_conta = mysqli_query($this->conexao, $result_conta);

//Contar o total de contas $total_contas = mysqli_num_rows($resultado_conta);

//Seta a quantidade de contas por pagina $quantidade_pg = 9;

//calcular o número de pagina necessárias para apresentar os contas $num_paginas = ceil($total_contas/$quantidade_pg);

//Calcular o inicio da visualizacao $inicio = ($quantidade_pg*$pagina)-$quantidade_pg;

}

function listaContas($mes, $ano){

$listaDeContas = array();

$resultado = mysqli_query($this->conexao, "SELECT c.copag_id, c.copag_mes, c.copag_ano, c.copag_dt_vencto, c.copag_descricao, c.copag_valor, c.copag_nr_doc, c.copag_parcela, c.tipopagto_id, t.tipopagto_descricao, CASE c.copag_status WHEN 'P' THEN 'Pago' ELSE 'Em Aberto' END as copag_status FROM copag c, tipopagto t WHERE c.tipopagto_id = t.tipopagto_id AND c.copag_ano = {$ano} AND c.copag_mes = {$mes} ORDER BY c.copag_dt_vencto limit {$inicio}, {$quantidade_pg}");

while ($conta_array = mysqli_fetch_assoc($resultado)) { $conta = new Conta(); $tipopagto = new TipoPagto(); $tipopagto->tipopagto_descricao = $conta_array['tipopagto_descricao'];

$conta->copag_id = $conta_array['copag_id']; $conta->copag_mes = $conta_array['copag_mes']; $conta->copag_ano = $conta_array['copag_ano']; $conta->copag_dt_vencto = $conta_array['copag_dt_vencto']; $conta->copag_descricao = $conta_array['copag_descricao']; $conta->copag_valor = $conta_array['copag_valor']; $conta->copag_nr_doc = $conta_array['copag_nr_doc']; $conta->copag_parcela = $conta_array['copag_parcela']; $conta->tipopagto = $tipopagto; $conta->copag_status = $conta_array['copag_status'];

array_push($listaDeContas, $conta); } return $listaDeContas; }

} ?>

Olá Ari, na função parametrosPaginacao você tem que retornar os dados desejados em forma de array.

A função listaContas deve chamar a função parametrosPaginacao e receber seu retorno, você pode usar esses dados da forma que o Juliano Fischer disse ou usar a função list do php (http://php.net/list) para atribuir o retorno nas variáveis que desejar.

Segue o ajuste no código:

<?php

class ContaDao
{
    private $conexao;

    function parametrosPaginacao($ano, $mes)
    {
        // Verificar se está sendo passado na URL a página atual, senao é atribuido a pagina
        $pagina = (isset($_GET['pagina'])) ? $_GET['pagina'] : 1;

        // Selecionar todos as contas da tabela
        $result_conta = "select * from copag where copag_ano = {$ano} and copag_mes = {$mes}";
        $resultado_conta = mysqli_query($this->conexao, $result_conta);

        // Contar o total de contas
        $total_contas = mysqli_num_rows($resultado_conta);

        // Seta a quantidade de contas por pagina
        $quantidade_pg = 9;

        // calcular o número de pagina necessárias para apresentar os contas
        $num_paginas = ceil($total_contas / $quantidade_pg);

        // Calcular o inicio da visualizacao
        $inicio = ($quantidade_pg * $pagina) - $quantidade_pg;

        return [$inicio, $quantidade_pg];
    }

    function listaContas($mes, $ano)
    {
        list($inicio, $quantidade_pg) = $this->parametrosPaginacao($ano, $mes);

        $listaDeContas = array();

        $resultado = mysqli_query($this->conexao,
            "SELECT c.copag_id, c.copag_mes, c.copag_ano, c.copag_dt_vencto, c.copag_descricao, c.copag_valor, c.copag_nr_doc, c.copag_parcela, c.tipopagto_id, t.tipopagto_descricao, CASE c.copag_status WHEN 'P' THEN 'Pago' ELSE 'Em Aberto' END as copag_status 
FROM copag c, tipopagto t 
WHERE c.tipopagto_id = t.tipopagto_id AND c.copag_ano = {$ano} 
AND c.copag_mes = {$mes} 
ORDER BY c.copag_dt_vencto limit {$inicio}, {$quantidade_pg}"
        );

        while ($conta_array = mysqli_fetch_assoc($resultado)) {
            $conta = new Conta();
            $tipopagto = new TipoPagto();
            $tipopagto->tipopagto_descricao = $conta_array['tipopagto_descricao'];

            $conta->copag_id = $conta_array['copag_id'];
            $conta->copag_mes = $conta_array['copag_mes'];
            $conta->copag_ano = $conta_array['copag_ano'];
            $conta->copag_dt_vencto = $conta_array['copag_dt_vencto'];
            $conta->copag_descricao = $conta_array['copag_descricao'];
            $conta->copag_valor = $conta_array['copag_valor'];
            $conta->copag_nr_doc = $conta_array['copag_nr_doc'];
            $conta->copag_parcela = $conta_array['copag_parcela'];
            $conta->tipopagto = $tipopagto;
            $conta->copag_status = $conta_array['copag_status'];

            array_push($listaDeContas, $conta);
        }

        return $listaDeContas;
    }

}