Foros del Web » Programando para Internet » PHP »

Cambiar el color de las celdas de una tabla

Estas en el tema de Cambiar el color de las celdas de una tabla en el foro de PHP en Foros del Web. Hola, necesito ayuda con un código de PHP, a ver si alguien puede echarme una mano. Tengo que hacer un script que recoja mediante un ...
  #1 (permalink)  
Antiguo 04/03/2012, 09:59
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Cambiar el color de las celdas de una tabla

Hola, necesito ayuda con un código de PHP, a ver si alguien puede echarme una mano.

Tengo que hacer un script que recoja mediante un formulario el número de filas y columnas que el usuario quiera y cree una tabla con ese número de filas y de columnas. Además de la tabla se tienen que mostrar unos enlaces con el texto (rojo,verde,azul). Al pinchar en los enlaces se selecciona el color,
Con el color seleccionado, al pinchar sobre una celda de la tabla, se tiene que pintar de ese color el fondo de esa celda.

Casi lo tengo pero se colorean las celdas que hay antes que la celda seleccionada. Dejo el código por si alguién me puede dar alguna pista. Gracias!


<?php
session_start();

if(!isset($_SESSION['tb']))
{
$_SESSION['tb']=array();
}

if(!isset($_SESSION['color_actual']))
{
$_SESSION['color_actual']="white";
}


if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST')
{
echo "la peticion es POST";
$_SESSION['f']=$_POST['filas'];
$_SESSION['c']=$_POST['columnas'];

echo"<br>".$_SESSION['f']." filas";
echo"<br>".$_SESSION['c']." columnas";

}
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='GET')
{
if(isset($_GET['color']))
{
$_SESSION['color_actual']=$_GET['color'];
}

if(isset($_GET['fila']) && isset($_GET['columna']))
{
$f= $_GET['fila'];
$c= $_GET['columna'];
for($i=0;$i<$f;$i++)
for($x=0;$x<$c;$x++)
$_SESSION['tb'][$i][$x] = "background-color: ".$_SESSION['color_actual'];
}
}


?>
<html>
<head></head>
<body>

<form method="post" action="">
<p>Filas: <input type="number" name="filas" /></p>
<p>Columnas: <input type="number" name="columnas" /></p>
<p><input type="submit" name="submit" /></p>
</form>

<table border="1">
<?php for($i=0;$i<$_SESSION['f'];$i++): ?>
<tr>
<?php for($x=0;$x<$_SESSION['c'];$x++): ?>
<td style="<?php echo $_SESSION['tb'][$i][$x] ?>"><a href="?fila=<?php echo$i ?>&columna=<?php echo$x ?>"> <?php echo"$i-$x"; ?></a></td>
<?php endfor; ?>
</tr>
<?php endfor; ?>
</table>

<ul>
<li><a href="?color=red">Rojo</a></li>
<li><a href="?color=green">Verde</a></li>
<li><a href="?color=blue">Azul</a></li>
</ul>

</body>
</html>
  #2 (permalink)  
Antiguo 04/03/2012, 10:37
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Cambiar el color de las celdas de una tabla

Código PHP:
Ver original
  1. <?php
  2.  
  3. ini_set("display_errors", 1);
  4. if(isset($_GET['restart']))
  5. {
  6.     header("Location: ".basename($_SERVER['PHP_SELF'])."");
  7. }
  8. if(!isset($_SESSION['tb']))
  9. {
  10.     $_SESSION['tb']=array();
  11. }
  12.  
  13. if(!isset($_SESSION['color_actual']))
  14. {
  15.     $_SESSION['color_actual']="white";
  16. }
  17.  
  18.  
  19. if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST')
  20. {
  21.     echo "la peticion es POST";
  22.     $_SESSION['f']=$_POST['filas'];
  23.     $_SESSION['c']=$_POST['columnas'];
  24.  
  25.     echo"<br>".$_SESSION['f']." filas";
  26.     echo"<br>".$_SESSION['c']." columnas";
  27.  
  28. }
  29. if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='GET')
  30. {
  31.     if(isset($_GET['color']))
  32.     {
  33.         $_SESSION['color_actual']=$_GET['color'];
  34.     }
  35.  
  36.     if(isset($_GET['fila']) && isset($_GET['columna']))
  37.     {
  38.         $f= $_GET['fila'];
  39.         $c= $_GET['columna'];
  40.     }
  41. }
  42. ?>
  43. <html>
  44. <head></head>
  45. <body>
  46.  
  47. <form method="post" action="">
  48. <p>Filas: <input type="number" name="filas" /></p>
  49. <p>Columnas: <input type="number" name="columnas" /></p>
  50. <p><input type="submit" name="submit" /></p>
  51. </form>
  52.  
  53. <table border="1">
  54. <?php for($i=0;$i<$_SESSION['f'];$i++): ?>
  55.     <tr>
  56.     <?php for($x=0;$x<$_SESSION['c'];$x++): ?>
  57.         <td style="background-color:<?php echo ($f==$i && $c == $x)?$_SESSION['color_actual']:""; ?>;"><a
  58.             href="?fila=<?php echo $i ?>&columna=<?php echo $x ?>"> <?php echo"$i-$x"; ?></a></td>
  59.             <?php endfor; ?>
  60.     </tr>
  61.     <?php endfor; ?>
  62. </table>
  63.  
  64. <ul>
  65.     <li><a href="?color=red">Rojo</a></li>
  66.     <li><a href="?color=green">Verde</a></li>
  67.     <li><a href="?color=blue">Azul</a></li>
  68.     <li><a href="?restart=restart">Restart</a></li>
  69. </ul>
  70.  
  71. </body>
  72. </html>
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 04/03/2012, 10:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Cambiar el color de las celdas de una tabla

bueno hacemos algo muy simple no hace falta iniciar una session para color
Código PHP:
Ver original
  1. if(isset($_GET['color'])){
  2. $colorCell = $_GET['color'];
  3. }else{
  4. $colorCell = '#333' // imagenamos que el color en default es este #333
  5. echo '<a href="?color=#fd44f">color rojo</a>'; // imagina que el rojo
  6. echo '<a href="?color=#f124f">color azul</a>'; // imagina que el azul
  7. echo '<a href="?color=#e435e">color verde</a>'; // imagina que el verde
  8.  
  9. // en el nuestra celda haremos algo asi
  10. echo '<tr style="background-color:'.$colorCell.'"><td></td></tr>';
estpero que te serve
__________________
cada vez que aprendes algo te crees que no sabes nada
  #4 (permalink)  
Antiguo 04/03/2012, 11:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Respuesta: Cambiar el color de las celdas de una tabla

Cita:
Iniciado por arros Ver Mensaje
bueno hacemos algo muy simple no hace falta iniciar una session para color
Código PHP:
Ver original
  1. if(isset($_GET['color'])){
  2. $colorCell = $_GET['color'];
  3. }else{
  4. $colorCell = '#333' // imagenamos que el color en default es este #333
  5. echo '<a href="?color=#fd44f">color rojo</a>'; // imagina que el rojo
  6. echo '<a href="?color=#f124f">color azul</a>'; // imagina que el azul
  7. echo '<a href="?color=#e435e">color verde</a>'; // imagina que el verde
  8.  
  9. // en el nuestra celda haremos algo asi
  10. echo '<tr style="background-color:'.$colorCell.'"><td></td></tr>';
estpero que te serve
Arros, muchas gracias.

El caso es que necesito usar sesiones para poder colorear diferentes celdas sucesivamente.
Si no uso sesiones que mantengan el color, cuando cuando vaya a colorear una nueva celda la anterior perderá el color, la idea que tengo es guardar en sesiones para cada una de las celdas su color de fondo.
  #5 (permalink)  
Antiguo 04/03/2012, 19:28
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Respuesta: Cambiar el color de las celdas de una tabla

Ya lo he conseguido. Aquí dejo el código por si alguien lo quiere.

Código PHP:
[HIGHLIGHT="PHP"]<?php
session_start
();

if(!isset(
$_SESSION['f']) && !isset($_SESSION['c']))
{
$_SESSION['f']=0;
$_SESSION['c']=0;
}

if(!isset(
$_SESSION['tb']))
{
    
$_SESSION['tb']=array();
}

if(!isset(
$_SESSION['color_actual']))
{
    
$_SESSION['color_actual']="white";
}


if(isset(
$_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST')
{
    
    
$_SESSION['f']=$_POST['filas'];
    
$_SESSION['c']=$_POST['columnas'];

}
if(isset(
$_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='GET')
{
    if(isset(
$_GET['color']))
    {
        
$_SESSION['color_actual']=$_GET['color'];
    }
    
    if(isset(
$_GET['fila']) && isset($_GET['columna']))
    {
        
$f$_GET['fila'];
        
$c$_GET['columna'];
        
$_SESSION['tb'][$f][$c] = "background-color: ".$_SESSION['color_actual'];
    }
}
?>
<html>
<head></head>
<body>
    <form method="post" action="">
        <p>Filas: <input type="number" name="filas" /></p>
        <p>Columnas: <input type="number" name="columnas" /></p>
        <p>Enviar <input type="submit" name="submit" /></p>
        <p>Limpiar <input type="submit" name="limpiar" /></p>

    </form>

    <table border="1">
    <?php for($i=0;$i<$_SESSION['f'];$i++): ?>
        <tr>
        <?php for($x=0;$x<$_SESSION['c'];$x++): ?>
            <td style="<?php echo $_SESSION['tb'][$i][$x?>"><a href="?fila=<?php echo$i ?>&columna=<?php echo$x ?>"> <?php echo"$i-$x"?></a></td>
        <?php endfor; ?>
        </tr>
    <?php endfor; ?>
    </table>

<?php if($_SESSION['f']>|| $_SESSION['c']>0)
{
    echo 
$enlaces;
}
?>



    
    <ul>
        <li><a href="?color=red">Rojo</a></li>
        <li><a href="?color=green">Verde</a></li>
        <li><a href="?color=blue">Azul</a></li>
    </ul>

</body>
</html>[/HIGHLIGHT]

Etiquetas: arrays, sesiones
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 21:06.