Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Creacion de modulos con unas caracterisitcas

Estas en el tema de Creacion de modulos con unas caracterisitcas en el foro de PHP en Foros del Web. Bueno, no se por donde empezar: Estoy creando una aplicación en php + Mysql en la que necesito que sea modulable, es decir, por modulos. ...
  #1 (permalink)  
Antiguo 26/05/2014, 00:43
 
Fecha de Ingreso: febrero-2008
Mensajes: 115
Antigüedad: 14 años, 11 meses
Puntos: 4
Pregunta Creacion de modulos con unas caracterisitcas

Bueno, no se por donde empezar:

Estoy creando una aplicación en php + Mysql en la que necesito que sea modulable, es decir, por modulos. La opción más básica seria obtener por URL la variable del modulo que se necesite por ejemplo. app.php?modulo=mimoduolodeprueba Eso estaría bien en un principio peeerooo necesitos dos caracterisiticas.


Por un lado, que cuando cree un modulo, este se añada al menú que yo tenga creado, no se ni como montarlo, tengo hecho algo usando una tabla de mysql pero no me convence. y lo que necesito como minimo es que cuando añada un modulo este se coloque debajo una categoría o menú. Creo y bajo desde mi humilde conocimiento de php seria más sencillo añadir las líneas que correspondan al menú en la tabla de mysql que tengo hecha.

La otra característica y bastante importante es que la aplicación tiene en una esquinita un recuadro de texto y un botón de enviar, esto lo que hace es ir directamente a una ventana de la aplicación u otra, es decir. Si yo escribo "100" y pulso intro para enviar el formulario este me enviará al listado de artículos (modulo artículos), si escribo "101" Me enviará a la ventana de añadir un nuevo articulo (modulo artículos) Para el cual con el envio simple de url por ejemplo: App.php?modulo=artículos&opcion=lista me mostraría el modulo artículos, la pantalla de listado, peeerooo no me llegaría a mostrar el menú lateral, porque no se que id de menú le corresponde.

Siento el tocho este ¿Alguien podría orientarme? MIL GRACIAS anticipadas
__________________
Estrella 923
  #2 (permalink)  
Antiguo 26/05/2014, 01:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años, 5 meses
Puntos: 2236
Respuesta: Creacion de modulos con unas caracterisitcas

De entrada, parece que tu proyecto está basado 100% en HTML y esto te va a crear muchas complicaciones, como las que ya mencionaste.

Deberías verlo como contenido y tener un sistema de plantillas con el que puedas elegir la forma de mostrar este contenido y la ubicación de cada elemento (menú, listados, etc.)

Claro, sólo estoy haciendo suposiciones y será difícil tratar de ayudarte sin ver un poco de código y las estructuras de tus tablas MySQL.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/05/2014, 03:14
 
Fecha de Ingreso: febrero-2008
Mensajes: 115
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: Creacion de modulos con unas caracterisitcas

Triby, creo que me has iluminado el camino. Lo más sencillo que creo que será es: Por un lado crear una tabla con las categorías principales de menú (1er Nivel) Por ejemplo: Como 2o nivel deberán de aparecer los módulos cuyos padres sean la categoría de primer nivel y cuando entremos la url sea App.php?modulo=mimodulo y este cargue sus propios menús laterales y contenido

El único inconveniente es que no podré hacer un árbol de menús más preciso, pero creo que con esto bastará

en cuanto a la segunda característica, bastará con una tabla sencilla con un código_pantalla y la url que ha de enviar, que si lo monto bien esto servirá a posterior para definir los acceso de la aplicación.

Y si, por supuesto que la aplicación va a ser 100% HTML / php, voy a migrar una aplicación propia al formato web que tenia en VB6 y ya me da muchos problemas
__________________
Estrella 923
  #4 (permalink)  
Antiguo 27/05/2014, 00:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 115
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: Creacion de modulos con unas caracterisitcas

Al final he creado asi el menú:

Código PHP:
<?php
require("core/cfpc.php");

if (
$_GET["idmenu"] == '' && $_GET["module"] <> '')
{
    
//buscamos el id de menu que correpsonda con el modulo
    //de esa forma si solo pasamos la variabkle module, luego
    //buscamos el menu que le toca y lo mostramos, volveindo a enviar
    //el modulo y el idmenu que toca
    
$ssql "select * from lnx_menus where module = '".$_GET["module"]."' ";
    
$rs mysql_query($ssql$conn);
    
$idmenushow mysql_result($rs,0,"id");

    
header('Location: index.php?module='.$_GET["module"].'&idmenu='.$idmenushow);

}





echo 
'<div align="center"><table width="200">';


