Quantcast
Channel: Comunidad Underground Hispana
Viewing all articles
Browse latest Browse all 11602

[G] Crear un cms Panel para nuestra web

$
0
0
Buenas a todos, estoy desarrollando un panel de administración para web's(Backend o como gusten llamarlo). Esta sujeto a criticas constructivas o no, todo dato que aporten será bienvenido.

La idea original es crear un panel de administración con el cual podamos manejar nuestra web, es decir, editar articulos, crear articulos, crear categorias y subcategorias, subir contenido Y LO MÁS IMPORTANTE: "Que el diseño de la web a vistas de los usuarios visitantes sea basandose en una estructura o elementos marcados para llevar un diseño estandar"

El proyecto lo estoy realizando en:
SERVIDOR: PHP 4 o superior + MySQL
CLIENTE: HTML5+CSS3+JS(ajax,jquery).

Lo primero que realize fue analizar las necesidades y generar las tablas de la base de datos.
Empece por la base de datos, por que como he comentado en más de una ocación siempre la casa se empieza a construir por los simientos, y en el desarrollo de software similares a este los simientos son la Base de Datos

Tras estar pensando deduje que las tablas serán las siguientes:



Descripcion de cada tabla:





























Tabla Configuración. Se me olvido cambiar el nombre en la cabecera de la tabla xls



Despues de tanto pensarme que estructura de ficheros utilizar para la web y ver muchas estructuras de ficheros navegando, se me ocurrió hacerlo a la vieja usansa.




Despues de tanta lógica y organización empiezo a mirar código.
Para empezar se me ocurre mirar como conectarme a la base de datos, para ello tengo la siguiente clase que tendría que cambiar ciertos metodos o nombres de metodos y mejorar la gestion de errores.
Donde esta clase sería el fichero:
Cita:

/panel/lib/conexion.php
Código:

<?php
/*
        Created by cuban 22/01/2013 ver: 0.1b
        Modo de uso:
$consulta2 = $cn->Mostrar_Consulta("campo1,campo2,campo3","nombre_tabla","campo1=:campo1",array(":campo1"=>"hit's"));
//Retorna un tipo integer
$consulta2 = $cn->Mostrar_Consulta("*","nombre_tabla","campo1=:campo1",array(":campo1"=>"hit's"));
//Retorna un array asociativo, si existe un error retorna null
$consulta2 = $cn->Mostrar_Consulta("*","nombre_tabla",null,null);
//Retorna un array asociativo, si existe un error retorna null
$cn->get_error();//Para ver el error
//Actualizar un campo
$cn->Actualizar_Campos($tabla,$campos,$camposASOC,$values,$where,$WhereValues) {
$cn->Actualizar_Campos("Nombre_Tabla","campo1,campo2,campo3",":campo1,:campo2,:campo3","valorcampo1,valorc2,vc3","campo1=:campo1",array(":campo1"=>"hit's"))
$cn->Actualizar_Campos("Nombre_Tabla","campo1,campo2,campo3",":campo1,:campo2,:campo3","valorcampo1,valorc2,vc3",null,null)
//Eliminar registros
$cn->Elminar_Registros("Nomre_Tabla","campo1=:campo1",array(':campo1'=>"hit's"))
$cn->Elminar_Registros("Nomre_Tabla",null,null)       
*/
$cn = new db("localhost",3306,"admin_caybeach","root","5432");
$consulta1 = $cn->num_rows("SELECT * FROM cms_idiomas");
$consulta2 = $cn->Mostrar_Consulta("*","cms_idiomas","id=:id",array(':id'=>"es"));

print_r($consulta2);
class db {
        public $errores=array();
    protected $connection = null;
    public function __construct($hostname,$port,$dbname,$username,$password) {
                #Creando la conexión
        try {
            # Estableciendo la conexión con MySQL mediante PDO
            $this->connection = new PDO("mysql:dbname=$dbname;host=$hostname;port=$port", $username, $password);
            $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            $this->connection = null;
                        $error=array('date("Y-m-d H:i:s")'=>"".$e->getMessage());
                        $this->errores = array_merge($error, $this->errores);
            die($e->getMessage());
        }
    }
   
