• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NCS_One

Duvida.

11 mensagens neste tópico

Ois

Tenho uma class que eh a Session onde trato de tudo da sessao, a minha duvida eh : quando vou ah DB buscar dados para apresentar

na pagina devo colocar esses dados num array ou variaveis da class Session e depois preencher a pagina acedendo a esses dados ou devo

enquanto estou a preencher a pagina ir buscar os dados ah DB ? Se houver outra maneira mais correcta agradecia que partilhassem.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aceder à sessão aqui e ali não é grave, mas é boa prática preparar as variaveis todas que houver a preparar antes de iniciares o output para depois o código que mostra a página não ter muita complicação lá pelo meio.

Eu costumo preparar tudo antes, escapar strings, construir strings que contenham fragmentos variáveis, fazer todo e qq parsing, etc.

Quando os dados são pedidos a uma base de dados então esta pratica ainda é mais importante pois estar a fazer queries aqui e ali torna-se menos eficiente.

O ideial é mesmo, pedires o que tiveres a pedir à base de dados e logo de seguida fechares ligação à base de dados.

Ou seja, a resposta é: sim, deves preparar tudo o que precisas antes e depois usar conforme as necessidades do output.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela resposta.

Mais uma duvida :

Tenho uma class chamada DataBase com a funçao GetData() :

function GetData($QueryStr, $Subj);
{
...
$Query = sprintf($QueryStr,
	mysql_real_escape_string($Subj, $Connection));
...
}

Depois o pagina.php :

...
$DataBase->GetData("SELECT * FROM users WHERE name = ('%s')", "Nome do utilizador");
...

Eh boa prática fazer isto ?

Desde ja agradeço a resposta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nada contra. Não te esqueças é que podes querer inserir vários parâmetros na query. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para vários parâmetros?

function GetData($QueryStr, $Subjs){
#...
$Query = $QueryStr;
if(!is_array($Subjs)) $Subjs = array($Subjs); #permite o uso de um elemento apenas, sem necessitar do array como wrapper
foreach($Subjs as $Subj){
    $Query = sprintf($Query,
	mysql_real_escape_string($Subj, $Connection));
}
#...
}

# Para chamar:
$DataBase->GetData("SELECT * FROM users WHERE name = ('%s')", "Nome do utilizador");
# ou
$DataBase->GetData("SELECT * FROM users WHERE name = ('%s') AND apelido = ('%s') OR id = %i", array("Nome do utilizador", "Apelido do utilizador", 1));

EDIT: Alterado para !is_array

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela resposta.

Esta me a dar erro :

function GetData($QueryStr, $Subjs){
#...
$Query = $QueryStr;
if(!is_array($Subjs)) $Subjs = array($Subjs); #permite o uso de um elemento apenas, sem necessitar do array como wrapper
foreach($Subjs as $Subj){
    $Query = sprintf($Query,
	mysql_real_escape_string($Subj, $Connection));
}
#...
}

# Chamando assim ;
$DataBase->GetData("SELECT * FROM user WHERE id = ('%s') AND name = ('%s')", Array("123", "456"));

Da me o seguinte erro :

Warning: sprintf() [function.sprintf]: Too few arguments in C:\... on line 238

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uhm, exactamente o que eu temia... Depois de uma ida ao php.net,

function GetData($QueryStr, $Subjs){
#...
if(!is_array($Subjs)) $Subjs = array($Subjs); #permite o uso de um elemento apenas, sem necessitar do array como wrapper
foreach($Subjs as $k => $v) $Subjs[$k] = mysql_real_escape_string($v, $Connection));
$Query = vsprintf($QueryStr, $Subjs);
#...
}

# Chamando assim ;
$DataBase->GetData("SELECT * FROM user WHERE id = ('%s') AND name = ('%s')", array("123", "456"));

Btw, é array e não Array.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ois.

Mais uma duvida.

Os dados que vou buscar ah DB devem ser guardados num variavel da class Session ou numa variavel de sessao ?

Qual a melhor pratica ?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ois.

Mais uma duvida.

Os dados que vou buscar ah DB devem ser guardados num variavel da class Session ou numa variavel de sessao ?

Qual a melhor pratica ?

Obrigado.

Depende da logica da tua aplicação. Aparentemente tens uma classe para a sessão, se a estás a usar então faz todo o sentido usa-la sempre para que a tua aplicação não siga diferentes logicas e fique confusa. Mas não vai o diabo à vila se não o fizeres.

Se os dados não forem usados em mais do que uma pagina então nem

e preciso guarda-los na sessão.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora