Melhoria na biblioteca
[code]<?php
//mode = ASSOC -> sc_select retornando indice de array como nome da coluna
//mode = NUM -> sc_select retornando indice de array numerico sequencial
//mode = LOOKUP_ASSOC -> sc_lookup retornando indice de array como nome da coluna
//mode = LOOKUP -> sc_lookup retornando indice de array como numerico sequencial
//conn = Vazio -> conexão atual ou o nome da conexão desejada, se for usar um nome de conexão,
// deve criar no evento on_script_init ou on_execute o camando c_select(xx,“Select 1”,“ConexãoNome”);
// para o sc criar as vãriãveis e funções para esta conexão
// Retorna Array com resultado ou com valor===False e $this->db_error=tipo de erro do banco
//Mais rápido que o sc_lookup e otimiza memória pelo fato de não guardar em variáveis globais
Function my_select($_select,$_mode=“ASSOC”,$_conn="") {
$_mode=$_mode==""?“ASSOC”:$_mode;
$_SESSION[‘scriptcase’][‘sc_sql_ult_comando’] = $_select;
$_SESSION[‘scriptcase’][‘sc_sql_ult_conexao’] = ‘’;
$_ds=array();
$_conn=$conn==""?’$this->Db’:’$this->Ini->nm_db’.trim($_conn);
IF (strtolower($_mode)==“assoc” || strtolower($_mode)==“lookup_assoc”)
{
eval($_conn.’->SetFetchMode(ADODB_FETCH_ASSOC);’);
}else
{
eval($_conn.’->SetFetchMode(ADODB_FETCH_NUM);’);
}
$_connexec=’$_ok=($_rx=&’.$_conn.’->Execute($_select));’;
eval($_connexec);
IF ($_ok)
{
IF ( strtolower($_mode)==“lookup_assoc” || strtolower($_mode)==“lookup”)
{
$_y = 0;
$_count = $_rx->FieldCount();
while (!$_rx->EOF)
{
IF (strtolower($_mode)==“lookup”)
{
for ($_x = 0; $_x < $_count; $_x++)
{
$_ds[$_y] [$_x] = $_rx->fields[$_x];
}
}ELSE
{
$_ds[$_y] = $_rx->fields;
}
$_y++;
$_rx->MoveNext();
}
$_rx->Close();
eval($_conn.’->SetFetchMode(ADODB_FETCH_NUM);’);
RETURN $_ds;
}ELSE
eval($_conn.’->SetFetchMode(ADODB_FETCH_NUM);’);
RETURN $_rx;
{
}
}ELSE
{
$_ds=False;
eval(’$this->db_error=’.$_conn.’->ErrorMsg();’);
eval($_conn.’->SetFetchMode(ADODB_FETCH_NUM);’);
RETURN $_ds;
}
}
?>[/code]:
Exemplo de utilização:
[code]sc_lookup(xx,“Select 1”,“Publico”);
echo “Conexão diferente da padrão simulando erro
”;
$_ds=my_select(“SELECT * FROM localidades limit 10”,“NUM”);
if ($_ds === false)
{
echo “Erro de acesso. Mensagem = “.$this->db_error.”
”;
}
else
{
while (!$_ds->EOF){
print_r($_ds->fields);echo “
”;
$_ds->MoveNext();
}
$_ds->Close();
}
unset($_ds);
echo "
Conexão diferente da padrão sc_select
";
$_ds=my_select(“SELECT * FROM localidades limit 10”,"",“Publico”);
if ($_ds === false)
{
echo “Erro de acesso. Mensagem = “.$this->db_error.”
”;
}
else
{
while (!$_ds->EOF){
print_r($_ds->fields);echo “
”;
$_ds->MoveNext();
}
$_ds->Close();
}
unset($_ds);
echo “
Conexão padrão sc_lookup
”;
$meus_dados=my_select(“SELECT id_func,codigo,nome FROM funcionarios limit 10”,“lookup”);
print_r($meus_dados);
echo “
Conexão padrão sc_lookup
”;
$meus_dados=my_select(“SELECT id_func,codigo,nome FROM funcionarios limit 10”,“lookup_assoc”);
print_r($meus_dados);
unset($meus_dados);[/code]
Na prática::
http://iw.servehttp.com:85/sc/iw/app/Publico/mostra_campos/mostra_campos.php?nmgp_outra_jan=true&nmgp_start=SC