Foros del Web » Programando para Internet » PHP »

Pregunta simple sobre variables!!

Estas en el tema de Pregunta simple sobre variables!! en el foro de PHP en Foros del Web. Buenas estoy intentando meter el codigo html de una plantilla en una variable pero no me funciona: $codigo_html = 'plantilla.html'; Si pongo: $codigo_html='todo el codigo ...
  #1 (permalink)  
Antiguo 28/03/2009, 13:08
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Pregunta simple sobre variables!!

Buenas estoy intentando meter el codigo html de una plantilla en una variable pero no me funciona:

$codigo_html = 'plantilla.html';

Si pongo: $codigo_html='todo el codigo html de la plantilla'; si que funciona pero no quiero escribir todo el codigo ahi, quisiera que lo coja del archivo plantilla.html.
Como lo hago? con includes ya veo que no se puede. Gracias!!
  #2 (permalink)  
Antiguo 28/03/2009, 13:22
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

Lo he conseguido con esto:

ob_start();
include ("plantilla.html");
$codigo_html=ob_get_contents();
ob_end_clean();


Pero en la variable recogida no me salen resueltas las variables php tipo '.$nombre.', y poniendo el codigo si, pero cogiendo el código de esta forma no. Que puedo hacer?
  #3 (permalink)  
Antiguo 28/03/2009, 13:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Pregunta simple sobre variables!!

tal ves...

file_get_contents()


Edito: variables??

seguro que estas usando etiquetas <?php ?> regulares??

recuerda que debe ser PHP valido el de tu archivo que incluyes...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 29/03/2009, 00:24
 
Fecha de Ingreso: mayo-2008
Mensajes: 34
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Pregunta simple sobre variables!!

Si entiendo bien, suelo trabajar de la misma manera. Necesitas hacer un eval a plantilla.html para que interprete las variables.

Esta es la función que suelo utilizar:

Código PHP:
function matriz($template_archivo) {
    
$template_leo file_get_contents("templates/$template_archivo");
    
$template_leo str_replace('"','\"',$template_leo);
    return 
$template_leo;
}
eval(
"\$contenido = \"".matriz("plantilla.html")."\";"); 
  #5 (permalink)  
Antiguo 29/03/2009, 02:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Pregunta simple sobre variables!!

puedes poner el código completo de plantilla.html



¿???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 30/03/2009, 15:20
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

jpneruda, he probado lo que me dices pero no me funciona, me da error. Podrias ampliarme detallado un poco mas el codigo? Lo que ponias es justo lo que necesito.

pateketrueke no creo que haga falta copiar aqui el codigo, es un simple codigo html con variables dentro bien anidadas.

Helpmee!!
  #7 (permalink)  
Antiguo 30/03/2009, 15:26
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: Pregunta simple sobre variables!!

Código PHP:
<?php
$nombrearchivo
="plantilla.html";
$archivo file_get_contents($nombrearchivo);

echo 
htmlentities($archivo); // para ver html...
?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #8 (permalink)  
Antiguo 30/03/2009, 17:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Pregunta simple sobre variables!!




espero estar equivocado, pero...

a que le llamas variables bien anidadas??

NOTA que la forma correcta de imprimirlas es la siguiente:

Código HTML:
<span><?php echo $mi_variable; ?></span> 
y quiero equivocarme... pero creo que tu piensas que estoy mal, o bien... tu código actual es correcto???

o así...

Código HTML:
<span>' . $mi_variable . '</span> 
esta ultima forma es absurda, y NO sirve ...

para que funcione de manera exacta (lo digo por experiencia) debes hacerlo de la forma correcta...


plantilla.html
Código HTML:
<span style="color:red"><?php echo $bar; ?></span> 
index.php
Código PHP:
<?php

$bar 
'Hola Mundo?';

ob_start();
include(
"plantilla.html");
$codigo_html ob_get_contents();
ob_end_clean();

echo 
$codigo_html;
resultado
Código HTML:
<span style="color:red">Hola Mundo?</span> 
la verdad, no veo el problema....


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 30/03/2009, 18:45
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
farra no me funciono lo tuyo pero gracias igualmente!!

pateketruekeeeee me funciona a la perfeccion!!! te quiero tioooo!!! jajajajajajajaj




Pero con lo que me has dado me surge un problema, genero una página y bien, pero cuando voy a generar otra con otros valores de otro registro me la crea con los registros primeros, es como si almacenase los datos y no los borrara no se si me explico...

puede ser por esto? ob_end_clean();?? (lo tengo puesto)

Hoy he creado dos páginas más con registros distintos y me crea la pagina que hice ayer! Que le pasa a esto?? Por que lo hace???

Última edición por GatorV; 31/03/2009 a las 22:09
  #10 (permalink)  
Antiguo 31/03/2009, 22:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Pregunta simple sobre variables!!

Como fue que quedo tu código final?

Saludos.
  #11 (permalink)  
Antiguo 01/04/2009, 06:05
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

Lo tengo asi:

Código PHP:
ob_start();
include(
"plantilla.html");
$cad ob_get_contents();
ob_end_clean();

eval(
"\$cad = \"$cad\";"); 
  #12 (permalink)  
Antiguo 01/04/2009, 08:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Pregunta simple sobre variables!!

en ese caso, lo ideal sería usar HEREDOC en las plantillas de HTML

plantilla.html
Código PHP:
<?php
echo <<<HTML
<p>foo ... bar ($candy->does)</p>
Hola $nombre bla bla...
HTML;
?>
y así evitas la linea del eval...

supongo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 01/04/2009, 10:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Pregunta simple sobre variables!!

Prueba usar ob_get_clean() para borrar el buffer, en lugar de ob_get_contents()

Saludos.
  #14 (permalink)  
Antiguo 01/04/2009, 13:14
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

Lo que me está haciendo es modificar el archivo plantilla.htm aparte de crear el otro... No hay ninguna manera que sólo lea plantilla.htm y lo escriba con las variables resueltas en el nuevo archivo?

De momento lo he solucionado haciendo una copia antes de plantilla que se llame tmp_plantilla.htm y despues de hacer todo el proceso borra ese archivo. Pero me pregunto si haya alguna manera mas directa como la que he escrito al principio.

Última edición por manolo_manolo; 01/04/2009 a las 13:34
  #15 (permalink)  
Antiguo 01/04/2009, 13:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Pregunta simple sobre variables!!

Tal vez te sirva una plantilla con reemplazos en lugar de echo: http://www.forosdelweb.com/f18/aport...tillas-677462/
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 01/04/2009, 14:55
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

Gracias Triby pero tendria que modificar ahora muchisimas cosas del sitio.

Una pregunta podria meter todo el tema este de leer, copiar y crear archivo dentro de un bucle? No habria problemas?
  #17 (permalink)  
Antiguo 01/04/2009, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Pregunta simple sobre variables!!

No hay problemas si haces bien el buffer:
Código php:
Ver original
  1. while(/** cosas **/) {
  2.        ob_start();
  3.        echo 'plantilla';
  4.        $plantilla = ob_get_clean();
  5.        write( $plantilla );
  6. }

Saludos.
  #18 (permalink)  
Antiguo 01/04/2009, 16:37
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

Me funciona perfecto, mil gracias.

Por cada página que me crea me da este error:
Parse error: syntax error, unexpected '<' in /var/www/vhost/ociogratis.es/home/html/intranet/reg_juegos/generar_todos_html.php(29) : eval()'d code on line 3

y he comprobado todos los simbolos '<' de plantilla y estan todos correctos, no hay ninguno que sobre... alguna idea? O lo puedo dejar asi que no pasa nada
  #19 (permalink)  
Antiguo 01/04/2009, 18:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Pregunta simple sobre variables!!

Cita:
Iniciado por manolo_manolo
eval("\$cad = \"$cad\";");
Para que es ese eval?... solo asignas $cad a $cad... no tiene sentido, es lo mismo que $cad = $cad; y sigue sin tener sentido.
__________________
- León, Guanajuato
- GV-Foto
  #20 (permalink)  
Antiguo 01/04/2009, 20:23
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: Pregunta simple sobre variables!!

Ups... cierto no me di cuenta que aún lo tenía... Solucionado.


Mil gracias!! No sé que haría sin vosotros!!
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 14:09.