Pregunta:
Fecha: 17-01-2019 12:01:30
(En Español)
¿Que tendría que modificar de mi código?
El código que estoy utilizando es este:
<?php
require ('validarnum.php');
$admin=$_SESSION['dondequeda_nom'];
$fecha2=date("d-m-Y H:i:s");
if (isset($_GET['afegir'])) {
$x1=$_GET['codigo'];
if (isset($_POST['afegir'])) {
}
?>
<div class="row">
<div class="col-xs-9">
<div class="box box-primary">
<div class="box-header">
</div><!-- /.box-header -->
<div class="box-body table-responsive">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Referència</th>
<th>Nom</th>
<th>Marca</th>
<th>Tipus de Peça</th>
<th>Gènere</th>
<th>Color</th>
<th>Talla</th>
<th>PVP</th>
<th>Quantitat</th>
<th>Opcions</th>
</tr>
</thead>
<tbody>
<?php
if($tipo2==1){
$consulta="SELECT id_productos,referencia, p_publico, peça, model, marca, color, talla, genere, cantidad FROM productos ORDER BY id_productos ASC ";
$bd->consulta($consulta);
while ($fila=$bd->mostrar_registros()) {
switch ($fila['status']) {
case 1:
$btn_st = "danger";
$txtFuncion = "Desactivar";
break;
case 0:
$btn_st = "primary";
$txtFuncion = "Activar";
break;
}
//echo '<li data-icon="delete"><a href="?mod=lugares?edit='.$fila['id_tipo'].'"><img src="images/lugares/'.$fila['imagen'].'" height="350" >'.$fila['nom'].'</a><a href="?mod=lugares?borrar='.$fila['id_tipo'].'" data-position-to="window" >Borrar</a></li>';
echo "<tr>
<td>
$fila[referencia]
</td>
<td>
$fila[model]
</td>
<td> $fila[marca] </td>
<td>
$fila[peça]
</td>
<td>
$fila[genere]
</td>
<td>
$fila[color]
</td>
<td>
$fila[talla]
</td>
<td>
$fila[p_publico]
</td>
<td>";
if( $fila[cantidad]==0){
echo 0;
}else{
echo $fila[cantidad];
}
echo "
</td>
<td><center>
";
if($tipo2==1){
echo "
<a href=?mod=afegirproducte&editar&codigo=".$fila["id_productos"]."><img src='./img/editar.png' width='25' alt='Editar' title='EDITAR LES DADES DE ".$fila["peça"]."'></a>
";
echo"
<a href=?mod=llistaproductes&afegirestoc&codigo=".$fila["id_productos"]."><img src='./img/afegir.png' width='25' alt='Afegir' title='AFEGIR ESTOC A ".$fila["peça"]."'></a> ";
echo"
<a href=?mod=llistaproductes&descargo&codigo=".$fila["id_productos"]."><img src='./img/llevar.png' width='25' alt='Llevar' title='LLEVAR ESTOC DE ".$fila["peça"]."'></a>
<a href=?mod=afegirproducte&eliminar&codigo=".$fila["id_productos"]."><img src='./img/elimina2.png' width='25' alt='Eliminar' title='ELIMINAR A ".$fila["peça"]."'></a>";
}else{
echo "No disponible per a convidat";
}
}
echo " </center> </td>
</tr>";
} ?>
</tbody>
<tfoot>
<tr>
<th>Referència</th>
<th>Nom</th>
<th>Marca</th>
<th>Tipus de Peça</th>
<th>Gènere</th>
<th>Color</th>
<th>Talla</th>
<th>PVP</th>
<th>Quantitat</th>
<th>Opcions</th>
</tr>
</tfoot>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
<h4> <p align="center"><a target='_blank' href=./pdf/llistaproductes.php>Imprimir la LLista <br />
<img src='./img/impresora.png' width='40' alt='Imprimir' title='Imprimir la llista'></a> </p>
</h4>
</div>
<?php
Votos: 0 - Respuestas: 20 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Cambiar color de la celda según el valor obtenido de la base de datos[Resuelta]
Hola a ver quien puede ayudarme, quisiera que la celda que contiene la variable de "cantidad" se cambiara de color según estos parámetros, si el numero está entre el 0 y el 10 que el fondo sea rojo, si el numero está entre el 11 y el 20 que salga en amarillo y si está por encima de 20 que salga en verde.¿Que tendría que modificar de mi código?
El código que estoy utilizando es este:
<?php
require ('validarnum.php');
$admin=$_SESSION['dondequeda_nom'];
$fecha2=date("d-m-Y H:i:s");
if (isset($_GET['afegir'])) {
$x1=$_GET['codigo'];
if (isset($_POST['afegir'])) {
}
?>
<div class="row">
<div class="col-xs-9">
<div class="box box-primary">
<div class="box-header">
</div><!-- /.box-header -->
<div class="box-body table-responsive">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Referència</th>
<th>Nom</th>
<th>Marca</th>
<th>Tipus de Peça</th>
<th>Gènere</th>
<th>Color</th>
<th>Talla</th>
<th>PVP</th>
<th>Quantitat</th>
<th>Opcions</th>
</tr>
</thead>
<tbody>
<?php
if($tipo2==1){
$consulta="SELECT id_productos,referencia, p_publico, peça, model, marca, color, talla, genere, cantidad FROM productos ORDER BY id_productos ASC ";
$bd->consulta($consulta);
while ($fila=$bd->mostrar_registros()) {
switch ($fila['status']) {
case 1:
$btn_st = "danger";
$txtFuncion = "Desactivar";
break;
case 0:
$btn_st = "primary";
$txtFuncion = "Activar";
break;
}
//echo '<li data-icon="delete"><a href="?mod=lugares?edit='.$fila['id_tipo'].'"><img src="images/lugares/'.$fila['imagen'].'" height="350" >'.$fila['nom'].'</a><a href="?mod=lugares?borrar='.$fila['id_tipo'].'" data-position-to="window" >Borrar</a></li>';
echo "<tr>
<td>
$fila[referencia]
</td>
<td>
$fila[model]
</td>
<td> $fila[marca] </td>
<td>
$fila[peça]
</td>
<td>
$fila[genere]
</td>
<td>
$fila[color]
</td>
<td>
$fila[talla]
</td>
<td>
$fila[p_publico]
</td>
<td>";
if( $fila[cantidad]==0){
echo 0;
}else{
echo $fila[cantidad];
}
echo "
</td>
<td><center>
";
if($tipo2==1){
echo "
<a href=?mod=afegirproducte&editar&codigo=".$fila["id_productos"]."><img src='./img/editar.png' width='25' alt='Editar' title='EDITAR LES DADES DE ".$fila["peça"]."'></a>
";
echo"
<a href=?mod=llistaproductes&afegirestoc&codigo=".$fila["id_productos"]."><img src='./img/afegir.png' width='25' alt='Afegir' title='AFEGIR ESTOC A ".$fila["peça"]."'></a> ";
echo"
<a href=?mod=llistaproductes&descargo&codigo=".$fila["id_productos"]."><img src='./img/llevar.png' width='25' alt='Llevar' title='LLEVAR ESTOC DE ".$fila["peça"]."'></a>
<a href=?mod=afegirproducte&eliminar&codigo=".$fila["id_productos"]."><img src='./img/elimina2.png' width='25' alt='Eliminar' title='ELIMINAR A ".$fila["peça"]."'></a>";
}else{
echo "No disponible per a convidat";
}
}
echo " </center> </td>
</tr>";
} ?>
</tbody>
<tfoot>
<tr>
<th>Referència</th>
<th>Nom</th>
<th>Marca</th>
<th>Tipus de Peça</th>
<th>Gènere</th>
<th>Color</th>
<th>Talla</th>
<th>PVP</th>
<th>Quantitat</th>
<th>Opcions</th>
</tr>
</tfoot>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
<h4> <p align="center"><a target='_blank' href=./pdf/llistaproductes.php>Imprimir la LLista <br />
<img src='./img/impresora.png' width='40' alt='Imprimir' title='Imprimir la llista'></a> </p>
</h4>
</div>
<?php
Votos: 0 - Respuestas: 20 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 17-01-2019 15:11:18 Buenas noches.
Se me ocurre que puedas trabajar con css, creando 3 clases por ejemplo (cantRojo, cantAmarillo, cantVerde) y le aplicas un background del color adecuado al nombre.
Esas clases se la aplicarias a la columna cantidad mediante una variable que tomaria el nombre de la clase, que previamente pasaria por un condicional. Seria algo asi:
// al inicio del bucle while deberias poner algo asi
$cantColor ="";
$can=$fila['cantidad'];
if($can < 21){
$cantColor="cantRojo";
}elseif($can < 21){
$cantColor="cantAmarillo";
}else{
$cantColor="cantVerde";
}
// Hasta aqui la variable $cantColor ya tendria la clase css acorde.
// En la etiqueta td de cantidad deberías agregarle una clase mediante una variable, para que cada vuelta esa variable imprima una clase de acuerdo al valor de cantidad, seria algo asi:
<td class="'.$cantColor.'">";
Espero no haberte confundido y es lo que se me ocurre podrías hacer, seguramente debe haber mejor forma de hacer.
(Si usas bootstrap y no queres crear clases podrias usar bg-success, bg-warning, bg-danger)
Saludos Votos: 0 - Link respuesta -
Fecha: 18-01-2019 02:52:51 Hola Raul, sería así? Lo he puesto y no me funciona he creado los códigos css también y nada no funciona....
while ($fila=$bd->mostrar_registros()) {
// al inicio del bucle while deberias poner algo asi
$cantColor ="";
$can=$fila['cantidad'];
if($can < 21){
$cantColor="cantRojo";
}elseif($can < 21){
$cantColor="cantAmarillo";
}else{
$cantColor="cantVerde";
}
// Hasta aqui la variable $cantColor ya tendria la clase css acorde.
// En la etiqueta td de cantidad deberías agregarle una clase mediante una variable, para que cada vuelta esa variable imprima una clase de acuerdo al valor de cantidad, seria algo asi:
switch ($fila['status']) {
case 1:
$btn_st = "danger";
$txtFuncion = "Desactivar";
break;
case 0:
$btn_st = "primary";
$txtFuncion = "Activar";
break;
}
//echo '<li data-icon="delete"><a href="?mod=lugares?edit='.$fila['id_tipo'].'"><img src="images/lugares/'.$fila['imagen'].'" height="350" >'.$fila['nom'].'</a><a href="?mod=lugares?borrar='.$fila['id_tipo'].'" data-position-to="window" >Borrar</a></li>';
echo "<tr>
<td>
$fila[referencia]
</td>
<td>
$fila[model]
</td>
<td> $fila[marca] </td>
<td>
$fila[peça]
</td>
<td>
$fila[genere]
</td>
<td>
$fila[color]
</td>
<td>
$fila[talla]
</td>
<td>
$fila[p_publico]
</td>
<td class=".$cantColor.">";
if( $fila[cantidad]==0){
echo 0;
}else{
echo $fila[cantidad];
}
echo "
</td>
<td><center>
"; Votos: 0 - Link respuesta -
Fecha: 18-01-2019 03:42:38 Buen Dia.
aqui te falta unas comillas simples, para interrumplir el echo e ingresar una variable php.
<td class=".$cantColor.">";
te quedaria asi: "'.variable.'"
<td class="'.$cantColor.'">';
prueba con eso.
otra cosa...
en los echo usa comillas simples, para que en las etiquetas html puedas usar las comillas dobles;
echo '<td class="'.$cantColor.'">'; Votos: 0 - Link respuesta -
Fecha: 18-01-2019 03:59:56
echo "<tr> <td>$fila[referencia]</td> <td>$fila[model]</td> <td> $fila[marca]</td> <td>$fila[peça]</td> <td>$fila[genere]</td> <td>$fila[color]</td> <td>$fila[talla]</td> <td>$fila[p_publico]</td>"; echo ' <td class="'.$cantColor.'">'; if( $fila[cantidad]==0){ echo 0; }else{ echo $fila[cantidad]; } echo " </td> <td><center> ";
Votos: 0 - Link respuesta -
Fecha: 18-01-2019 04:54:51 puedes probar haber si asi te gusta !!!
con esto cambias el color del fondo y del texto
if( $fila[cantidad]==0){ echo '<p style="background-color:red;color:white;">0</p>'; }else{ if( $fila[cantidad] < 10) { echo '<p style="background-color:red;color:white;">'.$fila[cantidad].'</p>'; } if( $fila[cantidad] < 20) { echo '<p style="background-color:yellow;color:white;">'.$fila[cantidad].'</p>'; } if( $fila[cantidad] >20) { echo '<p style="background-color:green;color:white;">'.$fila[cantidad].'</p>'; }; }
revisa la sintaxis que escribo de cabeza y a ojo de buen cubero !!!!
un saludo !!! Votos: 0 - Link respuesta -
Fecha: 18-01-2019 05:17:27 puedes probar haber si asi te gusta !!!
con esto cambias el color del fondo y del texto de la CELDA
echo "<tr> <td> $fila[referencia] </td> <td> $fila[model] </td> <td> $fila[marca] </td> <td> $fila[peça] </td> <td> $fila[genere]</td> <td>$fila[color]</td> <td>$fila[talla]</td> <td>$fila[p_publico]</td> "; if( $fila[cantidad]==0){ echo '<td style="background-color:red;color:white;">0'; } if( $fila[cantidad] <= 10 ){ echo '<td style="background-color:red;color:white;">'.$fila[cantidad]; } if( $fila[cantidad] <= 20 ){ echo '<td style="background-color:yellow;color:white;">'.$fila[cantidad]; } if( $fila[cantidad] >20 ){ echo '<td style="background-color:green;color:white;">'.$fila[cantidad]; } echo " </td> <td><center> ";
revisa la sintaxis que escribo de cabeza y a ojo de buen cubero !!!!
un saludo !!! Votos: 0 - Link respuesta -
Fecha: 18-01-2019 05:21:57 Hola muchas gracias a los dos!!!
Con tus códigos Raúl no logro que funcione....
En cambio con los tuyos Toni corrigiendo algunas comillas funciona aunque ahora me encuentro con otro problema....
Si tengo del 1 al 10 me aparecen los dos colores por ejemplo si tengo el numero 4 aparece con background rojo y otra linea con otro 4 en amarillo
Y si tengo el numero 20 no me aparece el verde ni el numero.... si es mayor de 20 funciona correctamente.
Adjunto el código final utilizado:
<td>";
if( $fila[cantidad]==0){
echo '<p style="background-color:red;color:white;">0</p>';
}else{
if( $fila[cantidad] < 10) {
echo '<p style="background-color:red;color:white;">'.$fila[cantidad].'</p>';
}
if( $fila[cantidad] < 20) {
echo '<p style="background-color:yellow;color:white;">'.$fila[cantidad].'</p>';
}
if( $fila[cantidad] >20) {
echo '<p style="background-color:green;color:white;">'.$fila[cantidad].'</p>';
}
}
echo "
</td>
Muchas gracias a ambos Votos: 0 - Link respuesta -
Fecha: 18-01-2019 05:26:04 mira mi perfil... dale a mi afotoooo !!! XDD
cambialo por el segundo que te he puesto que te cambia las celdas !!!!
vinga vicent !!! endavant !!!!
adelante !!! !! Votos: 0 - Link respuesta -
Fecha: 18-01-2019 05:45:54 para evitar el problema de los colores que se me ha ido la cabeza ponlo asi... ejemplo de cambiar el fondo de las celdas....:
if( $fila[cantidad] >20 ){ echo '<td style="background-color:green;color:white;">'.$fila[cantidad]; } if( $fila[cantidad] <= 20 ){ echo '<td style="background-color:yellow;color:white;">'.$fila[cantidad]; } if( $fila[cantidad] <=10 ){ echo '<td style="background-color:red;color:white;">'.$fila[cantidad]; }
de la otra forma 4 es menor de 10 con lo cual rojo... pero luego es menor de 20 con lo cual lo pone amarillo....
tal como esta ahora 4 es menor de 20 asique amarillo... luego siguiendo las lineas 4 es menor de 10 asique rojo....
mmmmm te saldran celdas duplicadas...... luego a la noche te lo modifico que ahora me tengo que ir...
antonio_dominguez_jurado@hotmail.com
https://www.facebook.com/toni.dominguez.735 Votos: 0 - Link respuesta -
Fecha: 18-01-2019 06:01:11 Me sigue duplicando los amarillos y rojos....
echo "<tr>
<td> $fila[referencia] </td>
<td> $fila[model] </td>
<td> $fila[marca] </td>
<td> $fila[peça] </td>
<td> $fila[genere]</td>
<td>$fila[color]</td>
<td>$fila[talla]</td>
<td>$fila[p_publico]</td>
";
if( $fila[cantidad] >20 ){
echo '<td style="background-color:green;color:white;">'.$fila[cantidad];
}
if( $fila[cantidad] <= 20 ){
echo '<td style="background-color:yellow;color:white;">'.$fila[cantidad];
}
if( $fila[cantidad] <=10 ){
echo '<td style="background-color:red;color:white;">'.$fila[cantidad];
}
echo "
</td>
<td><center>
"; Votos: 0 - Link respuesta -
Fecha: 18-01-2019 06:06:24 si si... luego te lo modifico ponme tu face !!! Votos: 0 - Link respuesta
-
Fecha: 18-01-2019 06:21:43 Tomando con lo que vienen trabajando, prueba asi.
if( $fila[cantidad] < 11 ){ echo '<td style="background-color:red;color:white;">'.$fila[cantidad]; }elseif($fila[cantidad] < 21 ){ echo '<td style="background-color:yellow;color:white;">'.$fila[cantidad]; }else{ echo '<td style="background-color:green;color:white;">'.$fila[cantidad]; }
Votos: 0 - Link respuesta -
Fecha: 18-01-2019 06:41:01 Oleee ahora sí que sí!!!
Ya funciona perfecto, muchas gracias Raul Votos: 0 - Link respuesta -
-
Fecha: 18-01-2019 07:07:05 Por cierto que tengo otra página donde me aparecen los resultados y lo tengo con otro código y si pongo este no funciona....
<td><?php echo $fila['talla'] ?></td>
<td><?php echo $fila['p_publico'] ?></td>
<td> <?php
if( $fila[cantidad] < 10 ){
echo '<td style="background-color:red;color:white;">'.$fila[cantidad];
}elseif($fila[cantidad] < 20 ){
echo '<td style="background-color:yellow;color:black;">'.$fila[cantidad];
}else{
echo '<td style="background-color:#35e300;color:white;">'.$fila[cantidad];
}
?></td>
Puedes ver en que me equivoco? Votos: 0 - Link respuesta -
Fecha: 18-01-2019 07:30:17 Prueba con esto...
<td><?php echo $fila['talla']; ?></td> <td><?php echo $fila['p_publico']; ?></td> <?php if( $fila['cantidad'] < 10 ){ echo '<td style="background-color:red;color:white;">'.$fila['cantidad'].'</td>'; }elseif($fila['cantidad'] < 20 ){ echo '<td style="background-color:yellow;color:black;">'.$fila['cantidad'].'</td>'; }else{ echo '<td style="background-color:#35e300;color:white;">'.$fila['cantidad'].'</td>'; } ?>
Votos: 0 - Link respuesta -
Fecha: 18-01-2019 07:47:51 ok!!! Perfecto!!! Creo que ya lo tengo todo funcionando....
Muchas gracias Votos: 0 - Link respuesta -
-
-
Fecha: 28-02-2022 01:09:58 Hola,
Quería hacer una consulta similar.
En mi caso, me gustaría saber si es posible cambiar el color de fondo de una celda según el resultado de un cálculo matemático. El cálculo sería {100-(v221+v222-2)*(100/8)}, donde v221 y v222 son variables de una encuesta asociada.
Siguiendo un poco lo que habéis expuesto, he probado con lo siguiente (no me funciona)
</td>
<td if ({100-(v221+v222-2)*(100/8)} < 12,5) {
echo '<td style="background-color:green">';
}elseif({100-(v221+v222-2)*(100/8)} < 25 ){
echo '<td style="background-color:yellow">';
}else{
echo '<td style="background-color:red">';
}
</td>
Estaría muy agradecida si me pudierais ayudar!!!
Saludos Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión