<?
/**
  * Classe dos métodos base da ligação e interacção à base de dados
  *
  * João Vieira: No frontiers, no limits for development
  * Copyright 1999-2004 (c) João Vieira
  * http://brevespot.com
  * @version: classe.bd.php [2004-06-11], revisto a 2009-03-27 para PDO via joaovieira.com
  *
  */

 //classe principal
class BD_BasikusNet {
    /* variáveis públicas */
    var $debug;
    var $servidor;
    var $basededados;
    var $utilizador;
    var $password;
    
    /* variáveis privadas */
    var $conn;
    var $rstemp;
    var $registo;
    
    //função da classe, no fundo o constructor
    function BD_BasikusNet ($servidor,$utilizador,$password,$basededados,$debug=0) {
        $this->debug = $debug;
        if ($this->debug){
            print "\n\nDebug Activo <br>\n";
        }	
        $this->servidor = $servidor;
        $this->utilizador = $utilizador;
        $this->password = $password;
        $this->basededados = $basededados;
        $this->conecta();
    }
                
    //para conexão à base de dados
    function conecta (){ 
        if ($this->debug) print "A conectar ao servidor " . $this->servidor . " <br>\n";
        #$this->conn = mysql_pconnect($this->servidor,$this->utilizador,$this->password)
        $this->conn = new PDO('mysql:host=' . $this->servidor . ';dbname=' . $this->basededados, $this->utilizador, $this->password)
                or die("Conexão ao servidor " . $this->servidor . " falhou <br>\n");
        #if ($this->debug) echo "Seleccionar a base de dados " . $this->basededados . " <br>\n";
        #mysql_select_db($this->basededados,$this->conn)
        #        or die("Erro-conecta:".mysql_errno()." : ".mysql_error()."<br>\n");
        return $this->conn;
    }
    
    //para executar os pedidos à base de dados
    function pedido($sql){
        if ($this->debug) {
            print "A executar SQL:  " . $sql . " <br>\n\n";
        }
        if (   stripos($sql, 'NSERT') !== false
            || stripos($sql, 'PDATE') !== false
            || stripos($sql, 'ELETE') !== false 
            || stripos($sql, 'OCK TABLE') !== false){
            $this->rstemp = $this->conn->exec($sql);
                #or die("Erro-exec:" . $this->conn->errorCode() . " : " . $this->conn->errorInfo() . "<br>\n");
        }else{
            $this->rstemp = $this->conn->query($sql);
                #or die("Erro-query:" . $this->conn->errorCode() . " : " . $this->conn->errorInfo() . "<br>\n");
        }	
        #$this->rstemp = mysql_query($sql,$this->conn) 
        #    or die("Erro-query:".mysql_errno()." : ".mysql_error()."<br>\n");
        return $this->rstemp;
    }
    
    //retorna erro corrente
    function erro(){
        print "<br/> \n ->| <b>" . $db->errorInfo() . "</b> |<- ";
    }
    
    //retorna o numero de registos ersultantes do pedido à base de dados
    function registosNumero(){
        $num = count($this->rstemp);
        if ($this->debug) { print $num . " registos devolvidos <br>\n\n";	 }
        return $num;	
    }
    
    //retorna o último identificador da última tabela onde foi inserido um registo
    function registosUltimo() {
        $num = $this->conn->lastInsertId();
        if ($this->debug) print "Último registo teve número " . $num . " <br>\n\n";
        return $num;
    }
    
    //retorna o seguinte registo da lista retornada do query  	
    function registosProximo() {
        /*
        if ($this->debug) 
        {
                echo "Processa o seguinte registo... ";
        }	
        $this->registo = @mysql_fetch_array($this->rstemp);
        $status = is_array($this->registo);
        if ($this->debug && $status) 
        {
                echo "OK <br>\n\n";
        }	
        elseif ($this->debug) 
        {
                echo "EOF <br>\n\n";
        }	
        return($this->registo);
        */
        return true;
    }
    
    //retorna o seguinte registo da lista retornada do query por posição
    function registosProximop() {
        /*
        if ($this->debug) ��
        {
                echo "Processa o seguinte registo... ";
        }	
        $this->registo = @mysql_fetch_row($this->rstemp);
        $status = is_array($this->registo);
        if ($this->debug && $status) 
        {
                echo "OK <br>\n\n";
        }	
        elseif ($this->debug) 
        {
                echo "EOF <br>\n\n";
        }	
        return($this->registo);
        */
        return true;        
    }  	
    
    //devolve o conteúdo do campo do registo retornado
    function campo($field){
        /*
        if ($this->debug){
            echo "Busca $field ... ";
            if (array_key_exists($field,$this->registo)) echo "OK <br>\n\n";
            else echo "Não achou " . $field . " <br>\n\n";
        }
        return($this->registo[$field]);
        */
        return true;
    }

}
?>