Foros del Web » Programando para Internet » PHP »

Capturar y validar fecha

Estas en el tema de Capturar y validar fecha en el foro de PHP en Foros del Web. Buenos dias, agradezco de antemano su respuesta y su tiempo.... Tengo un formulario que solita una fecha y la guarda en una tabla mysql, actualmente ...
  #1 (permalink)  
Antiguo 26/03/2008, 12:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Capturar y validar fecha

Buenos dias, agradezco de antemano su respuesta y su tiempo....

Tengo un formulario que solita una fecha y la guarda en una tabla mysql, actualmente el usuario digita 20080325 me gustaria que el usuario pudiera ingresar la fecha 25 03 2008 ó 25 mar 2008 ó 25/03/2008. Siempre debe ser un dato homogeneo pues con estas fechas debo hacer calculos asi que el campo no puede ser texto.

He visto en esta pagina que piden el dia en un campo en otro el mes y en otro el año, me gustaria hacer lo mismo (pienso que se deber sumar una cadena algo como dia.mes.año).

He estado investigando compre 1 libro de php y otro de dreamweaver con php pero encuentro como hacerlo.

Gracias
  #2 (permalink)  
Antiguo 26/03/2008, 12:58
Avatar de ranceis  
Fecha de Ingreso: septiembre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Capturar y validar fecha

Te dejo un codigo que hice, espero y sea lo que buscas.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
$fechaactual=date("d/m/Y");
$dia=$_POST['dia'];
$mes=$_POST['mes'];

$diaactual=substr($fechaactual,0,2);
$mesactual=substr($fechaactual,3,2);
$anioactual=substr($fechaactual,6,4);

if (isset ($_POST['enviar'])){

if(eregi("^[[:digit:]]{0,2}$", $dia) ){
$d=true;
$Dia_=$dia;
}else{
//$dia="";
$Dia_=$diaactual;
}


if(eregi("^[[:digit:]]{0,2}$", $mes) ){
//$efecha=true;
$m=true;
$Mes_=$mes;
$Mm=$mesactual+1;
}else{
//$mes="";
$Mes_=$mesactual;
}


if($mes==$Mm){
$m1=true;
}

if($mes==$mesactual){
$ma=true;
if($ma==true){

if($dia>=$diaactual){
$m1=true;
}

}

}

if ($m1==true){
if(@checkdate($mes,$dia,$anioactual)){ //checa que la fecha sea una valida.
$formato=true;
$fechainicioP=$dia."-".$mes."-".$anioactual;
$fechainiciopub=$anioactual."-".$mes."-".$dia;


//$fechaconclusion=$dia+$DuracionVentaart;
//echo $fechaconclusion;

}else{
$efecha=true;
}

}else{
$efecha=true;
}
echo $efecha;

}
//////////////////////////////////

?>
<form id="form1" name="form1" method="post" action="">
<table width="557" border="0">
<tr>
<td><strong>*&nbsp;Fecha &nbsp;</strong></td>
<td><label for="select">Dia
<input name="dia" type="text" id="dia" size="1" value="<? echo $Dia_; ?>" maxlength="2" />
Mes
<input name="mes" type="text" id="mes" size="1" value="<? echo $Mes_; ?>" maxlength="2" />
a&ntilde;o
<input name="anio" id="anio" readonly="readonly" value="<? echo $anioactual; ?>" size="2" maxlength="4" />
<?
if ($efecha==true){
echo"<font color=\"#f0000\" size=\"1\">favor de introducir una fecha valida </font>";


}
?>
</label>

<label>
<input name="enviar" type="submit" id="enviar" value="Enviar" />
</label>

</td>
</tr>
</table>
</form>
</body>
</html>
  #3 (permalink)  
Antiguo 27/03/2008, 10:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Capturar y validar fecha

Gracias ranceis, por su respuesta estoy tratando de implantarla en este momento, aunque en una pagina de un banco vi que salia un calendario al dar clic en el link fecha y en ese calendario se podia escoger el año, el mes y el dia...

