Foros del Web » Programando para Internet » PHP »

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

Estas en el tema de ¿Enlazar un archivo.php en una misma página? en el foro de PHP en Foros del Web. Hola a todos, quería saber como podría enlazar un " archivo.php " en una misma página. Para detallar más información os pongo una parte del ...
  #1 (permalink)  
Antiguo 05/05/2010, 17:14
 
Fecha de Ingreso: mayo-2010
Ubicación: localhost
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
¿Enlazar un archivo.php en una misma página?

Hola a todos, quería saber como podría enlazar un "archivo.php" en una misma página.

Para detallar más información os pongo una parte del código.

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

//ESTO ES UN ARCHIVO EXTERNO CON EL NOMBRE 'funciones_pagina.php'


<?php
function cabecera($tipo) {
$titulo = 'PAGINA PRUEBA';
switch ($tipo)
{
case 'pagina_dos' : $titulo.=' - Catalogo';
break;

function cuerpo($tipo) {
$body = '<body>';
switch ($tipo)
{
case 'pagina_dos' : $cont_cuerpo.=pagina_dos();
break;
}
return $body.$cont_cuerpo.error_muestra().'</body>';
}

function pagina_dos(){
$contenido=bloque_banner().
bloque_botonera().
bloque_portada().
bloque_pie();
return $contenido;
}
?>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//ESTO ES UN ARCHIVO EXTERNO CON EL NOMBRE 'funciones_pagina_bloque.php'


<?php
function bloque_botonera(){

$contenido='
<div id="botonera">
<h5></h5>
<ul class=botonera_item>
<li id="bienvenidos">
<a class="botonera_item selected" href="index.php?tipo=pagina_dos">Bienvenidos</a>

;
return $contenido;

function bloque_pagina_dos(){
$contenido="<div id='pagina_dos'>
<h4>CATALOGO PRODUCTOS</h4>
<div id='catalogo'>
BUENO, BONITO Y BARATO
</div>
</div>";
';
return $contenido;

?>

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

Bueno esto sería una parte del código, algo básico, bien, mas o menos con esa parte del código os explico también como tengo estructurado los bloques de la página:



Bueno es un boceto provisional que la idea es que cada enlace visitado al bloque 'menú' cargue el contenido en el bloque 'portada'. El contenido que tiene que cargar es un archivo.php externo.

¿Alguna solución?

Gracias y un Saludo

Última edición por Polanski; 05/05/2010 a las 17:30
  #2 (permalink)  
Antiguo 05/05/2010, 17:18
 
Fecha de Ingreso: abril-2008
Ubicación: MDQ
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: ¿Enlazar un archivo.php en una misma página?

include_once('nombre_archivo.php');
  #3 (permalink)  
Antiguo 05/05/2010, 17:32
 
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?

Lo he probado, pero de que manera podría hacerlo que me lo demuestre en un determinado bloque?
  #4 (permalink)  
Antiguo 06/05/2010, 17:31
 
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?

Ya me sale con el include, el problema era que en vez de especificarlo al archivo donde quiero que muestre el include, lo puse en el index.

Ahora tengo un pequeño problema, como puedo aplicar un div al include. Lo he probado de varias formas pero no me aparece el contenido, os dejo una parte del código como lo tengo puesto:

$contenido=function bloque_pagina_tres(){
include("catalogo.php");
return $contenido;
}

Como lo tengo me sale sin ningún problema, el problema está donde y como aplicar el div.

¿Alguna Solución?

Gracias y Un Saludo
  #5 (permalink)  
Antiguo 06/05/2010, 18:11
 
Fecha de Ingreso: mayo-2010
Mensajes: 25
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: ¿Enlazar un archivo.php en una misma página?

usa ajax mas facil que hacer todo eso :|
  #6 (permalink)  
Antiguo 06/05/2010, 20:20
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 21 años
Puntos: 93
Respuesta: ¿Enlazar un archivo.php en una misma página?

No acabo de entender para que las funciones... no tienen pies ni cabeza.

Solamente necesitas pasar un parámetro por get. Algo asi:

Página "index.php":
Código PHP:
Ver original
  1. <?
  2.   include_once "archivo_externo.php";
  3.   if(!isset($_GET["pagina"])){
  4.     $pagina = "";
  5.   } else {
  6.     $pagina = $_GET["pagina"];
  7.   }
  8.   switch($pagina){
  9.     case "pagina_uno":
  10.       $botonera = $botonera1;
  11.       $portada = $portada1;
  12.       break;
  13.     case "pagina_dos":
  14.       $botonera = $botonera2;
  15.       $portada = $portada2;
  16.       break;
  17.     case "pagina_tres":
  18.       $botonera = $botonera3;
  19.       $portada = $portada3;
  20.       break;
  21.     default:
  22.       $botonera = $botonera1;
  23.       $portada = $portada1;
  24.       break;
  25.   }
  26. ?>
  27. <html>
  28.   <head>
  29.     <!-- Bla, bla, bla... -->
  30.   </head>
  31.   <body>
  32.     <div id="encabezado">LOGO</div>
  33.     <div id="cuerpo">
  34.       <div id="botonera><?php echo $botonera; ?></div>
  35.       <div id="portada";><?php echo $portada; ?></div>
  36.       <div id="calendario">Calendario</div>
  37.       <div id="imagen">Imagen</div>
  38.     </div>
  39.     <div id="pie">Pié de página</div>
  40.   </body>
  41. </html>

Archivo archivo_externo.php:
Código PHP:
Ver original
  1. <?php
  2.   // Definiciones para "pagina_uno":
  3.   $botonera1 = "<h5></h5>
  4.    <ul class=\"botonera_item\">
  5.      <li><a href=\"?pagina=pagina_uno\" class=\"botonera_selected_item\">Bienvenidos</a></li>
  6.      <li><a href=\"?pagina=pagina_dos\">Empresa</a></li>
  7.      <li><a href=\"?pagina=pagina_tres\">Productos</a></li>
  8.      <!-- Etcétera... -->
  9.    </ul>";
  10.   $portada1 = "Lo que quieres que aparezca en el bloque Portada";
  11.  
  12.   // Definiciones para "pagina_dos":
  13.   $botonera2 = "<h5></h5>
  14.    <ul class=\"botonera_item\">
  15.      <li><a href=\"?pagina=pagina_uno\">Bienvenidos</a></li>
  16.      <li><a href=\"?pagina=pagina_dos\" class=\"botonera_selected_item\">Empresa</a></li>
  17.      <li><a href=\"?pagina=pagina_tres\">Productos</a></li>
  18.      <!-- Etcétera... -->
  19.    </ul>";
  20.   $portada2 = "Lo que quieres que aparezca en el bloque Portada";
  21.  
  22.   // Definiciones para "pagina_tres":
  23.   $botonera3 = "<h5></h5>
  24.    <ul class=\"botonera_item\">
  25.      <li><a href=\"?pagina=pagina_uno\">Bienvenidos</a></li>
  26.      <li><a href=\"?pagina=pagina_dos\">Empresa</a></li>
  27.      <li><a href=\"?pagina=pagina_tres\" class=\"botonera_selected_item\">Productos</a></li>
  28.      <!-- Etcétera... -->
  29.    </ul>";
  30.   $portada3 = "Lo que quieres que aparezca en el bloque Portada";
  31. ?>
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #7 (permalink)  
Antiguo 07/05/2010, 19:22
 
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?

La idea de utilizar funciones es para tener un criterio a la hora de programar y par tenerlo más organizado, ya que cada función determina una acción distinta para la web.

1º De todas formas el código que has planteado tendría que cambiar toda la metodología a la hora de quitar funciones y meter case?

2º Al ver lo que has posteado no veo ningún div, de todas formas según mi código no existe de alguna forma menos compleja a la de diseñar lo que el cliente quiere?

Un Saludo
  #8 (permalink)  
Antiguo 19/05/2010, 08:07
 
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
  #9 (permalink)  
Antiguo 19/05/2010, 13:04
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 21 años
Puntos: 93
Respuesta: ¿Enlazar un archivo.php en una misma página?

¿Solamente tienes un producto en la BD? ¿Que hace si insertas otro producto ademas de "Concha" y vuelves a ejecutar el test_2.php?
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #10 (permalink)  
Antiguo 19/05/2010, 16:45
 
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?

Exacto nada mas tengo 1 producto. De todos formas he añado otro producto más y me lo añade a continuación, sigue sin salir...
  #11 (permalink)  
Antiguo 19/05/2010, 18:20
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 21 años
Puntos: 93
Respuesta: ¿Enlazar un archivo.php en una misma página?

¿Y con dos productos sigue saliendo el mismo número (1)?

¿Que tal si lo pruebas con foreach en lugar de while?
__________________
Antes de hacer rabietas infórmate: Linux != Windows

Etiquetas: enlazar
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 01:09.