Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Alternar Color en DIV

Estas en el tema de Alternar Color en DIV en el foro de PHP en Foros del Web. Hola A todos Tengo la siguente consulta. Este es el codigo que uso para cambiar los colores de una tabla y funciona pero con SQL, ...
  #1 (permalink)  
Antiguo 04/05/2013, 13:32
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Alternar Color en DIV

Hola A todos

Tengo la siguente consulta.

Este es el codigo que uso para cambiar los colores de una tabla y funciona pero con SQL, al intentar ingresarlo como tabla simple no toma los colores

Código PHP:
<?
if ($colorbase == "1") { 
    
$color "#FFF"
    
$colorbase "2"
    } 
    else { 
    
$color "#CCC"
    
$colorbase "1"
    } 
echo 
"<div class='barra-color' bgcolor=$color>textos</div>";
?>
  #2 (permalink)  
Antiguo 04/05/2013, 13:57
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

Código PHP:
<?php
    $color 
"";
    
$limit 10;

    for(
$i 0$i <= $limit$i++)
    {
        if((
$i 2) == 0)
        {
            
$color "#fff";
        }
        else
        {
            
$color "#ccc";
        }

        echo 
"<div class='barra-color' style='background-color: " $color ";'>textos</div>";
    }    
?>
Prueba aber asi. Cambia el valor de $limit
  #3 (permalink)  
Antiguo 04/05/2013, 14:29
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Si funcionan pero hay un detalle si quiero mostrar solo 3 colores fijos, intente usar con SQL y funcionan


Cita:
Iniciado por bulter Ver Mensaje
Código PHP:
<?php
    $color 
"";
    
$limit 10;

    for(
$i 0$i <= $limit$i++)
    {
        if((
$i 2) == 0)
        {
            
$color "#fff";
        }
        else
        {
            
$color "#ccc";
        }

        echo 
"<div class='barra-color' style='background-color: " $color ";'>textos</div>";
    }    
?>
Prueba aber asi. Cambia el valor de $limit
  #4 (permalink)  
Antiguo 04/05/2013, 15:17
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

Ahora si que no te entiendo. Que es lo que no te funcciona ?
O quieres usar 3 colores en vez de 2 ? :/
  #5 (permalink)  
Antiguo 04/05/2013, 15:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Si funciona pero solo dos colores, como saco un tercer color?



Cita:
Iniciado por bulter Ver Mensaje
Ahora si que no te entiendo. Que es lo que no te funcciona ?
O quieres usar 3 colores en vez de 2 ? :/
  #6 (permalink)  
Antiguo 04/05/2013, 15:40
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

Por desgracia no tengo PHP en este PC ni editores tampoco asi que voy a la ciega.
No te aseguro de que funccionara, pero si te canta algun error o problema dime y lo miro:

Código PHP:
<?php
class TableColorManager
{
    private 
$_colors = array();
    private 
$_currentColor  0;

    public function 
AddColor($color)
    {
        if(!
is_string($color))
        {
            throw new 
Exception("\$color parameter must be a string");
        }

        if(
preg_match('/^#[a-f0-9]{6}$/i'$color)) 
        {
            
array_push($this->_colors$color);
        }
        else
        {
            throw new 
Exception("Invalid color");
        }
    
        return 
$this;
    }

    public function 
getNextColor()
    {
        if(
$this->_currentColor count($this->_colors) - 1)
        {
            
$this->_currentColor 0;
        }
        else
        {
            
$this->_currentColor++;
        }

        return 
$this->_colors[$this->_currentColor];
    }
}

$colors = new TableColorManager();
$colors->AddColor("#fff")->AddColor("#ff00ff");
$colors->AddColor("#000");
$colors->AddColor("#abc5e2");

for(
$i 0$i <= 10$i++)
{
    echo 
"Current color: " $colors->getNextColor() . "<br />";
}
?>
  #7 (permalink)  
Antiguo 04/05/2013, 17:52
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Error aqui amigo

Código HTML:
Fatal error: Uncaught exception 'Exception' with message 'Invalid color' in Stack trace: #0  TableColorManager->AddColor('#fff') #1 {main} thrown in  on line 20

