Foros del Web » Programando para Internet » PHP »

Ahorro de código

Estas en el tema de Ahorro de código en el foro de PHP en Foros del Web. Saludos a todos, Estoy haciendo un website con php y mysql sin utilizar frameworks de terceros, picoteándome todo el código por mi mismo. Para no ...
  #1 (permalink)  
Antiguo 13/03/2009, 16:37
Avatar de salvaBCN  
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Ahorro de código

Saludos a todos,

Estoy haciendo un website con php y mysql sin utilizar frameworks de terceros, picoteándome todo el código por mi mismo.

Para no tener que hacer repeticiones de la cabecera (con su logo, su menú y sus cosas) ni de columnas laterales ni pies, he montado una tabla html en el index.php en la que en el cuerpo central tengo un include a un script de visualizado de contenidos.

Código PHP:
<table class="tot" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
    <tr>
        <td width="4" rowspan="3" class="marge"></td>
        <td>
            <table class="capsalera" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
                <tr>
                    <td valign="top">
                        <img src="img/logo.png" />
                    </td>
                </tr>                
            </table>
        </td>        
        <td width="4" rowspan="3" class="marge"></td>
    </tr>
    <tr>
        <td>
            <table class="panel" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
                <tr>
                    <td valign="top" width="20%" align="left">
                        <table cellspacing="0" cellpadding="0" width="100%" align="left" border="0">
                            <tr>
                                <td valign="top" align="left">
                                    <?php include ("php/menu.php"); ?>    
                                </td>
                            </tr>
                        </table>
                    </td>
                    <td valign="top" width="80%">
                        <table class="main" cellspacing="0" cellpadding="0" width="100%" align="left" border="0">
                            <tr valign="top">
                                <td>
                                    <?php include ("php/main.php"); ?>
                                </td>
                                                            </tr>
                        </table>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                        <table class="peu" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">                                        
                            <tr>
                                <td>
                                    <?php include ("php/menu2.php"); ?>
                                </td>
                            </tr>
                            <tr>                                
                                <td align="center">                                    
                                        <span style="text-align:center; margin-top: 15px;">&copy;copyright 2009</span>                                    
                                </td>                                    
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </td>                
    </tr>    
</table>
</body>
</html>
Después tengo el archivo main.php:

Código PHP:
<?php
    
switch($_GET["go"])    
    {
        case 
0:
            include (
"php/home.php");
            break;
        case 
1:
            include (
"php/info.php");
            break;
        case 
2:
            include (
"php/showroom.php");
            break;
        case 
3:
            include (
"php/area.php");
            break;
        case 
4:
            include (
"frameworks/contacto.php");
            break;                        
        case 
6:
            include (
"productos/cocinas.php");
            break;
        case 
7:
            include (
"productos/puertas.php");
            break;
        case 
8:
            include (
"productos/ventanas.php");
            break;
        case 
9:
            include (
"productos/vigueria.php");
            break;
        case 
10
            include (
"productos/parkets.php");
            break;
        case 
11:
            include (
"productos/sinteticos.php");
            break;
        case 
12:
            include (
"productos/ferreteria.php");
            break;
        case 
13:
            include (
"productos/accesibilidad.php");
            break;
        case 
14:
            include (
"frameworks/respuesta.php");
            break;
        case 
15:
            include (
"php/contenidos_rss.php");
            break;
        default:
            include (
"php/home.php");
            break;
    }
?>

Y finalmente el .htaccess con:

RewriteEngine On


RewriteRule ^index$ index.php?go=0&title=php/home [L]
RewriteRule ^info$ index.php?go=1&title=php/info [L]
RewriteRule ^showroom$ index.php?go=2&title=php/showroom [L]
RewriteRule ^area$ index.php?go=3&title=php/area [L]
RewriteRule ^contacto$ index.php?go=4&title=frameworks/contacto [L]
RewriteRule ^cocinas$ index.php?go=6&title=productos/cocinas [L]
RewriteRule ^puertas$ index.php?go=7&title=productos/puertas [L]
RewriteRule ^ventanas$ index.php?go=8&title=productos/ventanas [L]
RewriteRule ^vigueria$ index.php?go=9&title=productos/vigueria [L]
RewriteRule ^parkets$ index.php?go=10&title=productos/parkets [L]
RewriteRule ^sinteticos$ index.php?go=11&title=productos/sinteticos [L]
RewriteRule ^ferreteria$ index.php?go=12&title=productos/ferreteria [L]
RewriteRule ^accesibilidad$ index.php?go=13&title=productos/accesibilidad [L]


Con esto consigo que para todos los archivos que quiero ir mostrando según se va navegando por el sitio, se muestren en la caja central de la tabla que tengo en el archivo index.php.

Los problemas me vienen por dos vertientes:

El paso de parámetros es tedioso, pues cambiando las RewriteRule del archivo .htaccess se me desmonta todo el invento, si no las modifico, los parámetros no se reciben ni con $_GET, ni $_POST, ni $_REQUEST, ni leches.

He encontrado una solución al paso de parámetros sin que me desmonte el diseño, creando formularios con campos "hidden", menuda locura meter un formulario en cada enlace.

Por otro lado, si tengo algún elemento fuera del cuerpo central, como por ejemplo un formulario de loginado de sesión de usuario en el que se muestre, bien el formulario de loginado o el mensaje de bienvenida con el perfil del usuario, me altera la navegación del cuerpo central saltándo al inicio que es el que recibe el valor default en el archivo main.php (detalle bastante poco profesional para mi gusto).

Pues bien, dicho todo esto, me gustaría saber si alguién de ustedes, sabe como solucionar este problema sin recurrir a frameworks de terceros ni aplicaciones, simplemente con código php dentro de la misma aplicación.

P.D: No soy muy amante de utilizar frameworks de terceros, me gusta más picotear mi própio código y saber por donde navego, que aún y así ya tengo mis quimeras.

Muchas gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 13/03/2009, 18:56
 
Fecha de Ingreso: febrero-2009
Ubicación: Cusco - Peru
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ahorro de código

muchos utilizamos una estructura similar, por ejemplo lo que hago io es esto:
en pseudocodigo xD:

Código PHP:
<?
// incluyo mis paginas asociadas
include("lista.php");
include(
"new.php");
include(
"edit.php");
etcetc
//incluyo mi cabecera
include("cabecera.tpl");
include(
"menu.tpl");
//recupero el valor q me dira q hacer
$op=$_GET['op'];
// segun mi op realizo mis opraciones
switch($op)
{
  case 
"lista"listarelemento(); break; // esta funcion definida en en lista.php
  
case "new"newelemento(); break; // esta funcion definida en en new.php
  
case "edit"editelemento(); break; // esta funcion definida en en edit.php
  
defaulf: echo "Opcion incorrecta";
}
// incluyo mi pie de pagina
include("pie.tpl");
?>
y asi esa es mi forma, en un inio empece con tablas como lo hace tu pero me resulto mejor usar DIVs, y a mi si me reciben los valores eviados con el $_GET

Salu2.
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 05:44.