    public function num_rows($query) {
                #Obtener el numero de filas en la consulta.
        # Preparando para ejecutar la consulta.
                try {
                        $stmt = $this->connection->prepare($query);
                        $stmt->execute();
                        return $stmt->rowCount();# Retornando el nº de filas
                        }
                } catch (PDOException $e) {
                        $error=array('date("Y-m-d H:i:s")'=>"".$e->getMessage());
                        $this->errores = array_merge($error, $this->errores);
                        return -1;
                }
    }
        public function Insertar($campos,$camposASOC$tabla,$where,$values) {
                # Mostrar datos de una tabla.
                try {
                        #Preparando la consulta
                        $stmt = $this->connection->prepare("INSERT into $tabla ($campos) VALUES($camposASOC)");
                        $stmt->execute($values);
                        return true;
                } catch (PDOException $e) {
                        $error=array('date("Y-m-d H:i:s")'=>"".$e->getMessage());
                        $this->errores = array_merge($error, $this->errores);
                        return false;
                }
        }
        public function Mostrar_Consulta($campos,$tabla,$where,$values) {
                # Mostrar datos de una tabla.
                try {
                        if ($where==null) {#El $where tendrá valor null si no se se requiere
                                #Preparando la consulta
                                $stmt = $this->connection->prepare("SELECT $campos FROM $tabla");
                                $stmt->execute();
                        } else {
                                $stmt = $this->connection->prepare("SELECT $campos FROM $tabla WHERE $where");
                                $stmt->execute($values);
                        }
                        return $stmt->fetchAll(PDO::FETCH_ASSOC);
                } catch (PDOException $e) {
                        $error=array('date("Y-m-d H:i:s")'=>"".$e->getMessage());
                        $this->errores = array_merge($error, $this->errores);
                        return null;
                }
        }
        public function Actualizar_Campos($tabla,$campos,$where,$values) {
                try {
                        if ($where==null) {#El $where tendrá valor null si no se se requiere
                                $stmt = $this->connection->prepare("UPDATE $tabla SET $campos ");
                                $stmt->execute();
                        } else {
                                $stmt = $this->connection->prepare("UPDATE $tabla SET $campos WHERE $where");
                                $stmt->execute($values);
                        }
                        return true;
                } catch (PDOException $e) {
                        $error=array('date("Y-m-d H:i:s")'=>"".$e->getMessage());
                        $this->errores = array_merge($error, $this->errores);
                        return false;
                }
        }
        public function Elminar_Registros($tabla,$where,$values) {
                try {
                        if ($where==null) {#El $where tendrá valor null si no se se requiere
                                $stmt = $this->connection->prepare("DELETE FROM $tabla");
                                $stmt->execute();
                        } else {
                                $stmt = $this->connection->prepare("DELETE FROM $tabla WHERE $where");
                                $stmt->execute($values);
                        }
                        return true;
                } catch (PDOException $e) {
                        $error=array('date("Y-m-d H:i:s")'=>"".$e->getMessage());
                        $this->errores = array_merge($error, $this->errores);
                        return false;
                }
        }
    # Mostrando Error. Display error
    public function get_error() {
        $this->connection->errorInfo();
    }
        public function getError($var) {
                if ($var=='log') {
                        return $this->error;
                } else {
                        return end($this->error);
                }
        }
    # Cerrando la conexión con la base de edatos. Closes the database connection when object is destroyed.
    public function __destruct() {
        $this->connection = null;
    }
}
?>

El fichero funciones_standar.php contendrá todas las funciones comunes que podrán ser utilizada en toda la web. Como la obtencion de todos los articulos, obtener las categorias y subcategorias.
Cita:

/panel/lib/funciones_standar.php
La carpeta idiomas contendrá un fichero .php por cada idioma en que se de soporte al panel de administración con una estructura similar a la siguiente:
Cita:

/panel/idiomas/¿?
espanol.php
Código:

<?php
define ('BIENVENIDO','Buenas usuario: &usuario')
?>

ingles.php
Código:

<?php
define ('BIENVENIDO','Welcome user: &usuario')
?>

En resumen sería la traduccion para cada idioma soportado para mostrar cada mensaje o accion a realizar en el panel de administración.

Pd: a medida que vaya avansando ire actualizando el post. Si tienen alguna sugerencia o corrección a cualquier cosa que realice podrían indicarlo en el hilo del tema y será añadido al cms_Admin open source

Viewing all articles
Browse latest Browse all 11602

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>