Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Validacion de Horas en un formulario (http://www.forosdelweb.com/f18/validacion-horas-formulario-343934/)

gonzalezmfrank 22/10/2005 09:46

Validacion de Horas en un formulario
 
Estimados....

Estoy realizando un formulario donde se piden 2 horas y estas las debo guardar en una base de datos mysql..... lo que necesito saber es si existe una funcion en php que valide de alguna forma el formulario y si existe una mascara donde se indique si es pm o am.....

ojo. con respecto a lo ultimo debe ser de fecha local.... por cuanto no debo utilizar javascript

mil gracias.

Frank

jam1138 23/10/2005 06:35

Cita:

existe una funcion en php que valide de alguna forma el formulario
¿validar en qué sentido?.
Hayarás muchos temas de validación de formularios si buscas en el foro. Lo común es verificar que ciertos datos hayas sido llenados, para ello simplemente te vales de la función empty():
Código PHP:

if(empty($_POST['campo'])) {
    echo 
"El campo no fue llenado";
} else {
    echo 
"Todo Ok!";
} 

Cita:

existe una mascara donde se indique si es pm o am
... ¿cómo es que recibes el dato?, ¿en qué formato?... porque entiendo esa "máscara" la quieres aplicar a el dato recibido ¿no?.

De ser así no hay forma de saberlo más que trabajes en un formato de 24 hrs. Ve que para PHP solo recibes una cadena y, debido a la naturaleza del dato (que lo inserta el usuario) no "representa mayor cosa". Así que "2:00" puede ser tanto AM como PM, en cambio manejando "14:00" tú ya podrás saber que se "refiere a PM".... ¿ó es que acaso dicho dato sí tiene alguna relación con el horario de servidor??; vele hechando un ojo a la función date() en ese caso.

Saludos! :adios:

gonzalezmfrank 23/10/2005 07:06

jam

realmente no me expresé adecuadamente..... lo que necesito es un script tipo digital, donde se seleccione una hora desde - hasta, y que se valide que la segunda no sea menor a la primera, se puede hacer con <select> pero preferiria que el select de la hora final solo deslieguehoras posteriores a las seleccionadas en el <select> de la hora inicial

Conoces de alguna rutina que haga esto ?

Gracias

Frank

gonzalezmfrank 24/10/2005 06:05

Resolví parcialmente con la class datetimeclass.inc

include("datetimeclass.inc");
$timeinic = new TIMEINIC();
$timefina = new TIMEFINA();

$timeinic->set_datetime_byglobal("HTTP_POST_VARS");
$timefina->set_datetime_byglobal("HTTP_POST_VARS");

y en el select

<tr>
<td width='35%'><font color='#006633'><b>»</b></font> Hora de Salida : </td><td>";
echo $timeinic->get_select_hours(1, 12, "hora")."<b>:</b>";
echo $timeinic->get_select_minutes(1, "min")."<b>:</b>";
echo $timeinic->get_select_ampm();

echo "</td>
</tr>
<tr>
<td width='35%'><font color='#006633'><b>»</b></font> Hora de Llegada : </td><td>";
echo $timefina->get_select_hours(1, 12, "hora")."<b>:</b>";
echo $timefina->get_select_minutes(1, "min")."<b>:</b>";
echo $timefina->get_select_ampm();

echo "</td>
</tr>

dentro de datetimeclass.inc defini timeinic y timefina y en current_names entre una y otra le cambié el nombre a las variables del array

Solo queda hacer la comparacion de las horas para que la segunda sea posterior a la inicial

Saludos y gracias,

Frank

jam1138 24/10/2005 06:16

Cita:

Resolví parcialmente con la class datetimeclass.inc
Podrías decir dónde hubicar dicha clase por si se ofrece...

¿Hasta qué punto tienes?, ¿solo lo de la impresión de los listbox?, ¿cómo se realiza??... sería bueno igual un enlace para poder verlo y partir de ahí mismo.

Paz! :adios:

gonzalezmfrank 24/10/2005 07:09

Hola....

La puedes conseguir en .....http://www.phpclasses.org/browse/package/798.html

tiene dos ejemplos.... la puedes descargar y probarla

Lo que estoy viendo es... una vez grabados los valores en un BD como manipularlos... es decir... asignar el valor de las horas a una variable y tranferirla a las variables de la clase para poder re-editarla en un form

saludos....

Frank

gonzalezmfrank 24/10/2005 07:42

Con este class la mejor forma es redefinir las variables

include("datetimeclass.inc");

$datetimei = new DATETIME();
$datetimei->set_timename("h_inic", "m_inic", "s_inic","p_inic");
$datetimei->set_datetime_byglobal("HTTP_POST_VARS");

$datetimef = new DATETIME();
$datetimef->set_timename("h_fin", "m_fin", "s_fin","p_fin");
$datetimef->set_datetime_byglobal("HTTP_POST_VARS");

para poder hacer en el form

<form name="testdate" method="post" action="example.phtml">
<p><b>test form:</b>
<p>
<?

echo $datetimei->get_select_hours(1, 12, "hora")."<b>:</b>";
echo $datetimei->get_select_minutes(1, "min")."<b>:</b>";
echo $datetimei->get_select_ampm();
echo '<br><br>';

echo $datetimef->get_select_hours(1, 12, "hora")."<b>:</b>";
echo $datetimef->get_select_minutes(1, "min")."<b>:</b>";
echo $datetimef->get_select_ampm();
echo '<br><br>';

echo "<b>Usted ingreso fecha inicial----> ".$datetimei->get_time_entered();
echo '<br><br>';
echo "<b>Usted ingreso fecha final----> ".$datetimef->get_time_entered();

?>
<br><br>
<input type="submit" value="Let's GO" name="go">
</form>

frank

gonzalezmfrank 24/10/2005 08:18

para grabar la variable a una base de dato mysql se debe definir la variable como time()

y se graba desde

$t_ini=$timeinic->get_time_entered();
$t_fin=$timefina->get_time_entered();

mysql_query("INSERT INTO BD (fecha_inicio.fecha_fin) values ('$t_ini','$t_fin')");

y listo.....

Si se quiere actualizar el dato utilizando la clase se debe, en primera nstancia leer la base de datos y asignar la variable leida a los campos de la funcion set_date_bycomponents .... así

$resp = mysql_query("SELECT * FROM BD where 'condicion'");
$datos = mysql_fetch_array($resp);

$f_ini = explode(":",$datos['sal_time']);
$f_fin = explode(":",$datos['des_time']);
$timeinic->set_datetime_bycomponents('','','',$f_ini[0],$f_ini[1],'00','');
$timefina->set_datetime_bycomponents('','','',$f_fin[0],$f_fin[1],'00','');

y luego se utiliza el form

Saludos...

Frank :arriba:

gonzalezmfrank 25/10/2005 17:48

jam.... este es el topico que te mencione

saludos.

frank


La zona horaria es GMT -6. Ahora son las 07:26.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.