Foros del Web » Programando para Internet » PHP »

Css + Php

Estas en el tema de Css + Php en el foro de PHP en Foros del Web. Buenas! Me presento, mi nombre es Matías. Como verán, es mi primer post en este foro, pero siempre recurro a él ante alguna duda. Estoy ...
  #1 (permalink)  
Antiguo 25/06/2008, 02:51
Avatar de azeos  
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Exclamación Css + Php

Buenas! Me presento, mi nombre es Matías. Como verán, es mi primer post en este foro, pero siempre recurro a él ante alguna duda.

Estoy teniendo un problema al crear un css dinámico mediante php, se q el tema se trato muchas veces, leí muchísimos topics, googlie mucho y aun así, no encuentro solución.

Les paso a comentar cual es el problema, tengan en cuenta q soy un novato con php, así q les pido q sean lo más claro posible con sus respuestas así nos evitamos tener q re-preguntar :P

Tengo un archivo (index.php) el cual estaba vinculado con la hoja de estilos correspondiente de la siguiente forma:
Código HTML:
<link href="Estilos.css" rel="stylesheet" type="text/css" /> 
Me vi obligado a trabajar con variables en el css, por lo q hice lo q todos recomiendan: renombre "estilos.css" a "estilos.php", agregue al principio del documento
Código PHP:
<?php header('Content-type:text/css'); ?>
y cambié el link de index.php de "estilos.css" a "estilos.php".
Hasta ahí todo marchaba bien, todo funcionaba perfecto.

Necesitaba tener una barra de votación hecha con css y q su ancho fuera definido por una variable, cuyo valor va a ser obtenido (en un futuro) por una BD.

.bar { width: <?php echo $GLOBALS["votes"]; ?>; }

Hasta aquí todo venía sin mayores complicaciones, si yo definía (dentro de estilos.php):
$votes = "10"."%";
El ancho efectivamente quedaba en 10%.

Pero el problema apareció cuando quise hacer un "echo $GLOBALS["votes"];" desde el INDEX.PHP, me devuelve el siguiente error:
Notice: Undefined index: votes in DIRECCIÓN.

Aparentemente es xq no encuentra esa variable, es como si no estuviera definida. Probé las siguientes cosas:

1) En vez de vincular estilos.php mediante "link", lo hice con un "include" o con un "requiere_once", pero al intentar visualizar la página veo el "código", es como si me hiciera un echo de todo el código. PERO me toma la variable (xq en el código se ve q hace bien el echo).

2) Puse la variable en un archivo "config.php" e hice un include o @import desde el estilos.php a ese archivo. Lo tomo bien, pero seguía sin poder hacer un echo de esa variable desde el index.php (probando de las formas q puse en el punto 1).

3) Dejando el archivo con extención .css pero configurando el apache para q php se encargue de esos archivos. Obtuve los mismos resultados.


Bueno, la verdad ya no se q más probar ni q aclarar. Resumidamente, lo q necesito es poder llamar una variable q esta en "estilos.php" desde "index.php", trabajar con variables DENTRO de estilos.php pude sin ningún problema.
Disculpen si hice el thread medio extenso pero prefiero aclarar todo de una vez para comodidad de todos.

Saludos y desde ya muchas MUCHAS gracias!

PD: Estoy usando EasyPHP y Dreamweaver CS3.
PD2: si quieren incluyo 2 códigos, pero seguramente es algo muy tonto, xq arme 2 archivos limpios desde dreamweaver y pasa lo mismo.
  #2 (permalink)  
Antiguo 25/06/2008, 03:14
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: Css + Php

Al hacer <link href="estilos.php"> lo que haces es llamar por separado a estilos.php e index.php. Es como si abrieras en una ventana del navegador estilos.php y en otra index.php. Para el servidor web son dos paginas sin relacion. Es mas, index.php se ejecuta primero, porque el navegador llama a index.php que devuelve el HTML que contiene el <link>, el navegador lee el HTML y llama estilos.php .

