Foros del Web » Programando para Internet » PHP »

Intento de función fallido

Estas en el tema de Intento de función fallido en el foro de PHP en Foros del Web. hola buenas.... he avanzado un poco en el tema de aprender y usar PHP, pero me he quedad otrabado en las funciones y esta es ...
  #1 (permalink)  
Antiguo 04/09/2008, 08:21
napsteir
Invitado
 
Mensajes: n/a
Puntos:
Intento de función fallido

hola buenas.... he avanzado un poco en el tema de aprender y usar PHP, pero me he quedad otrabado en las funciones y esta es la consequencia. Estaba intentando hacer una simple función par aque al introducir ?layout=XXX me cambiase el color del fondo. De manera que escribi lo aiguiente. El "body {" es de CSS al igual que el ";" del final de todo


Código PHP:
body {
    background-color: 
<?php function estilo($_GET["layout"])
{ if (
$_GET["layout"] == 'black') { echo '#000000'; }}
{ if (
$_GET["layout"] == 'white') { echo '#FFFFFF'; }}
{ if (
$_GET["layout"] == 'red') { echo '#AA0000'; }}
{ else echo 
'#000000'; }
?>;
Creo que el probmlema está en los {}, pero no lo se seguro. Espero que me ayudeis, Gracias

Edito:

He modificado un poco y lo he descubierto, pero todavia me presenta un error

Código PHP:
body {
    background-color: <?php function estilo($_GET["layout"])

    if (
$_GET["layout"] == 'black'
    { 
        echo 
'#000000'
    }
    if (
$_GET["layout"] == 'white'
    { 
        echo 
'#FFFFFF'
    }
    if (
$_GET["layout"] == 'red')
    { 
        echo 
'#AA0000'
    }
    else echo 
'#000000'
    }
?>;
En el navegador me dice :

Parse error: syntax error, unexpected '[', expecting ')' in ... line ... Creo que es por el $_GET[""], pero no se como resolverlo

Última edición por napsteir; 04/09/2008 a las 08:34
  #2 (permalink)  
Antiguo 04/09/2008, 08:35
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: [Ayuda] Intento de función fallido

Ese es tu código completo??

Por que no igualas ese $_GET a una $variable local de la función??

function estilo($pintar)
{
if (
$pintar == 'black')
{
$color=
'#000000';
}
if (
$pintar == 'white')
{
$color='#FFFFFF';
}
if (
$pintar == 'red')
{
$color='#AA0000';
}
else
$color='#000000';

return $color;
}


Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Última edición por Carxl; 04/09/2008 a las 08:41 Razón: Me había equivocado en el código
  #3 (permalink)  
Antiguo 04/09/2008, 08:47
napsteir
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Ayuda] Intento de función fallido

Gracias... ya lo he probado, pero lo que necesito es que la variable $pintar como tu la has llamado ha de tener un valor que pueda introducir junto con la barra de direccion... no se si me explico o que soy yo que no lo entiendo XD

El caso es ke yo kiero... ke al introducir ?layout=black el codigo haga un echo '#000000';

si introduzco un ?layout=white el codigo escriba echo '#FFFFFF'; y asi hasta el else.

Gracias

Edito... y si tuvieses razon como le doy a $pintar el valor de $_GET["layout"] evitando el problema de "[" expecting ")"
  #4 (permalink)  
Antiguo 04/09/2008, 08:53
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: [Ayuda] Intento de función fallido

Es exactamente lo que te han planteado, solo tienes que rescatar el valor que te llega por GET:

Código PHP:
$pintar $_GET['layout'];
// Ejecutas tu función
echo estilo($pintar); 
Te recomendaría que leyeras el manual de PHP para que te empapes un poco acerca de funciones y metodo de envio de variables.

Saludos.
  #5 (permalink)  
Antiguo 04/09/2008, 08:53
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: [Ayuda] Intento de función fallido

Código PHP:
function estilo($pintar)

    if ($pintar == 'black') 
    { 
        $color='#000000'; 
    }
    if ($pintar == 'white') 
    { 
        $color='#FFFFFF'; 
    }
    if ($pintar == 'red')
    { 
        $color='#AA0000'; 
    }
    else $color='#000000';

return $color;
}

body
{
    background-color: <?= function estilo($_GET["layout"])?>
}
Prueba eso...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 04/09/2008, 08:58
napsteir
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Ayuda] Intento de función fallido

Ok perfecto funciona, solo que cuando introduzco white me saca el fondo negro :S.. es decir... solo reconoce red.. y los de delante (black o white) los pone como else... es decir ke si escribo ?layout=black ó ?layout=white... escribe el color designado en else


Por lo demas Muchisimas gracias.


http://nipponap.ni.funpic.de/index3.php?layout=black

para ke lo vean y lo prueben...

Código PHP:
<?php 
    
function estilo($pintar)
{
if (
$pintar == 'black')
{
$color='#000000';
}
if (
$pintar == 'white')
{
$color='#FFFFFF';
}
if (
$pintar == 'red')
{
$color='#AA0000';
}
else 
$color='#00FF00';

return 
$color;
}
$pintar $_GET["layout"];
echo 
estilo($pintar);  
?>;

Última edición por napsteir; 04/09/2008 a las 09:08
  #7 (permalink)  
Antiguo 04/09/2008, 09:08
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: [Ayuda] Intento de función fallido

Es la lógica, pensé que lo necesitabas así.... trabaja con else if

if()....

elseif()....

elseif()...

else ...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #8 (permalink)  
Antiguo 04/09/2008, 09:09
napsteir
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Ayuda] Intento de función fallido

Perfecto... VAYA CRACKS!!! Muchisimas 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 14:05.