Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eae,
To fazendo um sistema e priciso fazer muitos selects em varias páginas, então pensei em por exemplo fazer uma função e chamar ela em cada página que eu for precisar.
O código da função tá assim
function dados_user($usu){
global $dbconnect;
$dados = array(':usuario' => $usu);
$verific_user = $dbconnect->prepare('SELECT * FROM ativo WHERE login=:usuario');
$verific_user->execute($dados);
$total_user = $verific_user->rowCount();
$resut_user = $verific_user->fetch(PDO::FETCH_OBJ);
$user_conta_admin=$resut_user->conta_admin;
$user_creditos=$resut_user->creditos;
$user_clicados=$resut_user->clicados;
$user_clicados_temp=$resut_user->clicados_temp;
$user_parou_cliques=$resut_user->parou_cliques;
$user_blog_visto=$resut_user->blog_visto;
$user_exibe_alerta=$resut_user->exibe_alerta;
$user_limite=$resut_user->limite;
$user_login=$resut_user->login;
$user_senha=$resut_user->senha;
$user_email=$resut_user->email;
$user_nome=$resut_user->nome;
}
porem quando chamo a função ela ñ faz o select,
chamo ela assim
$usuario = $_POST["usuario"];
dados_user($usuario);
Como resolver isso ? Até pensei pegar somente a parte do select, salvar em outra página php e da um include, mais acho q isso ñ seria a melhor alternativa
@Edit
Corrigindo, acabei me expressnado mal. Na verdade quero q retorne as variáveis com seus respectivos valores, não somente os valores das variáveis.
Funcionou,
Fim assim o foreach
foreach ( $users as $user )
{
$total_user = $user->rowCount();
$user_conta_admin=$user->conta_admin;
$user_creditos=$user->creditos;
$user_clicados=$user->clicados;
$user_clicados_temp=$user->clicados_temp;
$user_parou_cliques=$user->parou_cliques;
$user_blog_visto=$user->blog_visto;
$user_exibe_alerta=$user->exibe_alerta;
$user_limite=$user->limite;
$user_login=$user->login;
$user_senha=$user->senha;
$user_email=$user->email;
$user_nome=$user->nome;
mais outra coisa que preciso é o total de registros, pelo seu código acho que não da pra puxar o rowCount();
e tbm terei que chamar o foreach em todas as páginas, existe alguma maneira de colocar o foreach dentro da própria função ?
tipo eu chamo somente a função e no meu script abaixo ja posso mexer com a variável $user_email por exemplo
>
Beraldo, to fazendo o foreach assim mais não ta retornando as variáveis
foreach ( $users as $user )
{
$user_status=$user->status;
$user_senha=$user->senha;
}
Nesse trecho você apenas atribuiu os valores. Dê um echo neles para exibí-los.
E outra coisa que preciso é o total de registros, pelo seu código acho que não da pra puxar o rowCount();
É só alterar o array de retorno:
function dados_user($usu)
{
global $dbconnect;
$dados = array(':usuario' => $usu);
$verific_user = $dbconnect->prepare('SELECT * FROM ativo WHERE login=:usuario');
$verific_user->execute($dados);
$total_user = $verific_user->rowCount();
$return = array(
'total' => total_user
);
$return['dados'] = array();
while ( $resut_user = $verific_user->fetch(PDO::FETCH_OBJ) )
{
$return['dados'][] = $resut_user;
}
return $return;
}$usuario = $_POST["usuario"];
$users = dados_user($usuario);
$total = $users['total'];
foreach ( $users['dados'] as $user )
{
echo $user->login;
}Entendi, só mais algumas coisas.
terei que chamar o foreach em todas as páginas, existe alguma maneira de colocar o foreach dentro da própria função ?
tipo eu chamo somente a função e no meu script abaixo ja posso mexer com a variável $user_email por exemplo
OBS: não quero mostrar os valores na tela, quero mesmo é as variáveis pois abaixo no script irei precisar delas
Vi esse artigo quer pode me ajudar, mais não sei como : http://rubsphp.blogspot.com.br/2012/11/foreach-com-list-no-php-5.5.html
Beraldo, se possível da uma olhada lá nos exemplos.
a função list() nada mais é do que um loop, internamente.
Por exemplo, se uma função hipotética retornar() retorna um array de 3 posições, você poderia pegar esses 3 valores de duas formas:
Primeira:
$arr = retornar();
$val1 = $arr[0];
$val2 = $arr[1];
$val3 = $arr[2];
Ou simplesmente:
list( $val1, $val2, $val3 ) = retornar();
Mas seu caso é diferente: é retornado um array com uma quantidade variável de índices (essa quantidade depende do retorno do BD). Por isso usei foreach no exemplo.
Entenda que uma função só retorna um valor. Ou seja, a função nunca criará as variáveis pra você, como você está querendo.
Se sua intenção é mostrar sempre o mesmo conteúdo, com base no retorno do banco, por que não cria um único arquivo PHP que gere esse conteúdo? Aí você dá um require nele nos outros arquivos que precisem exibir esse conteúdo.
Uma alternativa mais alto nível é usar um gerenciador de templates, como o Smarty. Deixa o código mais limpo, sem misturar lógica PHP com interface HTML
Obrigado Beraldo.
Irei fazer isso, é a melhor maneria eu acho.
funções não retornam mais de um valor. Então no seu caso tem que retornar um array
Pode fazer algo assim:
function dados_user($usu)
{
Depois, para chamar:
{