if (
$_GET["idmenu"] == '' || $_GET["idmenu"] == '0'
{
    
$idmenu "0";
    
$displaymenu "Main Menu";
    
$parentmenu "0";

}
else
{
    
$idmenu $_GET["idmenu"];

    
//Nivel superior
    
$ssql2 "select * from lnx_menus where id = '".$idmenu."'";
    
$rs2 mysql_query($ssql2$conn);

    
$displayparent mysql_result($rs2,0,"display");
    
$parentmenu mysql_result($rs2,0,"idmenu");

    echo 
'<tr bgcolor="#CCCCCC"><td><a href="index.php?idmenu='.$parentmenu.'">Atras</a></td></tr>';
    echo 
'<tr bgcolor="#CCCCCC"><td><b>'.$displayparent.'</b></td></tr>';
}



$ssql "select * from lnx_menus where idmenu = '".$idmenu."' order by orden";
$rs mysql_query($ssql$conn);



while(
$menu mysql_fetch_array($rs))
{

    
//Comprobar si es el ultimo para mostrar MODULE

    
$ssql3 "select * from lnx_menus where idmenu = '".$menu["id"]."'";
    
$rs3 mysql_query($ssql3$conn);
    
$submenus3 mysql_num_rows($rs3);

    if (
$submenus3 == '0')
    {
    echo 
'<tr><td>- <a href="index.php?idmenu='.$menu["id"].'&module='.$menu["module"].'">'.$menu["display"].'</a></td></tr>';
    }
    else
    {
    echo 
'<tr><td>- <a href="index.php?idmenu='.$menu["id"].'">'.$menu["display"].'</a></td></tr>';
    }
}

echo 
'</table></div>';

//carga el menu del modulo si es necesario
$ssql "select * from lnx_menus where idmenu = '".$idmenu."'";
$rs mysql_query($ssql$conn);
$submenus mysql_num_rows($rs);

if (
$submenus == '0')
{
    
$ssql "select * from lnx_menus where id = '".$idmenu."'";
    
$rs mysql_query($ssql$conn);
    
$modulo mysql_result($rs,0,"module");

    include(
"modules/".$modulo."/menu.php");
}



?>
El único problema con esto es que en los modulos que cree, he de pasar siempre la variable $idmenu, es decir usar un $_GET["idmenu"] porque sino el menú se vuelve "loco"

Las tablas.
__________________
Estrella 923
  #5 (permalink)  
Antiguo 28/05/2014, 00:35
 
Fecha de Ingreso: febrero-2008
Mensajes: 115
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: Creacion de modulos con unas caracterisitcas

¡Solucionado!

Código PHP:
<?php
require("core/cfpc.php");

if (
$_GET["idmenu"] == '' && $_GET["module"] <> '')
{
    
//buscamos el id de menu que correpsonda con el modulo
    //de esa forma si solo pasamos la variabkle module, luego
    //buscamos el menu que le toca y lo mostramos, volveindo a enviar
    //el modulo y el idmenu que toca
    
$ssql "select * from lnx_menus where module = '".$_GET["module"]."' ";
    
$rs mysql_query($ssql$conn);

    
$sqlmenus $mysqli->query("SELECT * from lnx_menus");

    
$camposmenus mysqli_fetch_assoc($sqlmenus);
    
$idmenuant $camposmenus['idmenu'];

    
$modulo $_GET["module"]; 


    echo 
'<div align="center"><table width="200">';
    echo 
'<tr bgcolor="#CCCCCC"><td><a href="index.php?idmenu='.$idmenuant.'">Atras</a></td></tr>';
    echo 
'</table></div>';


    include(
"modules/".$modulo."/menu.php");



}
else
{

    echo 
'<div align="center"><table width="200">';


    if (
$_GET["idmenu"] == '' || $_GET["idmenu"] == '0'
    {
    
$idmenu "0";
    
$displaymenu "Main Menu";
    
$parentmenu "0";
    echo 
'<tr bgcolor="#CCCCCC"><td><b>Main menu</b></td></tr>';
    }
    else
    {
    
$idmenu $_GET["idmenu"];

    
//Nivel superior
    
$sqlmenus2 $mysqli->query("select * from lnx_menus where id = '".$idmenu."'");
    
$camposmnu2 mysqli_fetch_assoc($sqlmenus2);

    
$displayparent $camposmnu2['display'];
    
$parentmenu $camposmnu2['idmenu'];

    echo 
'<tr bgcolor="#CCCCCC"><td><a href="index.php?idmenu='.$parentmenu.'">Atras</a></td></tr>';
    echo 
'<tr bgcolor="#CCCCCC"><td><b>'.$displayparent.'</b></td></tr>';
    }



    
$sqlmenus $mysqli->query("select * from lnx_menus where idmenu = '".$idmenu."' order by orden");

    while(
$menu mysqli_fetch_array($sqlmenus))
    {

    
//Comprobar si es el ultimo para mostrar MODULE
    
$sqlmenus3 $mysqli->query("select * from lnx_menus where idmenu = '".$menu["id"]."'");
    
$submenus3 $sqlmenus3->num_rows;

    if (
$submenus3 == '0')
    {
    
//echo '<tr><td>- <a href="index.php?idmenu='.$menu["id"].'&module='.$menu["module"].'">'.$menu["display"].'</a></td></tr>';
    
echo '<tr><td>- <a href="index.php?module='.$menu["module"].'">'.$menu["display"].'</a></td></tr>';
    }
    else
    {
    echo 
'<tr><td>- <a href="index.php?idmenu='.$menu["id"].'">'.$menu["display"].'</a></td></tr>';
    }
    }

    echo 
'</table></div>';

}



?>
Comento que he aprovechado y ya he incluido mysqli
__________________
Estrella 923

Etiquetas: modulos, mysql, urls
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:27.