Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Indicador mediante php y mysql

Estas en el tema de Indicador mediante php y mysql en el foro de PHP en Foros del Web. Hola amigos, soy nuevo en este foro y tengo un gran problema. Resulta que tengo un formulario HTML que realiza Altas, Bajas y Cambios mediante ...
  #1 (permalink)  
Antiguo 19/01/2016, 15:18
RaulArmando
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Indicador mediante php y mysql

Hola amigos, soy nuevo en este foro y tengo un gran problema. Resulta que tengo un formulario HTML que realiza Altas, Bajas y Cambios mediante PHP y MySQL (esas altas, bajas y cambios se muestran mediante una tabla que está en el mismo sitio del formulario).
Entre otras cosas, el formulario tiene tres campos que son de vital importancia; el primero es: fSalida (fecha de salida - dd/mm/aaaa), el segundo: hSalida (hora de salida) y el tercero Hcita (hor de cita). En el formulario están dentro de un input type="text" y en la base de datos como varchar. El problema radica en que mediante la hora de salida (hSalida) se puedan establecer parámetros para que determinada hora antes (que el usuario establezca), pasando por la hora de salida (hSalida) y llegando a la hora de cita (hcita) se muestre un indicador en pantalla que avise al usuario cuando se acerque cada evento para que sepan cuando sale el autobus. Tal vez no es gran ciencia pero no tengo idea de como jalar las variables correspondientes de Mysql/php y crear el indicador que valla cambiando de color en cada evento que el usuario indique por el formulario. Estoy desesperado amigos. Solo me falta eso.
  #2 (permalink)  
Antiguo 19/01/2016, 16:05
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Indicador mediante php y mysql

Si no he entendido mal....quieres que al rellenar el usuario el formulario vayan apareciendo alertas?? Hay funciones cada vez que tecleas o clicas con el raton en un input te haga búsquedas para mostrar alertas, es eso lo que quieres? Porque no pones los campos fecha y hora con el formato correcto?
  #3 (permalink)  
Antiguo 19/01/2016, 18:06
RaulArmando
Invitado
 
Mensajes: n/a
Puntos:
Información Respuesta: Indicador mediante php y mysql

Cita:
Iniciado por dasapa Ver Mensaje
Si no he entendido mal....quieres que al rellenar el usuario el formulario vayan apareciendo alertas?? Hay funciones cada vez que tecleas o clicas con el raton en un input te haga búsquedas para mostrar alertas, es eso lo que quieres? Porque no pones los campos fecha y hora con el formato correcto?
Cuando el usuario llena el formulario, esto se envía a la BD en mysql, entonces recupero esos datos para hacer consultas, bajas y altas. Cuando hago la consulta cada fila tiene en enlace para eliminar y modificar los datos (mediante un while). Ya cambié los campos de varchar que tenía de fecha y horas a date y time en la consola de mysql. El problema es comó recupero esos datos en php y que cada registro que se hace al igual que los enlaces modificar y eliminar, pueda mostrar un color en la celda cada que se vallan cumpliendo los parámetros de hora que pongo en el formulario. Espero no sea muy enredado. S i se necesita puedo poner el código.
  #4 (permalink)  
Antiguo 20/01/2016, 23:34
 
Fecha de Ingreso: julio-2011
Ubicación: Los Rios
Mensajes: 145
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: Indicador mediante php y mysql

Bueno se me ocurre que crees clases que te den los fondos de la celda que deseas. algo como:
Código CSS:
Ver original
  1. .verde {
  2.     background-color:#090;
  3. }
  4. .rojo{
  5.     background-color:#F00;
  6. }
  7. .amarillo{
  8.     background-color:#FF0;
  9. }
Luego de esto solo deberas comparar y asignar tu clase:

Código PHP:
Ver original
  1. $hcita= strtotime($consulta['Hsalida']);
  2. $hsalida = strtotime($consulta['Hcita']);
  3. $hactual=date("H:i");
  4.  
  5. if( $hactual > $hcita ) {
  6.     $clase="amarillo";
  7.     if( $hactual > $hsalida ) {
  8.           $clase="rojo";
  9. } else {
  10.     $clase="verde";
  11. }
Ahora lo colocas en la celda que deseas:

Código HTML:
Ver original
  1. <td class="<?php echo $clase?>">El mensaje</td>
Y creo que estará listo
__________________
___________________________
Si te ayudo mi respuesta dale al +1

Última edición por juancaalbarracin; 20/01/2016 a las 23:35 Razón: Olvide el formato de etiquetas jaja
  #5 (permalink)  
Antiguo 21/01/2016, 19:45
RaulArmando
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Indicador mediante php y mysql

Gracias juancaalbarracin. Voy a probar el código y cuanto antes te diré como me fue.
  #6 (permalink)  
Antiguo 25/01/2016, 16:03
RaulArmando
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Indicador mediante php y mysql

Cita:
Iniciado por juancaalbarracin Ver Mensaje
Bueno se me ocurre que crees clases que te den los fondos de la celda que deseas. algo como:
Código CSS:
Ver original
  1. .verde {
  2.     background-color:#090;
  3. }
  4. .rojo{
  5.     background-color:#F00;
  6. }
  7. .amarillo{
  8.     background-color:#FF0;
  9. }
Luego de esto solo deberas comparar y asignar tu clase:

Código PHP:
Ver original
  1. $hcita= strtotime($consulta['Hsalida']);
  2. $hsalida = strtotime($consulta['Hcita']);
  3. $hactual=date("H:i");
  4.  
  5. if( $hactual > $hcita ) {
  6.     $clase="amarillo";
  7.     if( $hactual > $hsalida ) {
  8.           $clase="rojo";
  9. } else {
  10.     $clase="verde";
  11. }
Ahora lo colocas en la celda que deseas:

Código HTML:
Ver original
  1. <td class="<?php echo $clase?>">El mensaje</td>
Y creo que estará listo
Sigo sin poder hacer que cambie de color. No tengo idea si es por el strtotime porque se pone de color verde, en el else.

<!DOCTYPE html>
<head>
<title>Vista</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
include 'conexion.php';
$server = "localhost";
$user = "root";
$pass = "";
$bd = "bus";
$conexion = mysqli_connect($server, $user, $pass, $bd) or die ("Error en la conexión");

//CÓDIGO PARA ORDENAR LA TABLA DE FORMA DESCENDENTE
$consulta = mysqli_query($conexion, "SELECT * from datos ORDER BY id DESC") or die("Error al consultar");

echo "<table border=1px>";
echo "<th>REGISTRO ID</th> <th>NOMBRE DEL CODUCTOR</th> <th>N. AUTOBUS</th> <th>ORIGEN</th> <th>DESTINO</th> <th>CLIENTE</th> <th>FECHA DE SALIDA</th> <th>HORA DE SALIDA</th> <th>HORA DE CITA</th> <th>EVENTO</th>";

//WHILE QUE PERMITE MOSTRAR LAS CONSULTAS UNA TRAS OTRA
while($arreglo = mysqli_fetch_array($consulta))
{
echo "<tr>";
echo "<td>".$arreglo['id']."</td>";
echo "<td>".$arreglo['nombre']."</td>";
echo "<td>".$arreglo['autobus']."</td>";
echo "<td>".$arreglo['origen']."</td>";
echo "<td>".$arreglo['destino']."</td>";
echo "<td>".$arreglo['cliente']."</td>";
echo "<td>".$arreglo['fSalida']."</td>";
echo "<td>".$arreglo['hSalida']."</td>";
echo "<td>".$arreglo['hCita']."</td>";

//VARIABLES PARA LA HORA
$hCita = strtotime($arreglo['hSalida']);
$hSalida = strtotime($arreglo['hSalida']);
$hActual = date("H:i");

//ESTE ES EL CÓDIGO QUE ME DIERON DE EJEMPLO
if($hActual < $hCita){
$clase = "amarillo";
if($hActual > $hCita){
$clase = "rojo";
}else{
$clase = "verde";
}
}

//Este if ayuda a mostrar la bandera en caso de que en el radiobutton se seleccione la opción de "Prioritario".
if($arreglo['opcion'] == ('Prioritario')){
echo "<td class='$clase'>" .$arreglo['opcion']. "<img src='flag.png'>" . "</td>";
}//IF
else{
echo "<td class='$clase'>" .$arreglo['opcion'] . "</td>";
}//ELSE
echo "</tr>";

//HEADER PARA ESTAR REFRESCANDO LAS CONSULTAS
header('refresh:3; url=vista.php');
}//WHILE

mysqli_close($conexion);
echo "</table>";
?>
<br><input name="button" type="button" onclick="window.close();" value="Cerrar" />
</body>
</html>
  #7 (permalink)  
Antiguo 26/01/2016, 19:19
 
Fecha de Ingreso: julio-2011
Ubicación: Los Rios
Mensajes: 145
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: Indicador mediante php y mysql

Dos pequeños cambios:
1.- tomar la hora como
Código PHP:
Ver original
  1. $hActual = strtotime(date("H:i"));

La seccion d e condiciones deberas cambiar a:

Código PHP:
Ver original
  1. if($hActual < $hCita){
  2.     $clase = "verde";
  3. }else{
  4.     if($hActual > $hSalida){
  5.         $clase = "rojo";
  6.     }else{
  7.         $clase = "amarillo";
  8.     }
  9. }

y listo
__________________
___________________________
Si te ayudo mi respuesta dale al +1
  #8 (permalink)  
Antiguo 30/01/2016, 14:21
RaulArmando
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Indicador mediante php y mysql

Ya solucione el problema que tenía amigos. Comparto el código, tal vez le sea util a alguien.
Código PHP:
Ver original
  1. //obtiene la hora actual
  2.        $hActual = date("H:i:s");
  3.        //quita los : para dejar el valor de la hora entero
  4.        $rhActual = explode(':', $hActual);
  5.  
  6.        //accede a la propuedad hora minuto y segundo por arreglo
  7.        $actualTotal =  $rhActual[0] . $rhActual[1] . $rhActual[2];
  8.  
  9.        //echo "hora actual es " . $actualTotal;
  10.  
  11.         //valor de la hora de salida de la base; e igual quita los puntos : de la hora para un valor entero
  12.        $hSalida = $arreglo['hSalida'];
  13.  
  14.        //igual quita los puntos : de la hora para un valor entero
  15.        $salidaH = explode(':', $hSalida);
  16.  
  17.        $horaSalida =  $salidaH[0] . $salidaH[1] . $salidaH[2];
  18.  
  19.        //echo "hora de salida " . $horaSalida;
  20.  
  21.        // se repite el proceso
  22.  
  23.        $hCita = $arreglo['hCita'];
  24.  
  25.        $citaHora = explode(':', $hCita);
  26.  
  27.        $citaH =  $citaHora[0] . $citaHora[1] . $citaHora[2];
  28.  
  29.        //$validar = $arreglo['validar'];
  30.    
  31.        //CÓDIGO DE PRUEBA PARA EL INDICADOR
  32.        if($actualTotal < $horaSalida){
  33.            $clase = 'amarillo';
  34.        }else if($actualTotal > $horaSalida && $actualTotal < $citaH){
  35.            $clase = 'rojo';
  36.        }else if($actualTotal > $horaSalida && $actualTotal > $citaH){
  37.            $clase = 'gris';
  38.        }else if($actualTotal > $horaSalida && $actualTotal > $citaH){
  39.            $clase = 'rojo';
  40.        }

Etiquetas: date, time
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:23.