Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/05/2010, 08:07
Polanski
 
Fecha de Ingreso: mayo-2010
Ubicación: localhost
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Enlazar un archivo.php en una misma página?

Bueno tras varios días probando y demás algo me sale os explico y os detallo como llama las funciones y la forma que se visualiza dos archivos distintos de php un archivo php muy simple con una variable en la que se almacena un valor y otra en la que realiza una conexión a la BD y la consulta lo devuelve fuera del documento de la página:

index.php

Código PHP:

<?php
    
require_once("funciones/funciones.php");
    
escribe_pagina();/*Escribira todo el codigo XHTML*/
?>
Tener en cuenta:

require_once("funciones/funciones.php");

funciones.php

Código PHP:
[

<?php
        
include_once("funciones_pagina_bloque.php");
    include_once(
"funciones_pagina.php");
?>
Tener en cuenta:

include_once("funciones_pagina_bloque.php");
include_once("funciones_pagina.php");

El archivo include_once("funciones_pagina_bloque.php"); está estructurado por funciones y cada una de las funciones tendrá el contenido de la página.

El archivo include_once("funciones_pagina.php"); es cómo llaman las funciones y como está creado.

funciones_pagina_bloque

Código PHP:

<?php
    
function bloque_botonera(){
        
$contenido='
        <div id="botonera">
            <h5></h5>
               <ul class=botonera_item>            
             <li id="catalogos_de_productos">
                  <a class="botonera_item selected"href="index.php?tipo=pagina_tres">Catalogos de Productos</a>
             </li>                
              </ul>
        </div>'
;
    return 
$contenido;    
    }
?>    

<?php
function bloque_pagina_tres(){
  
$contenido '<div id="portada">';
  
$contenido .= include 'test_1.php';
  
$contenido .= '</div>';
return 
$contenido;    
 }
?>
Tener en cuenta:

<a class="botonera_item selected"href="index.php?tipo=pagina_tres">
"tipo" Es el nombre de una variable que se le ha asignado a un swicth en otro archivo php externo con el nombre "funciones_pagina.php", y "pagina_tres" es el nombre de un case de la variable "tipo" como se muestra en el siguiente código:

funciones_pagina

Código PHP:

<?php

    
function cabecera($tipo) {
        
$titulo 'Proyecto LAMP';
    
    switch (
$tipo)
        {    
            
//case ''            : $tipo    ='portada';  //así forzamos que tenga un tipo
    
            
case 'portada'  $titulo.=' - Portada';
                              break;
            case 
'pagina_tres'  $titulo.=' - Pagina Tres';
                              break;
        }        
        
        
$cabecera '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">'
."\n".
                    
'<head>
                    <title>'
.$titulo.'</title>
                    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
                    <link rel="stylesheet" type="text/css" href="medios/estilos/estilo.css" />
                    </head>'
."\n";
        return 
$cabecera;            
    }
    
    function 
cuerpo($tipo) {  //al hacer la asignación en la definición
                                        // de la función , le damos un valor por defecto    
                                        //en caso de que no lo tuviera
        
$body '<body>';                    
        switch (
$tipo)
        {                
            case 
'portada'  $cont_cuerpo.=cuerpo_portada();
                              break;
            case 
'pagina_tres'  $cont_cuerpo.=cuerpo_pagina_tres();
                               break;
        }
        
        return 
$body.$cont_cuerpo.'</body>';
    }
    
    function 
fin() {
        return 
'</html>';
    }
    

    function 
crea_pagina_especifica($tipo) {
        
/* La primera vez que accedemos a la pagina $tipo = '' por lo que
         * direccionamos a la portada o pagina principal.
         */

    
$contenido cabecera($tipo).cuerpo($tipo).fin();
        return 
$contenido;
    }

    function 
crea_pagina() {

        
session_start();
        
$tipo averigua_tipo_pagina();
        return 
crea_pagina_especifica($tipo);
    }
    
    function 
averigua_tipo_pagina()
    {
        switch (
$_REQUEST['tipo'])
        {

            default:
            {
                (isset(
$_GET['tipo']))?($tipo $_GET['tipo']):($tipo='portada');    
            }                
        }        
        return 
$tipo;
    }    
    
    function 
cuerpo_portada(){
        
$contenido=bloque_banner().
                   
bloque_botonera().                  
                   
bloque_portada().                
                   
bloque_pie();        
        return 
$contenido;
    }
    
    function 
escribe_pagina(){
        echo 
crea_pagina();
    }

    function 
cuerpo_pagina_tres(){
            
$contenido=bloque_banner().
                   
bloque_botonera().
                   
bloque_pagina_tres().
                   
bloque_pie();
            return 
$contenido;
    }            
?>
function bloque_pagina_tres(){ } Es donde se crea una nueva función y donde se especifica un include de otro archivo externo php.

Voy a mostrar dos ejemplos de como se visualiza un archivo php donde tiene almacenado un valor en una variable y otro archivo que realiza una conexión a una BD en la que devuelve una consulta.

Así es como se visualiza la página al iniciarla:



Hay dos enlaces en la que están habilitados, "Bienvenidos" y "Catálogo de Productos"
"Bienvenidos" Pertenece a "portada"
"Catálogo de Productos" Pertenece a "pagina_tres"

El include que llama a un archivo "test_1.php" de function bloque_pagina_tres

Contiene lo siguiente:

Código PHP:

<?php
$var 
"Hola";

return 
$var;

?>
Al ejecutar el enlace de "Catálogo de Productos" muestra la siguiente imágen:



La palabra "Hola" lo posiciona al bloque "contenido" aplicándole los estilos.

En la siguiente imágen vemos el código fuente:



Como ya hemos visto en las anteriores imágenes utilizando el include para qu devuelva un valor, ahora os voy a demostrar como devuelve un determinado valor al "contenido" realizando una consulta a la BD.

Antes el include se llamaba "test_1.php" ahora cambie el nombre por "test_2.php" que contiene el siguiente código:

Código PHP:

<?php
$conexion 
mysql_connect('localhost','root','password');
mysql_select_db('tiendavirtual');
$tabla mysql_query('SELECT * FROM productos');
while (
$registro mysql_fetch_array($tabla))
{

echo 
$registro['nomprod']; 
echo 
$registro['detalles']; 

}

mysql_free_result($tabla);
mysql_close($conexion); 

?>
En la base de datos contiene la siguiente secuencia:

tiendavirtual.sql

Código PHP:

-- phpMyAdmin SQL Dump
-- version 3.2.2.1deb1
-- http://www.phpmyadmin.net
--
-- 
Servidorlocalhost
-- Tiempo de generaci&#243;n: 19-05-2010 a las 13:34:49
-- Versi&#243;n del servidor: 5.1.37
-- Versi&#243;n de PHP: 5.2.10-2ubuntu6.4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 
Base de datos: `tiendavirtual`
--

-- --------------------------------------------------------

--
-- 
Estructura de tabla para la tabla `productos`
--

CREATE TABLE IF NOT EXISTS `productos` (
  `
fotoptext NOT NULL,
  `
codprodint(11NOT NULL AUTO_INCREMENT,
  `
nomprodtext NOT NULL,
  `
detallestext NOT NULL,
  
PRIMARY KEY (`codprod`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

--
-- 
Volcar la base de datos para la tabla `productos`
--

INSERT INTO `productos` (`fotop`, `codprod`, `nomprod`, `detalles`) VALUES
('concha_mini.jpg'1'Concha''Referencia: C0016\r\nCaducidad: 120 días\r\nEAN: 84103680000161\r\nGrs./Caja: 1680\r\nUds./Pack: 1\r\nPacks/Caja: 28\r\nCajas Palet: 180\r\nCaja(LxAnxA):396x238x107mm'); 
Al ejecutar el enlace "Catálogo de Productos" muestra la siguiente imágen:



Como veis el lo que devuelve la BD no lo posiciona en el bloque "contenido"

Vemos el código fuente en la siguiente imágen:



Como veis todo lo que devuelve en la consulta de la BD lo manda fuera del documento y muestra un número "1" al bloque de "contenido" nosé que represente ese número, nosé si devuelve un error o algo por el estilo.

Ese es el problema que tengo cada día continuamente.

¿Cómo se podría solventar este problema? ¿Existe alguna Solución?

¡GRACIAS Y UN SALUDO!

Última edición por Polanski; 19/05/2010 a las 08:23