Cita:
Iniciado por bulter Ver Mensaje
Por desgracia no tengo PHP en este PC ni editores tampoco asi que voy a la ciega.
No te aseguro de que funccionara, pero si te canta algun error o problema dime y lo miro:

Código PHP:
<?php
class TableColorManager
{
    private 
$_colors = array();
    private 
$_currentColor  0;

    public function 
AddColor($color)
    {
        if(!
is_string($color))
        {
            throw new 
Exception("\$color parameter must be a string");
        }

        if(
preg_match('/^#[a-f0-9]{6}$/i'$color)) 
        {
            
array_push($this->_colors$color);
        }
        else
        {
            throw new 
Exception("Invalid color");
        }
    
        return 
$this;
    }

    public function 
getNextColor()
    {
        if(
$this->_currentColor count($this->_colors) - 1)
        {
            
$this->_currentColor 0;
        }
        else
        {
            
$this->_currentColor++;
        }

        return 
$this->_colors[$this->_currentColor];
    }
}

$colors = new TableColorManager();
$colors->AddColor("#fff")->AddColor("#ff00ff");
$colors->AddColor("#000");
$colors->AddColor("#abc5e2");

for(
$i 0$i <= 10$i++)
{
    echo 
"Current color: " $colors->getNextColor() . "<br />";
}
?>
  #8 (permalink)  
Antiguo 04/05/2013, 17:59
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

No uses hex cortos usa el el color entero es decir #fff esto no pon #ffffff no uses #000 usa #000000 etc.
  #9 (permalink)  
Antiguo 04/05/2013, 18:08
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Ahora sale esto

Código PHP:
Current color#ff00ff
Current color#000000
Current color#abc5e2
Current color
Current color#ffffff
Current color#ff00ff
Current color#000000
Current color#abc5e2
Current color
Current color#ffffff
Current color#ff00ff 
esta ahora si.
Código PHP:
<?php
class TableColorManager
{
    private 
$_colors = array();
    private 
$_currentColor  0;

    public function 
AddColor($color)
    {
        if(!
is_string($color))
        {
            throw new 
Exception("\$color parameter must be a string");
        }

        if(
preg_match('/^#[a-f0-9]{6}$/i'$color)) 
        {
            
array_push($this->_colors$color);
        }
        else
        {
            throw new 
Exception("Invalid color");
        }
    
        return 
$this;
    }

    public function 
getNextColor()
    {
        if(
$this->_currentColor count($this->_colors) - 1)
        {
            
$this->_currentColor 0;
        }
        else
        {
            
$this->_currentColor++;
        }

        return 
$this->_colors[$this->_currentColor];
    }
}

$colors = new TableColorManager();
$colors->AddColor("#ffffff")->AddColor("#ff00ff");
$colors->AddColor("#000000");
$colors->AddColor("#abc5e2");

for(
$i 0$i <= 10$i++)
{
    echo 
"Current color: " $colors->getNextColor() . "<br />";
}
?>
Cita:
Iniciado por bulter Ver Mensaje
No uses hex cortos usa el el color entero es decir #fff esto no pon #ffffff no uses #000 usa #000000 etc.
  #10 (permalink)  
Antiguo 04/05/2013, 18:20
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

Bueno aqui esta , supongo que ya tiene que ir sin fallos:

Código PHP:
class TableColorManager 

    private 
$_colors = array(); 
    private 
$_currentColor  0

    public function 
