¿Enlazar un archivo.php en una misma página?

Iniciado por Clavo Oxidado, 5 Mayo 2010, 22:38 PM

0 Miembros y 2 Visitantes están viendo este tema.

Clavo Oxidado

En el código fuente me he fijado que la consulta lo devuelve fuera del documento.

¿A que se debe?
"Dame 10 Hackers y en media hora dominaré el mundo."

Clavo Oxidado

#21
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

Código (php) [Seleccionar]


<?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) [Seleccionar]


<?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) [Seleccionar]


<?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) [Seleccionar]


<?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) [Seleccionar]


<?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) [Seleccionar]


<?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 (sql) [Seleccionar]


-- 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!
"Dame 10 Hackers y en media hora dominaré el mundo."

eldonpapo

Bueno me ha pasado lo mismo q a ti en cuanto al numero 1 q se muestra pero lo he solucionado con mucha suerte al parecer el numero uno es la representacion de que se ha ejecutado correctamente el codigo php
mi codigo

<div id="undiv">
<?php
$joder= include APPLICATION_PATH.'/models/men.php';
echo $joder[0];                 
?>
</div>
al parecer cuando presento la funcion de esa manera se borra el numero 1 q salia y todo bien espero q te funcione y si te resulta otro error me lo comunicas

saludos

marcofbb

Podes simplificar todo :S

lee esto:
http://www.entra-ya.com.ar/2009/10/como-usar-el-swicht-en-php-para-solo.html

antes de los archivos .txt remplasalos por .php haci nadie puede leerlos :D