Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/03/2009, 16:37
Avatar de salvaBCN
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.