Con un include o require_once no deberias ver el codigo PHP en el HTML del navegador. Quizas el codigo que usaste estaba mal.
  #3 (permalink)  
Antiguo 25/06/2008, 12:18
Avatar de azeos  
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Css + Php

Evidentemente algo del código esta mal, xq tengo otros include q van a documentos php q contienen functions con código html (para el header, footer, etc) y funciona bien.

Les dejo un ejemplo de lo q me pasa:

Index.php
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Documento sin t&iacute;tulo</title>
<?php include ("estilo.php"); ?>
</head>

<body>
<a href="#nogo"><?php echo $GLOBALS["votes"]; ?></a>
</body>
</html>
Estilo.php
Código PHP:
<?php
header
('Content-type: text/css'); 
$votes "10"."%";
?>
/*********ESTILOS************/
a { color: #f00; }
Eso es a modo de ejemplo, pero me pasa exactamente lo mismo. Es el 100% de ambos archivos, no hay ni más ni menos código. No es q veo el código PHP, veo el html + la hoja de estilos "pegada". Si yo abro la página (estoy con EasyPHP), veo lo siguiente:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Documento sin t&iacute;tulo</title>

/*********ESTILOS************/
a { color: #f00; }
</head>

<body>
<a href="#nogo">10%</a>
</body>
</html> 
Como verán, hace bien el echo de 10%, pero me muestra mal la página.
Qué estoy haciendo mal?
Saludos y mil gracias por responder.


EDIT: Aparentemente, el problema viene por el lado de definir en "estilo.php" header('Content-type: text/css'); y vincularlo con un Include. Lo q hace es aplicarle el content-type a TODA la página, por eso visualizo el "código" (es como ver un css). Si saco eso, la página carga bien (es decir, no me muestra el código de la página). Pero obviamente, no hay hoja de estilos. Lo q hice es lo siguiente:
En "estilo.php", saque el header y simplemente englobe toda la hoja dentro de <style type="text/css"> </style>, de esa forma, al incluir el archivo, vuelve a pegar todo el código pero esta vez al estar dentro del tag <style>, la página se muestra correctamente y me toma bien las variables.

Se podría decir q ya lo solucioné, pero de todas formas me gustaría saber xq pasa lo q pasa, sera un tema de configuración del EasyPHP ?

Última edición por azeos; 25/06/2008 a las 14:41
  #4 (permalink)  
Antiguo 26/06/2008, 02:01
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: Css + Php

Cuando haces un include lo estas haciendo en el lado del servidor, todo se devuelve en un solo html. Por eso has tenido que quitar el header, y añadir el <style>. Los include es como si escribes todo el contenido de estilos.php dentro de index.php.

Solo tienes que entender que por un lado tienes lo que pasa en el servidor (PHP), y por otro lo que pasa en el navegador (HTML,Javascript). Son dos cosas separadas.

Por cierto, yo no definiria variables en el fichero de los estilos. La crearia en el index.php, que es flujo principal.
  #5 (permalink)  
Antiguo 26/06/2008, 02:20
Avatar de azeos  
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Css + Php

Cita:
Iniciado por DarkJ Ver Mensaje
Cuando haces un include lo estas haciendo en el lado del servidor, todo se devuelve en un solo html. Por eso has tenido que quitar el header, y añadir el <style>. Los include es como si escribes todo el contenido de estilos.php dentro de index.php.

Solo tienes que entender que por un lado tienes lo que pasa en el servidor (PHP), y por otro lo que pasa en el navegador (HTML,Javascript). Son dos cosas separadas.

Por cierto, yo no definiria variables en el fichero de los estilos. La crearia en el index.php, que es flujo principal.
Muchas gracias por la aclaración.
Las variables no van a ir dentro de la hoja de estilos, eso fue simplemente una prueba q me genero toda esta duda.
Pero ahora ya me quedo claro como funciona el include y q quiere decir "PHP", funciona del lado del servidor.

gracias !!
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 19:12.