Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Clavo Oxidado

#31
PHP / Re: ¿layouts en php?
25 Junio 2010, 00:57 AM
Bueno lo que me refería que en vez de poner todo el contenido en un archivo html o php en un archivo externo y mostrarlo después con el include.... mi pregunta era si sería recomendable mostrar el contenido de los registros de una base de datos...Que lo único que tendría que hacer es procesar una nueva conexión con la BD y con el mysql_query especificarle un select.

UN SALUDO
#32
PHP / Re: ¿layouts en php?
24 Junio 2010, 23:25 PM
Cita de: shellroot@alex-laptop:~$ en 24 Junio 2010, 21:10 PM
Cita de: Polanski en 24 Junio 2010, 10:45 AM
Bueno y en vez de utilizar $_GET porque no es muy "seguro" se podría utilizar el método $_POST, no?
Simon

Cita de: Polanski en 24 Junio 2010, 10:45 AM, en vez de utilizar el include es recomendable que lo muestre desde la Base de Datos?
Ehh? WTF!

Perdona shellroot@alex-laptop:~$ no he entendido muy bien el mensaje que has enviado anteriormente.
#33
PHP / Re: ¿layouts en php?
24 Junio 2010, 10:45 AM
Bueno y en vez de utilizar $_GET porque no es muy "seguro" se podría utilizar el método $_POST, no?

Y a la hora de mostrar el contenido en la página, en vez de utilizar el include es recomendable que lo muestre desde la Base de Datos?

UN SALUDO
#34
PHP / ¿layouts en php?
23 Junio 2010, 17:19 PM
Hola a todos. Quería saber de que manera podría estructurar una página en layouts, en la que la cabecera, menú y pie de página se quedarán fijas e ir cambiando el body cada enlace que se de en el menú. El método tradicional es copiar todo el código a cada página pero claro esto lo que se consigue es ralentizar la página. La única manera para utilizar código php es con el incluye no? si fuese así de que manera lo podría interpretarlo? Si existiese algún enlace para hacer mas o menos o que quiero hacerlo, os lo agredecería.

Gracias y un saludo.
#35
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!
#36
En el código fuente me he fijado que la consulta lo devuelve fuera del documento.

¿A que se debe?
#37
Aún no lo tengo alojado en un alojamiento ni tengo asignado el dominio, de todas formas el servidor lo tengo alojado desde mi casa.
Aquí os dejo el enlace: http://x.x.x.x/proyecto/proyecto_alcoholado/ a ver si lo antes posible lo alojo en otro dominio para no tener mi servidor las 24 horas desde mi casa XD.

Como podéis comprobar el enlace catálogo de productos el contenido aparece arriba, en vez en el centro.

UN SALUDO
#38
Bueno tras probar varias formas para que me lo posicione, no he obtenido ningún éxito.

Ahora lo estoy intentando sin el include, es decir lo que quiero hacer que dentro de la función conectarme directamente a la BBDD, la consulta me lo devuelve sin ningún problema, pero no me aplica el <div>, sigue apareciendo en la parte de la cabecera, como siempre ha estado sucediendo.

Así es como tengo implantado la sintaxis:

Código (php) [Seleccionar]

<?php
function bloque_pagina_tres(){
$conexion mysql_connect('localhost','usuario','secreto');
mysql_select_db('tiendaprueba');
$tabla mysql_query('SELECT * FROM productos');
while ($registro mysql_fetch_array($tabla)) 
{
$contenido='<div id="portada">';
echo $registro['nomprod'];
echo $registro['detalles'];
$contenido='</div>';
}
mysql_free_result($tabla);
mysql_close($conexion);
return $registro;
}
?>



¿Alguna solución u otra forma de implantar la sintaxis?

Un Saludo
#39
Bueno, hay novedades!! Algo me sale pero no del todo, os explico, según el ejemplo de "merohack " me funciona, me muestra lo que contiene "test.php" aunque he tenido que modificar una parte del código de la siguiente forma:

Código (php) [Seleccionar]


<?php
function bloque_pagina_tres(){
  
$contenido '<div id="portada">';
  
$contenido .= include 'test.php';
  
$contenido .= '</div>';
return 
$contenido;
 }
?>



Aunque a mi antes con las etiquetas "<?php>" no me salia, sin la etiqueta si que me sale, de todas formas para que me saliera he tenido que poner la etiqueta  "<?php>" a cada una de las funciones.

Bueno pues lo dicho me sale el texto que contiene "test.php" a la posición del bloque donde quiero que vaya, así que al cambiar el nombre test.php por catalogo.php lógicamente debería de dar el mismo resultado, pues me sale el contenido pero no a la posición del bloque, vamos como me sucedía antes. En "catalogo.php" tiene otra hoja de estilo aparte, pues bien he tenido que quitar aquellas etiqueta de margin, paddign, width, etc.. excepto los colores y tamaño de letra, simplemente para que no se contradiga dos hojas de estilo con posiciones distinta. También he quitado después de la llave el "bloque_pagina_tres()" aunque lo quite o no me muestra el contenido de "test.php"

Bueno lo curioso que cuando me sale todo el contenido en la parte superior(cosa que no debería), se me añade un número "1" al bloque donde quiero que posicione.  Aunque si quito la concatenación del '</div>' el "1" desaparece....

¿Alguna Solución?

De todas formas seguiré probando.....

UN SALUDO
#40
Por cierto si hace falta para mayor comodidad podría subir todos los archivos en una carpeta comprimida y solo sería ejecutar el index. Ya me diréis....

UN SALUDO!