Por favor alguém poderia me enviar um código de uma função em php que retorne 2 valores. Obrigado. Ari.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Por favor alguém poderia me enviar um código de uma função em php que retorne 2 valores. Obrigado. Ari.
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.
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;
}
}