Bueno para no tener el servidor las 24 horas 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
<?php
require_once("funciones/funciones.php");
escribe_pagina();/*Escribira todo el codigo XHTML*/
?>
Tener en cuenta:require_once("funciones/funciones.php");funciones.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
<?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
<?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() {
$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:
<?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:
<?php
{
echo $registro['nomprod'];
echo $registro['detalles'];
}
?>
En la base de datos contiene la siguiente secuencia:
tiendavirtual.sql
-- phpMyAdmin SQL Dump
-- version 3.2.2.1deb1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 19-05-2010 a las 13:34:49
-- Versión del servidor: 5.1.37
-- Versió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` (
`fotop` text NOT NULL,
`codprod` INT(11) NOT NULL AUTO_INCREMENT,
`nomprod` text NOT NULL,
`detalles` text NOT NULL,
PRIMARY KEY (`codprod`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- 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!