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.