Ir para o conteúdo
NCS_One

Duvida.

Mensagens Recomendadas

NCS_One    2
NCS_One

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NCS_One    2
NCS_One

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NCS_One    2
NCS_One

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NCS_One    2
NCS_One

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade