PHP - Validar Date

   
Vista:

Validar Date

Publicado por Daniel (89 intervenciones) el 06/03/2015 14:10:33
Buenos dias otra vez yo por aca, esta vez es para algo un poco mas distinto ya le estoy dando mis detalles finales a mipequeña apliacion, ahora lo que deseo es saber como puedo hacer para validar un campo type date pero no con required porque el campo nunca estara vacio, la idea es que me pueda validad si la fecha que me esta mostrando es menos a la fecha de hoy que me salga el mensaje o me valide que debe actualziar la fecha antes de continuar, alguien me puede ayudar con esa parte? Se lo agradeceria mucho
De ante mano muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de txema

Validar Date

Publicado por txema (11 intervenciones) el 06/03/2015 20:12:46
Hola Daniel:

Por la sección que publicas entiendo que la comparación quieres hacerla en PHP ( dices que no con required que sería específico de HTML5 ni en javascript)

En PHP puedo configurar la fecha de diferentes formas:
Copio del ejemplo #4 de http://php.net/manual/es/function.date.php#example-2403
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Se asume que hoy es March 10th, 2001, 5:16:18 pm, y que estamos en la
// zona horaria Mountain Standard Time (MST)
 
$hoy = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$hoy = date("m.d.y");                         // 03.10.01
$hoy = date("j, n, Y");                       // 10, 3, 2001
$hoy = date("Ymd");                           // 20010310
$hoy = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$hoy = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$hoy = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$hoy = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$hoy = date("H:i:s");                         // 17:16:18
$hoy = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (el formato DATETIME de MySQL)
?>

De ahí pasamos a la comparación de fechas (ahora la referencia la tienes en http://php.net/manual/es/datetime.diff.php#Hcom114656

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$val1 = '2014-03-18 10:34:09.939';
$val2 = '2014-03-18 10:34:09.940';
 
$datetime1 = new DateTime($val1);
$datetime2 = new DateTime($val2);
echo "<pre>";
var_dump($datetime1->diff($datetime2));
 
if($datetime1 > $datetime2)
  echo "1 es mayor";
else
  echo "2 es mayor";
?>

Creo que esto soluciona tu consulta.

P,D.: En internet cometemos muchos errores y horrores (ortográficos, erratas o conceptuales). Las cosas no son más o menos distintas o diferentes sino simplemente distintas o diferentes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Validar Date

Publicado por Daniel (89 intervenciones) el 06/03/2015 21:45:23
y como seria con javascript? es que mira la verdad la idea es optimisar y no se de que manera sea mejor y bueno que no necesite tanto codigo. Aclaro no porque me de pereza el codigo , antes me encanta , es porque eso haria que no se vuelva tan lenta ya tengo varios procesos y hacen que la aplicacion se vuelva un poco lenta.
Una pregunta siempre hay que decodificar por decirlo de alguna manera la fecha?
es que veo que es mucho trabajo porque no siempre mente decir si es < o > o == sin necesidad de todo ese proceso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Validar Date

Publicado por txema (11 intervenciones) el 06/03/2015 22:28:15
Me remito a un viejo tema publicado en 2007 en esta misma web:
http://www.lawebdelprogramador.com/foros/JavaScript/849133-Comparar-fechas.html#i851006

Te recomiendo leas todo el tema (planteamiento y soluciones)

Por otra parte, te comento que de lo que expuse en PHP, de la primera serie solo utilizarías una línea para dar el formato que quieras a tu fecha, y de la segunda solamente la comparación entre una fecha y otra.

Por otra parte, te comento que en Javascript trabajas con la fecha del usuario mientras que en PHP es la fecha universal. De cualquier modo estamos hablando de unos pocos (muy pocos) milisegundos. Es cuestión de evaluar.

Si necesitas más ayuda es cuestión de ver tu código y dónde tienes dificultades, ya que ignoro el formato que das a la fecha y los nombres de las variables que estás utilizando.

Nos cuentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validar Date

Publicado por Daniel (89 intervenciones) el 06/03/2015 22:50:45
Claro solo dime si necesitas todo el proyecto imagenes pantallazos del codigo por mi no hay ningun problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Validar Date

Publicado por txema (11 intervenciones) el 06/03/2015 23:22:23
Daniel:

Los foros no están para dar peces sino para enseñar a pescar.

Muestra (en código) como planteas la fecha introducida y la fecha actual. Cómo la comparas. Si te da errores.

No necesito imágenes sino código reducido a tu pregunta y los problemas que te surjan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validar Date

Publicado por Daniel (89 intervenciones) el 09/03/2015 13:30:45
Bueno empezare con explicarle la idea de mis fechas, mi punto es que tengo una tabla que el usuario actualiza cada semana y como ende deseo validar que si no actualiza la fecha inicio como fin que no me permita registrar la actualizacion, entonces como hago una consulta para traer los ultimos datos en unos input date los muestro pero a la misma vez los uso para traer la actualizacion, aclarando de que estan en una tabla y si son varios registros hay que hacerlo en un arreglo, se supone que desde aca antes de dar al boton registrar debe hacer la validacion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
                   $num_fila = 0;//contador que recorre el nombre del usuario consecutivo y telefono en la tabla emergente
                   while($reg= mysql_fetch_array($listado))  {
 
                              $usu=$reg['3'] ;  //Este almacena el consecutivo de la subdependencia o clave primaria de la tabla subdependencia de la base de datos     
                                      ?>
 
                              <tr id="valida">
                              <td hidden><input type="hidden" name="n" id="n" size="1" readonly value="<?php echo $num_fila;?>" ></td>
                              <td><?php echo $reg['0']; ?></td>
                              <td><?php echo $reg['1']; ?></td>
                              <?php
                              $sql=mysql_query("SELECT tblusuario.nombre,tblusuario.telefono,tbldisponibles.cons_usuario,tbldisponibles.consecutivo,tbldisponibles.fecha_inicio,tbldisponibles.fecha_fin from tblusuario inner join tbldisponibles on tbldisponibles.cons_usuario=tblusuario.consecutivo where
                              tbldisponibles.cons_subdependencia=$usu");
 
                              while($lis= mysql_fetch_array($sql) ) {
                              $cons_disp=$lis['2'];//Consecutivo del usuario que esta almacenado en la tabla disponibles de la base de datos
                             $conse=$lis['3'];//Consecutivo o clave primaria de la tabla disponibles de la base de datos
                             $fecha_inicio=$lis['4'];// Almacena la fecha inicial que esta almacenada en la tabla dispobibles en la base de datos
                             $fecha_fin=$lis['5'];// Almacena la fecha final que esta almacenada en la tabla dispobibles en la base de datos
                              ?>
                              <td> <input type="text" name="nombre" size="35" id="nombre_<?php echo $num_fila; ?>" onClick="ventana_habilitar(<?php echo $num_fila; ?>)" readonly value="<?php echo $lis['0']; ?>"></td>
 
                              <td> <input type="text" name="telefono" id="telefono_<?php echo $num_fila; ?>" size="35" readonly value="<?php echo $lis['1']; ?>"> </td>
                              <input type="hidden" name="cons_disp[<?php echo $num_fila; ?>]" id="cons_disp_<?php echo $num_fila; ?>" value="<?php echo $cons_disp; ?>">
                             <?php
 
                            } ?>
                              <td> <input type="date"  name="fecha_inicio[]" id="fecha_inicio_<?php echo $num_fila; ?>" value="<?php echo $fecha_inicio; ?>"></td>
                              <?php  ?>
                              <td> <input type="date" name="fecha_fin[]" id="fecha_fin_<?php echo $num_fila; ?>" value="<?php echo $fecha_fin; ?>"></td>
                              <td hidden> </td>
                              <td> <input  type="hidden" name="consecutivo2" value="<?php echo $usu; ?>"></td>
                              <td> <input type="hidden" name="consecutivo[]" value="<?php echo $conse ; ?>"> </td>
                              <td > <input type="hidden" name= "num_fila" value="<?php echo $num_fila; ?>"></td>
             </tr>
 
 
 <?php
 
                $num_fila = $num_fila + 1;
 
 
               }?>
 
 
 
              </tbody>
 
 
            </table>  </center>
            <br>
 
 				<center><input type="submit" name="registrar" onclick="valida()" value="Registrar"  style='width:160px; height:50px' > </center>
            <center><h3><a href="ventana.php" onclick="salir()">Salir </a></h3></center>
 
        	 </form>
</body>
</html>
basica mente esta es la parte del codigo en la que deseo trabajar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Validar Date

Publicado por txema (11 intervenciones) el 09/03/2015 19:33:17
Hola Daniel:

Está claro que trabajarás en PHP porque sería lo directo (no javascript).

Sigo sin ver datos que son importantes (ten en cuenta que el formato de fecha es importante).

Supongamos que <?php echo $fecha_inicio; ?> es la que te registra la fecha a comparar y el formato es
1
$hoy = date("Y-m-d H:i:s");  // (el formato DATETIME de MySQL) 2015-03-09 19:30:15

¿Qué debo entender que tiene <?php echo $fecha_fin; ?> ?. Parece que lo recoges como array. ¿Estás guardando todos los registros de actualización?.

Creo que lo que te interesa es la actualización.
Tomemos como fecha a comparar $fecha_inicio
Lo que has de hacer es comparar la fechas:
1
2
3
4
5
6
7
$fecha_inicio = $fecha_inicio; // esta línea sobra porque ya la tienes recogida en el while
$hoy = date("Y-m-d H:i:s");
if($fecha_inicio < $hoy)
  // traigo la actualización
else
  // No hago nada porque la fecha registrada es posterior a la actual. Habría un error en el registro  
?>
Dentro del while te actualizaría todos los registros que entren dentro de la actualización.

Si lo que tienes que comparar es $fecha_inicio y es un array, supongo que tienes que tomar el último valor.

Agradecería me transcribas lo que te muestra un <?php echo $fecha_fin; ?> ( o lo que es lo mismo, tu <input type="date" name="fecha_fin[]" id="fecha_fin_<?php echo $num_fila; ?>" value="<?php echo $fecha_fin; ?>"> ).

Si te fijas en los mensajes anteriores, solamente los estoy adaptando a tu caso. De cualquier modo, te recomiendo que al traer la actualización la vuelvas a registrar en tu base de datos. Presupongo que en fecha_fin, tal vez el dato a comparar).

Si es importante que la actualización sea a registros de fechas superiores a la semana deberíamos sumar siete días al registro a comparar.
Nos cuentas.
Seguiremos en contacto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validar Date

Publicado por Daniel (89 intervenciones) el 09/03/2015 19:44:08
Mira como no se que es lo que deseas mirar aca anexo mi proyecto asi es mas facil lo importante se encuentra en coordinador.php registra.php
Se supone que la validacion se debe llevar a cabo antes de pasar a registra.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Validar Date

Publicado por txema jmrarbulo@gmail.com (11 intervenciones) el 09/03/2015 22:42:59
Hola Daniel:
Te he dejado abierto mi correo (en contra de mis principios) por si quieres contactar directamente. Sería ideal conversarlo por Skype (usuario: jmrarbulo )

Por una parte, no he podido generar la base de datos. Y por otra, no veo lo que quieres actualizar sobre cada usuario.

He revisado tus archivos y las referencias que das. Termino sin ver lo que quieres actualizar, esto es, sin ver dónde y cómo quieres validar la fecha y qué actualizar.

Coméntame.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar