Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/08/2015, 10:37
leonagelic
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 10 meses
Puntos: 24
Error no se ah seleccionado base de datos

buenas, saludos gente de forosdelweb, de antemano muchas gracias por cualquier ayuda puedan prestarme, escribo aqui ante un error que me esta pasando y no eh podido resolver, estoy haciendo un pequeño sistema de tesis sobre registro y control de articulos en mvc y poo, y a pesar de que mi archivo de conexion funciona en una clase perfectamente normal en otra clase me dice que no se ah seleccionado la base de datos y no puedo ejecutar las consultas, y ya me tiene un intrigado que error me esta lanzando que no lo logro ver.

Le adjunto la clase me funciona mas la que me da el error junto con mi archivo de conexion:

archivo de conexion que se llama mysqli.php
Código PHP:
class con_mysqli{
     public static function 
conexion(){
         
$db_cfg = require_once 'config/database.php';
            
$conexion = new mysqli($db_cfg["host"], $db_cfg["user"], $db_cfg["pass"], $db_cfg["database"]) or die ("se produjo un error porque: ".$this->mysqli->error);
            
$conexion->query('SET NAMES "'.$db_cfg["charset"].'"');
            return 
$conexion;
        }
}
este archivo de mysqli.php lo incluyo en el index mediante include_once ("config/bd/mysqli.php"); 

archivo database.php donde cargo los datos de bd y los paso a mysqli mediante un arreglo

Código PHP:
<?php
return array(
    
"host"      =>"localhost",
    
"user"      =>"root",
    
"pass"      =>"",
    
"database"  =>"julio",
    
"charset"   =>"utf8"
);
?>
index.php donde incluyo el archivo de mysqli.php
Código PHP:
<?php
session_start
();

/*Archivos de configuracion*/
include_once ("config/bd/mysqli.php");

/*definicion de modelos*/
    
require_once modelos."config".model;
    require_once 
modelos."articulos".model;


if(isset(
$_SESSION["usuario"])){ //preguntamos si esiste la sesion del usuario
    
if(isset($_GET['c'])){ // preguntamos si viene la accion por la url
        
$accion $_GET['c']; //la asiganmos a la variable $accion
        
}else{
            
$accion "panel"// aignamos la accion por defecto que es el contraldor
            
}
    if(
is_file(controlador.$accion.controller)){ //preguntamos si existe el archivo concatenando, quedaria algo asi: "controlador/inicio.php"
            
require_once(controlador.$accion.controller); // cargamos  el archivo
        
}else{
            require_once(
controlador."error".controller); //en caso la accion o el archivo no exista lo enviamos a una ventana de error
            
}
}else{
    require_once(
controlador."login".controller); //de no existir ninguna sesion ya creada,lo redirigimos a la ventana de logueo
    
}
    
?>


clase departamentos_model.php el cual me funciona perfecto puedo mostrar, agregar y elminar un departamento.

Código PHP:
<?php
class Departamentos{
    private static 
$instancia;
    private 
$mysqli;
    
     public static function 
singleton_departamentos(){
        if (!isset(
self::$instancia)) {
            
$miclase __CLASS__;
            
self::$instancia = new $miclase;
        }
        return 
self::$instancia;
    }
    
   public function 
__construct(){
            
$this->mysqli con_mysqli::conexion();
        }
    
    public function 
mostrar_todos(){
        
$result $this->mysqli->query("select * from `departamentos`");
        if (!
$result){
            
printf("Errormessage: %s\n"$this->mysqli->error);
        }
        if(
$result->num_rows >= 1){
            while(
$cam $result->fetch_assoc()){
                
$departamento[] = $cam;
                }
            }
        return 
$departamento;
        }
        
        public function 
Agregar_departamento($nombre,$descripcion){
        
$result $this->mysqli->query("select * from `departamentos` where nombre = '$nombre'");
            if(
$result->num_rows == 1){
                 echo 
"<script>window.location = '?c=agregar_departamento&error=3'</script>"
            }else{
                
$query "insert into `departamentos` values (null, '$nombre', '$descripcion')";
                
$res $this->mysqli->query($query);
                if (!
$res){
            return 
false;
                    }else{
                        return 
true;
                        }        
                }
        }
        
        public function 
Eliminar_departamento($id){
        
$result $this->mysqli->query("select * from `departamentos` where id = '$id'");
            if(!
$result->num_rows >= 1){
                 echo 
"<script>window.location = '?c=agregar_departamento&error=4'</script>"
            }else{
                
$query "delete from `departamentos` where id = '$id'";
                
$res $this->mysqli->query($query);
                if (!
$res){
            return 
false;
                    }else{
                        return 
true;
                        }        
                }
        }
        
        
         public function 
__clone(){
        
trigger_error('La clonación de este objeto no está permitida'E_USER_ERROR);
    }
}
?>
y esta es la clase ue no me funciona, el or die me lanza error en el que no se ah seleccionado la base de datos

Código PHP:
<?php
class Articulos{
 private static 
$instancia;
private 
$mysqli;
    
     public static function 
singleton_Ar(){
        if (!isset(
self::$instancia)) {
            
$miclase __CLASS__;
            
self::$instancia = new $miclase;
        }
        return 
self::$instancia;
    }
    
    public function 
__construct(){
            
$this->mysqli con_mysqli::conexion();
        }
        
        public function 
Agregar_articulos($serial,$producto,$descripcion,$marca,$modelo,$departamento,$precio){    
        
$r $this->mysqli->query("SELECT * FROM `articulos` WHERE `serial` = '$serial'") or die ("se produjo un error porque: ".$this->mysqli->error);
            if(
$r->num_rows == 1){
                 echo 
"<script>window.location = '?c=agregar_productos&error=3'</script>"
            }else{
                if (!
$this->mysqli->query("insert into `articulos` (`id`, `serial`, `nombre`, `descripcion`, `marca`, `modelo`, `departamento`, `precio_sin_iva`) values (null, '".$serial."', '".$producto."', '".$descripcion."', '".$marca."', '".$modelo."', '".$departamento."', '".$precio."')")){
            return 
false;
                    }else{
                        return 
true;
                        }        
                }
        }
        
        
         public function 
__clone(){
        
trigger_error('La clonación de este objeto no está permitida'E_USER_ERROR);
    }
}
?>
El error me lo lanza en el primera consulta en or die, e copiado incluso desde la otra clase y no me funciona obviamente modificado los nombres de tablas y campos, etc y eh probado varias sintaxis de select, etc y siempre me dice que no se ah seleccionado la bd, por favor espero su ayuda si hay algun error que no eh visto o me ah pasado por alto y disculpen mi programacion estoy en fase de aprendiz. espero me puedan ayudar y muchisimas gracias.