Foros del Web » Programando para Internet » PHP »

Validacion de Horas en un formulario

Estas en el tema de Validacion de Horas en un formulario en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/10/2005, 10:46
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
Busqueda 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
  #2 (permalink)  
Antiguo 23/10/2005, 07:35
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
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!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 23/10/2005, 08:06
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
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
  #4 (permalink)  
Antiguo 24/10/2005, 07:05
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 24/10/2005, 07:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
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!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 24/10/2005, 08:09
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
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
  #7 (permalink)  
Antiguo 24/10/2005, 08:42
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
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
  #8 (permalink)  
Antiguo 24/10/2005, 09:18
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
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
  #9 (permalink)  
Antiguo 25/10/2005, 18:48
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
jam.... este es el topico que te mencione

saludos.

frank
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 12:08.