Estuve buscando y encontré uno pero no me deja cambiar de mas, ni de año, solo me muestra el mes actual.

De casualidad entre su biblioteca de codigo usted lo tendra?

y gracias por su pronta respuesta.
  #4 (permalink)  
Antiguo 27/03/2008, 11:50
Avatar de ranceis  
Fecha de Ingreso: septiembre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Capturar y validar fecha

este se forma con el anio y mes actual, pero puedes retroceder y avanzar. espero y te sirva.

<html>
<head>
<title>Calendario</title>
<?
$anoInicial = '1900';
$anoFinal = '2100';
$funcionTratarFecha = 'document.location = "?dia="+dia+"&mes="+mes+"&ano="+ano;';
?><script>
function tratarFecha(dia,mes,ano){
<?=$funcionTratarFecha?>
}
</script>
<style>
.m1 {
font-family:MS Sans Serif;
font-size:8pt
}
a {
text-decoration:none;
color:#000000;
}
</style>
</head>
<body>
<form><table border="0" cellpadding="5" cellspacing="0" bgcolor="#D4D0C8">
<tr>
<td width="100%">
<?
$fecha = getdate(time());
if(isset($_GET["dia"]))$dia = $_GET["dia"];
else $dia = $fecha['mday'];
if(isset($_GET["mes"]))$mes = $_GET["mes"];
else $mes = $fecha['mon'];
if(isset($_GET["ano"]))$ano = $_GET["ano"];
else $ano = $fecha['year'];
$fecha = mktime(0,0,0,$mes,$dia,$ano);
$fechaInicioMes = mktime(0,0,0,$mes,1,$ano);
$fechaInicioMes = date("w",$fechaInicioMes);
?>
<select size="1" name="mes" class="m1" onChange="document.location = '?dia=<?=$dia?>&mes=' + document.forms[0].mes.value + '&ano=<?=$ano?>';">
<?
$meses = Array ('enero','febrero','marzo','abril','mayo','junio', 'julio','agosto','septiembre','octubre','noviembre ','diciembre');
for($i = 1; $i <= 12; $i++){
echo ' <option ';
if($mes == $i)echo 'selected ';
echo 'value="'.$i.'">'.$meses[$i-1]."\n";
}
?>
</select>&nbsp;&nbsp;&nbsp;<select size="1" name="ano" class="m1" onChange="document.location = '?dia=<?=$dia?>&mes=<?=$mes?>&ano=' + document.forms[0].ano.value;">
<?
for ($i = $anoInicial; $i <= $anoFinal; $i++){
echo ' <option ';
if($ano == $i)echo 'selected ';
echo 'value="'.$i.'">'.$i."\n";
}
?>
</select><br>
<font size="1">&nbsp;</font><table border="0" cellpadding="2" cellspacing="0" width="100%" class="m1" bgcolor="#FFFFFF" height="100%">
<?
$diasSem = Array ('L','M','M','J','V','S','D');
$ultimoDia = date('t',$fecha);
$numMes = 0;
for ($fila = 0; $fila < 7; $fila++){
echo " <tr>\n";
for ($coln = 0; $coln < 7; $coln++){
$posicion = Array (1,2,3,4,5,6,0);
echo ' <td width="14%" height="19"';
if($fila == 0)echo ' bgcolor="#808080"';
if($dia-1 == $numMes)echo ' bgcolor="#0A246A"';
echo " align=\"center\">\n";
echo ' ';
if($fila == 0)echo '<font color="#D4D0C8">'.$diasSem[$coln];
elseif(($numMes && $numMes < $ultimoDia) || (!$numMes && $posicion[$coln] == $fechaInicioMes)){
echo '<a href="#" onclick="tratarFecha('.(++$numMes).','.$mes.','.$a no.')">';
if($dia == $numMes)echo '<font color="#FFFFFF">';
echo ($numMes).'</a>';
}
echo "</td>\n";
}
echo " </tr>\n";
}
?>
</table>
</td>
</tr>
</table></form>
</body>
</html>
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:01.