AddColor($color
    { 
        if(!
is_string($color)) 
        { 
            throw new 
Exception("\$color parameter must be a string"); 
        } 

        if(
preg_match('/^#[a-f0-9]{6}$/i'$color))  
        { 
            
array_push($this->_colors$color); 
        } 
        else 
        { 
            throw new 
Exception("Invalid color"); 
        } 
     
        return 
$this
    } 

    public function 
getNextColor() 
    { 
        
$returnIndex $this->_currentColor;

        if(
$this->_currentColor >= count($this->_colors) - 1
        { 
            
$this->_currentColor 0
        } 
        else 
        { 
            
$this->_currentColor++; 
        } 

        return 
$this->_colors[$returnIndex]; 
    } 


$colors = new TableColorManager(); 
$colors->AddColor("#ffffff")->AddColor("#ff00ff"); 
$colors->AddColor("#000000"); 
$colors->AddColor("#abc5e2"); 

for(
$i 0$i <= 10$i++) 

    echo 
"Current color: " $colors->getNextColor() . "<br />"
    
// Aqui puedes poner tu codigo y usar $colors->getNextColor() para cojer el color

Saludos.
  #11 (permalink)  
Antiguo 04/05/2013, 18:27
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Ahora aparece asi. pero como hago para que salgan en cada tabla como el anterior? la idea es que salga por ID tengo nombres de forma horizontal 4 por pagina y esas deben salir con los colores asignados

blanco - negro - celeste (pagina uno)
blanco - negro - celeste (pagina dos)

la idea es que solo use de manera sensilla en cada "<tabla></tabla>"

Código PHP:
Current color#ffffff
Current color#ff00ff
Current color#000000
Current color#abc5e2
Current color#ffffff
Current color#ff00ff
Current color#000000
Current color#abc5e2
Current color#ffffff
Current color#ff00ff
Current color#000000 

Cita:
Iniciado por bulter Ver Mensaje
Bueno aqui esta , supongo que ya tiene que ir sin fallos:

Código PHP:
class TableColorManager 

    private 
$_colors = array(); 
    private 
$_currentColor  0

    public function 
AddColor($color
    { 
        if(!
is_string($color)) 
        { 
            throw new 
Exception("\$color parameter must be a string"); 
        } 

        if(
preg_match('/^#[a-f0-9]{6}$/i'$color))  
        { 
            
array_push($this->_colors$color); 
        } 
        else 
        { 
            throw new 
Exception("Invalid color"); 
        } 
     
        return 
$this
    } 

    public function 
getNextColor() 
    { 
        
$returnIndex $this->_currentColor;

        if(
$this->_currentColor >= count($this->_colors) - 1
        { 
            
$this->_currentColor 0
        } 
        else 
        { 
            
$this->_currentColor++; 
        } 

        return 
$this->_colors[$returnIndex]; 
    } 


$colors = new TableColorManager(); 
$colors->AddColor("#ffffff")->AddColor("#ff00ff"); 
$colors->AddColor("#000000"); 
$colors->AddColor("#abc5e2"); 

for(
$i 0$i <= 10$i++) 

    echo 
"Current color: " $colors->getNextColor() . "<br />"
    
// Aqui puedes poner tu codigo y usar $colors->getNextColor() para cojer el color

Saludos.
  #12 (permalink)  
Antiguo 04/05/2013, 18:45
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

Dibuja en paint photoshop o algo asi una imagen con como quieres que te salga la tabla y adjuntala y te hago el code
  #13 (permalink)  
Antiguo 04/05/2013, 19:50
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Mas detalles estan en tu inbox



Cita:
Iniciado por bulter Ver Mensaje
Dibuja en paint photoshop o algo asi una imagen con como quieres que te salga la tabla y adjuntala y te hago el code
  #14 (permalink)  
Antiguo 04/05/2013, 21:41
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Alternar Color en DIV

Para que usar php si es algo que puedes hacer desde css (hoja de estilos) con nth-child

Cita:
Algunas pseudo-clases como :nth-child(numero) permiten el uso de expresiones complejas para realizar selecciones avanzadas:

li:nth-child(2n+1) { ... } /* selecciona todos los elementos impares de una lista */
li:nth-child(2n) { ... } /* selecciona todos los elementos pares de una lista */

/* Las siguientes reglas alternan cuatro estilos diferentes para los párrafos */
p:nth-child(4n+1) { ... }
p:nth-child(4n+2) { ... }
p:nth-child(4n+3) { ... }
p:nth-child(4n+4) { ... }
http://librosweb.es/css_avanzado/cap..._de_css_3.html

Ejemplo:
http://jsfiddle.net/c2am/TQ7Yj/3/embedded/result/

Nada de programación, pura magia CSS.

Saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #15 (permalink)  
Antiguo 04/05/2013, 23:37
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Como lo uso???


Cita:
Iniciado por C2am Ver Mensaje
Para que usar php si es algo que puedes hacer desde css (hoja de estilos) con nth-child


http://librosweb.es/css_avanzado/cap..._de_css_3.html

Ejemplo:
http://jsfiddle.net/c2am/TQ7Yj/3/embedded/result/

Nada de programación, pura magia CSS.

Saludos
  #16 (permalink)  
Antiguo 04/05/2013, 23:39
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Alternar Color en DIV

Primero aclara si lo que quieres es simplemente que un cuadro aparezca de un color, luego otro de otro color y luego otro de otro color, sin importar el contenido.
Digo, el color no tiene relación con el contenido ¿no?
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #17 (permalink)  
Antiguo 04/05/2013, 23:43
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

hola c2am, la idea es que cada cuadro aparesca de un color diferente minimo 3, pero lo mano que no funciona con IE "internet explorer" solo con chrome, safari y mozilla ahi esta el problema, por ello acudo al php, alguna solucion??

Cita:
Iniciado por C2am Ver Mensaje
Primero aclara si lo que quieres es simplemente que un cuadro aparezca de un color, luego otro de otro color y luego otro de otro color, sin importar el contenido.
Digo, el color no tiene relación con el contenido ¿no?
  #18 (permalink)  
Antiguo 04/05/2013, 23:57
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Alternar Color en DIV

Así es para IE 8 y anteriores habrá que buscar otra forma, en eso tienes razón.
http://caniuse.com/#search=nth-child

Escuchaste o leiste algo de mejora progresiva, tal vez, y considerando que ya casi estamos en IE10, tal vez deberías evaluar si todo el trabajo extra que estas haciendo vale la pena.
Digo, tendrías que hacer un estudio de cuantos ven tu web con IE8 o anteriores.

Es una alternativa
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #19 (permalink)  
Antiguo 05/05/2013, 00:04
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Gracias C2am voy a esperar mas respuestas como solucionar este detalle aun que el otro usuario estaba cerca.


Cita:
Iniciado por C2am Ver Mensaje
Así es para IE 8 y anteriores habrá que buscar otra forma, en eso tienes razón.
http://caniuse.com/#search=nth-child

Escuchaste o leiste algo de mejora progresiva, tal vez, y considerando que ya casi estamos en IE10, tal vez deberías evaluar si todo el trabajo extra que estas haciendo vale la pena.
Digo, tendrías que hacer un estudio de cuantos ven tu web con IE8 o anteriores.

Es una alternativa
  #20 (permalink)  
Antiguo 05/05/2013, 02:42
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Alternar Color en DIV

Yo venía a comentar usar :nth-child. Pero ya C2am () lo apuntó.

Yo personalmente no le doy soporte al trío del infierno; IE6-7-8 (aka Belcebú, Satanás y Lucifer). A menos que hagas tu web para China, y viendo que el uso de estos sigue cayendo mes a mes, no veo una razón para darle soporte.

Y como realmente es una cuestión de diseño, y ya que se puede hacer, pues mejor hacerlo mediante CSS que por otra cosa.
  #21 (permalink)  
Antiguo 05/05/2013, 12:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

tienen razon con respecto a IE, pero hay que pensar en todo y no limitarce de mi parte que desaparesca definitivamente el IE pero ya no es cosa mia.
  #22 (permalink)  
Antiguo 05/05/2013, 12:50
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Alternar Color en DIV

Código PHP:
<?php 
class TableColorManager   
{   
    private 
$_colors = array();   
    private 
$_currentColor  0;   

    public function 
Add($color)   
    {   
        if(!
is_string($color) && !is_array($color))   
        {   
            throw new 
Exception("\$color parameter must be a string or array");   
        }   

        if(
is_string($color)) 
        { 
            
$this->AddColor($color); 
        } 
        else if(
is_array($color)) 
        { 
            foreach(
$color as $colorValue
            { 
                
$this->AddColor($colorValue); 
            } 
        } 
       
        return 
$this;   
    }   

    private function 
AddColor($color
    { 
        if(
preg_match('/^#[a-f0-9]{6}$/i'$color))    
        {   
            
array_push($this->_colors$color);   
        }   
        else   
        {   
            throw new 
Exception("Invalid color");   
        }   
    } 
     
    public function 
Next()   
    {   
        if(
$this->_currentColor >= count($this->_colors) - 1)   
        {   
            
$this->_currentColor 0;   
        }   
        else   
        {   
            
$this->_currentColor++;   
        }   
         
        return 
$this->_colors[$this->_currentColor];   
    }   
     
    public function 
Current() 
    { 
        return 
$this->_colors[$this->_currentColor]; 
    } 
     
    public function 
Prev() 
    { 
        
$returnIndex = ($this->_currentColor min(2count($this->_colors)-1));  
         
        if(
$returnIndex 0
        { 
            
$returnIndex count($this->_currentColor) + 1
        } 
     
        return 
$this->_colors[$returnIndex]; 
    } 
}   

$colors = new TableColorManager();   
$colors->Add(array("#006699""#ff00ff")); 
$colors->Add("#abc5e2"); 

for(
$i 0$i 8$i++) 

    echo 
"<table style='width: 200px; height: 100px; border: 1px solid #000; text-align: center; display: inline-block;'> 
            <tr> 
                <td style='background-color: " 
$colors->Next() . "; height: 10px;'> 
                    Nombre 
                </td> 
            </tr> 
            <tr> 
                <td> 
                    FOTO 
                </td> 
            </tr> 
        </table>&nbsp;&nbsp;&nbsp;&nbsp;"



?>
Aqui lo tienes...

Saludos
  #23 (permalink)  
Antiguo 06/05/2013, 11:40
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Alternar Color en DIV

Muy bien el aporte gracias.
Cita:
Iniciado por bulter Ver Mensaje
Código PHP:
<?php 
class TableColorManager   
{   
    private 
$_colors = array();   
    private 
$_currentColor  0;   

    public function 
Add($color)   
    {   
        if(!
is_string($color) && !is_array($color))   
        {   
            throw new 
Exception("\$color parameter must be a string or array");   
        }   

        if(
is_string($color)) 
        { 
            
$this->AddColor($color); 
        } 
        else if(
is_array($color)) 
        { 
            foreach(
$color as $colorValue
            { 
                
$this->AddColor($colorValue); 
            } 
        } 
       
        return 
$this;   
    }   

    private function 
AddColor($color
    { 
        if(
preg_match('/^#[a-f0-9]{6}$/i'$color))    
        {   
            
array_push($this->_colors$color);   
        }   
        else   
        {   
            throw new 
Exception("Invalid color");   
        }   
    } 
     
    public function 
Next()   
    {   
        if(
$this->_currentColor >= count($this->_colors) - 1)   
        {   
            
$this->_currentColor 0;   
        }   
        else   
        {   
            
$this->_currentColor++;   
        }   
         
        return 
$this->_colors[$this->_currentColor];   
    }   
     
    public function 
Current() 
    { 
        return 
$this->_colors[$this->_currentColor]; 
    } 
     
    public function 
Prev() 
    { 
        
$returnIndex = ($this->_currentColor min(2count($this->_colors)-1));  
         
        if(
$returnIndex 0
        { 
            
$returnIndex count($this->_currentColor) + 1
        } 
     
        return 
$this->_colors[$returnIndex]; 
    } 
}   

$colors = new TableColorManager();   
$colors->Add(array("#006699""#ff00ff")); 
$colors->Add("#abc5e2"); 

for(
$i 0$i 8$i++) 

    echo 
"<table style='width: 200px; height: 100px; border: 1px solid #000; text-align: center; display: inline-block;'> 
            <tr> 
                <td style='background-color: " 
$colors->Next() . "; height: 10px;'> 
                    Nombre 
                </td> 
            </tr> 
            <tr> 
                <td> 
                    FOTO 
                </td> 
            </tr> 
        </table>&nbsp;&nbsp;&nbsp;&nbsp;"



?>
Aqui lo tienes...

Saludos

Etiquetas: color, sql, tabla
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 07:42.