class BD { var $conexao; var $conectado=false; var $debug = true; // Conectando com o banco de dados: function BD() { $this->bd_conectar(); } function bd_conectar() { if($this->conectado===false) { include "bd_conex.php"; $this->conexao = mysql_connect($servidor, $usuario, $senha) or die('Nao foi possivel conectar.'); mysql_select_db($banco) or die ('Nao foi possivel conectar-se. '.mysql_error()); $this->conectado = true; } } function fechar_conexao() { if($this->conectado===true) { mysql_close($this->conexao); $this->conectado = false; } } function bd_erro($sql) { $conex = $this->conexao_ig; if(empty($conex)) { $conex = $this->conexao; } if($this->debug == true ) { #$erro = error_get_last(); echo "
\nPuxa, um erro! De novo!
\n{$mysql_error}\nExpressão SQL:\n¯¯¯¯¯¯¯¯¯¯¯¯¯\n".$sql."\n\n";
echo "\nInformações adicionais:\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
$trace = debug_backtrace();
foreach($trace as $indice => $t) {
if($indice > 0) {
echo "\nArquivo: ".$t["file"]."\nlinha: ".$t["line"]." ";
if(!empty($t["class"])) {
echo $t["class"]."->";
}
echo "".$t["function"]." (";
if(!empty($t["args"])) {
if(is_array($t["args"])) {
foreach($t["args"] as $args) {
echo "\"".$args."\", ";
}
}
}
echo ")\n";
}
}
echo "";
exit();
}
}
function bd_erro_old($sql) {
$conex = $this->conexao_ig;
if(empty($conex)) {
$conex = $this->conexao;
}
if($this->debug == true ) {
#$erro = error_get_last();
echo "\nPuxa, um erro! Isto não é incrível?
\n".mysql_error()."\n\nExpressão SQL:\n¯¯¯¯¯¯¯¯¯¯¯¯¯\n".$sql."\n\n";
#if(!empty($erro)) {
echo "Possível origem:\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n";
$trace = debug_backtrace();
echo "Arquivo: ".$trace[2]["file"]."\nlinha ".$trace[2]["line"]."\n";
echo "\nChamando a função ".$trace[1]["function"]."\n";
echo "linha ".$trace[1]["line"]." de ".$trace[1]["file"];
echo "";
#}
exit();
}
}
// executando comandos SQL:
function bd_cod($servico,$apelido_do_campo="",$condicao="") {
$chamada = $servico;
if(!empty($apelido_do_campo)) {
$chamada = $apelido_do_campo;
}
//O argumento pode ser passado pelo endereço da página ou pelas palavras mágicas do conteúdo das páginas:
if(array_key_exists($chamada,$_GET)) {
$valor = $_GET[$chamada];
} else {
$valor = $this->argumentos[0];
}
if(!is_null($valor)) $valor = trim($valor);
//tabela e campo
if(!empty($condicao)) { $condicao = "AND $condicao"; }
$tabela = "ger_$servico";
$campo = "cod$servico";
if(is_numeric($valor)) {
//verifica se este código existe
$sql = "SELECT $campo FROM $tabela WHERE $campo = '$valor' $condicao";
if($this->bd_campo($sql) !== false){
return $valor;
} else {
$valor = NULL;
}
}
//Verifica se é para abrir o principal:
if(gettype($valor)=="NULL" || empty($valor)) {
if($this->bd_campoexiste($tabela,"principal")) {
$sql = "SELECT $campo FROM $tabela WHERE principal=1 $condicao LIMIT 1";
$valor = $this->bd_campo($sql);
return $valor;
} else {
return false;
}
}
//Verifica se foi chamado pelo código, pelo título:
if(is_string($valor)) {
if($this->bd_campoexiste($tabela,"nome")) {
$coluna = "nome";
} elseif($this->bd_campoexiste($tabela,"titulo")) {
$coluna = "titulo";
} else {
return false;
}
$sql = "SELECT $campo FROM $tabela WHERE $coluna='$valor' $condicao LIMIT 1";
$valor = $this->bd_campo($sql);
return $valor;
}
}
function bd_campoexiste($tabela,$campo) {
$sql = "SELECT * FROM $tabela LIMIT 1";
$rs = mysql_query($sql);
$colunas = mysql_fetch_assoc($rs);
if(array_key_exists($campo,$colunas)){
return true;
} else {
return false;
}
}
function bd_select($sql) {
$sql = trim($sql);
if(!empty($sql)) {
if(strpos($sql," ")===false) {
$sql = "SELECT * FROM $sql";
}
$this->BD();
//$sql = mysql_real_escape_string($sql,$this->conexao);
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
if(mysql_num_rows($rs) > 0) {
$L = mysql_fetch_array($rs, MYSQL_ASSOC);
return $L;
} else {
return false;
}
}
}
function bd_campo($sql, $campo="", $valor_do_filtro="") {
$sql = trim($sql);
if(!empty($sql)) {
if(strpos($sql," ")===false) {
$filtro = str_replace("ger_","cod",$sql);
if(!empty($campo)) {
$sql = "SELECT $campo FROM $sql WHERE $filtro = '$valor_do_filtro' LIMIT 1";
} else {
$sql = "SELECT $filtro FROM $sql LIMIT 1";
}
}
$this->BD();
//$sql = mysql_real_escape_string($sql,$this->conexao);
//echo $sql;
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
if(mysql_num_rows($rs) > 0) {
$L = mysql_fetch_array($rs, MYSQL_NUM);
$Linha = $L[0];
return $Linha;
} else {
return false;
}
}
}
function bd_anterior_proximo($sql,$cod_atual,$campo="") {
$sql = trim($sql);
if(!empty($sql)) {
if(strpos($sql," ")===false) {
$campo = str_replace("ger_","cod",$sql);
$sql = "SELECT $campo FROM $sql";
}
$this->BD();
//$sql = mysql_real_escape_string($sql,$this->conexao);
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
if(mysql_num_rows($rs) > 0) {
//até hoje me pergunto como consegui fazer isso
while($L = mysql_fetch_array($rs)) {
if(!empty($busca_o_proximo)) { //se já encontrou no loop anterior
$proximo = $L[$campo]; //define o próximo
$busca_o_proximo = false; // pára de procurar o próxima
}
if($L[$campo] == $cod_atual) {//se encontrou o atual
$busca_o_proximo = true;
if(!empty($codanterior)) { //pega o codanterior, passado no loop anterior
$anterior = $codanterior;
}
}
$codanterior = $L[$campo];
}
$arr = array();
if(!empty($anterior)) { $arr["anterior"] = $anterior ;}
if(!empty($proximo)) { $arr["proximo"] = $proximo ;}
return $arr;
} else {
return false;
}
}
}
function bd_lista($sql) {
$sql = trim($sql);
if(!empty($sql)) {
if(strpos($sql," ")===false) {
$sql = "SELECT * FROM $sql";
}
$this->BD();
//$sql = mysql_real_escape_string($sql,$this->conexao);
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
if(mysql_num_rows($rs) > 0) {
$i = 0;
while($L = mysql_fetch_array($rs, MYSQL_ASSOC)) {
$Linha[$i] = $L;
$i++;
}
return $Linha;
} else {
$Linha = array();
return $Linha;
}
}
}
function bd_quant($sql) {
$sql = trim($sql);
if(!empty($sql)) {
if(strpos($sql," ")===false) {
$sql = "SELECT * FROM $sql";
}
$this->BD();
//$sql = mysql_real_escape_string($sql,$this->conexao);
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
return mysql_num_rows($rs);
}
}
//Construindo e executando expressões SQL:
function bd_executa($sql) {
//Conecta ao banco de dados
$this->BD();
//executa a expressão
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
}
function bd_insere($tabela) {
//Conecta ao banco de dados
$this->BD();
//pega os nomes das colunas da tabela e passa para o array $R:
$sql = "SELECT * FROM $tabela";
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
$numcol = mysql_num_fields($rs);
for($i = 0; $i < $numcol; $i++){
$R[mysql_field_name($rs,$i)] = mysql_field_name($rs,$i);
}
//pega os ítens do formulário, compara com as colunas da tabela e constrói expressão SQL
$sqlA = "";
$sqlB = "";
$sql="INSERT INTO $tabela (";
foreach ($_POST as $coluna => $valorcoluna) {
if(array_key_exists($coluna,$R)) {
$sqlA .= " $coluna,";
$sqlB .= " '$valorcoluna',";
}
}
$sqlA = substr($sqlA,0,-1);
$sqlB = substr($sqlB,0,-1);
$sql .= $sqlA.") VALUES (".$sqlB.")";
//executa a expressão
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
//pega o registro recém adicionado
$cod = str_replace("ideia_","cod",$tabela);
$cod = str_replace("ger_","cod",$cod);
$sql = "SELECT * FROM $tabela ORDER BY $cod DESC LIMIT 1";
$resultado = $this->bd_select($sql) or die($sql);
return $resultado;
}
function bd_atualiza($tabela,$filtro="",$valor_filtro="") {
//Conecta ao banco de dados
$this->BD();
//pega os nomes das colunas da tabela e passa para o array $R:
$sql = "SELECT * FROM $tabela";
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
$numcol = mysql_num_fields($rs);
for($i = 0; $i < $numcol; $i++){
$R[mysql_field_name($rs,$i)] = mysql_field_name($rs,$i);
}
//pega os ítens do formulário, compara com as colunas da tabela e constrói expressão SQL
$sql = "UPDATE $tabela SET ";
foreach ($_POST as $coluna => $valorcoluna) {
if(array_key_exists($coluna,$R))
$sql .= " $coluna = '$valorcoluna',";
}
$sql = substr($sql,0,-1);
//filtro
if(empty($filtro)) {
$filtro = str_replace("ger_","cod",$tabela); $valor_filtro = $_POST["$filtro"];
$filtro = str_replace("ideia_","cod",$filtro); $valor_filtro = $_POST["$filtro"];
}
$sql .= " WHERE $filtro = '$valor_filtro'";
//executa a expressão
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
}
function bd_exclui($tabela,$filtro="",$valor_filtro="") {
//Conecta ao banco de dados
$this->BD();
//filtro
if(empty($filtro)) {
$filtro = str_replace("ger_","cod",$tabela); $valor_filtro = $filtro;
$filtro = str_replace("ideia_","cod",$filtro); $valor_filtro = $filtro;
}
$sql = "DELETE FROM $tabela WHERE $filtro = '$_POST[$valor_filtro]'";
//executa a expressão
$rs = mysql_query($sql,$this->conexao) or $this->bd_erro($sql);
}
function bd_listapaginada ($tabela = "", $where = "", $orderby = "", $opcao=1, $sql2 = "") {
return $this->listapaginada ($tabela, $where, $orderby, $opcao, $sql2) ;
}
function listapaginada ($tabela = "", $where = "", $orderby = "", $opcao=1, $sql2 = "") {
//Conecta ao banco de dados
$this->BD();
//pegando endereço da página sem o 'p' ou o 'q'
$qs = $_SERVER['QUERY_STRING'];
$array_qs = split("&",$qs); $qs = "";
foreach ($array_qs as $i) {
if((substr($i,0,2) != "p=") && (substr($i,0,2) != "q=")) $qs .= $i."&"; }
$qs = substr($qs,0,-1);
// pegando num da página a ser visualizada
if(empty($_GET["p"])) { $p = 1; } else { $p = $_GET["p"]; }
if(!is_numeric($p)) $p = 1;
//quantidade por página
if (empty($_GET["q"])) {
if(empty($_COOKIE["q"])) {
$q=10;
} else {
$q=$_COOKIE["q"];
}
} else {
$q=$_GET["q"];
}
if(!is_numeric($q)) $q = 10;
$_COOKIE["q"] = $q;
// Consultando o total de registros:
if(empty($sql2)) { $sql = "SELECT * FROM $tabela $where";
} else { $sql = $sql2; }
$rs = mysql_query($sql,$this->conexao) or die(mysql_error()."
";
}
else {
$link_numero_das_paginas .= "$i ";
$img_numero_das_paginas .= "
";
}
}
// calculando o limite inicial para a consulta SQL
$limite_inicial = abs($p * $q - $q);
// consultar os registros desta página de resultados
if(empty($sql2)) { $sql = "SELECT * FROM $tabela $where $orderby LIMIT $limite_inicial, $q";
} else { $sql = $sql2." LIMIT $limite_inicial, $q"; }
$rs = mysql_query($sql,$this->conexao) or die(mysql_error());
$ultimo_registro = mysql_num_rows($rs);
// O primeiro registro para exibição
$primeiro_registro = $limite_inicial + 1;
// O último registro para exibição
$ultimo_registro = $primeiro_registro + $ultimo_registro - 1;
//textos de navegação
$pagina = "Página $p. ";
$total_de_paginas = "Total de páginas: $tp. ";
$ir_para = "Ir para: $link_numero_das_paginas ";
($p != $tp)?($ir_para_ultima=" Última "):($ir_para_ultima="");
($p != 1)?($ir_para_primeira=" Primeira "):($ir_para_primeira="");
$total_geral = "Total: $t registros. ";
if($t > 0) {
if ($primeiro_registro == $ultimo_registro) {
$total_exibido = "Exibindo registro $primeiro_registro.";
} else {
$total_exibido = "Exibindo de $primeiro_registro a $ultimo_registro.";
}
} else {
$total_exibido = "";
}
if($t > 5) {
$quant_por_pg = "