Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/09/2007, 19:41
Avatar de Shiryu_Libra
Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Ingresar fecha con combos en asp.



para agregar una fecha, a mi caso particular utilizo este metodo, a lo mejor pudiera servirte, uso Javascript para crear las fechas, en el sentido de grabacion, puedes utilizar el mismo metodo de El_Metallik ()

los inputs que manejaran tanto los años, meses y dias
Código PHP:
 <th colspan="3">Fecha<script type="text/javascript">document.onload=setTimeout("inicializar()"0000);</script>
                        <select id="years" name="years"></select>
                        <select id="months" name="months" onBlur="poner('id6','years','months',0)" onChange="Cambia(document.getElementById('days'))"></select>
                        <select id="days" name="days" onChange="poner('dates','years','months','days')"></select></th> 
el input oculto donde pondras el orden que requieres de grabacion en la base
Código PHP:
 <th><input id="dates" name="dates" type="hidden" /> 
ahora el script completo, gracias a Derkenuke, que reestructuro el codigo perfectamente

Código PHP:
<script language="JavaScript">
var 
a="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28";
var 
b="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29";
var 
c="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30";
var 
d="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31";
var 
e="Elegir Mes,Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre";
var 
f="Elegir Año,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013";

var 
mydate=new Date();
var 
year=mydate.getFullYear();        // full en vez de normal, el normal está en desuso
var dia=mydate.getDay();
var 
mes=mydate.getMonth();
if (
dia<10){dia="0"+dia;}
if (
mes<10){mes="0"+mes;}
//if (year < 1000){year+=1900;}
    
function addOpt(oCtrliPssTtsVl){
    var 
sOpcion=new Option(sTtsVl);
    
oCtrl.options[iPs]=sOpcion;
    return 
sOpcion;
}

function 
esBisiesto(nAno){
    var 
bRes true;
    
res bRes && (nAno == 0);
    
res bRes && (nAno 100 != 0);
    
res bRes || (nAno 400 == 0);
    return 
bRes;

   function 
inicializar(){
   
/*Este pedazo es para los ciclos
   ele=f.split(",");
   oCtrl=document.getElementById('cicloa');
   while (oCtrl.length) oCtrl.remove(0);
   for (i=0;i<ele.length;i++){var nueva_opcion = addOpt(oCtrl,  i, ele[i], ele[i]);
        if(ele[i]==year){nueva_opcion.selected = true;}}
*/
    //este otro para los demas controles de fecha
    //años
    
ele=f.split(",");
    
oCtrl=document.getElementById('years');
    while (
oCtrl.lengthoCtrl.remove(0);
    for (var 
i=0;i<ele.length;i++){
        var 
nueva_opcion addOpt(oCtrl,  iele[i], ele[i]);
        if(
ele[i]==year){nueva_opcion.selected true;}
    }
    
//meses
    
ele=e.split(",");
    
oCtrl=document.getElementById('months');
    while (
oCtrl.lengthoCtrl.remove(0);
    for (var 
i=0;i<ele.length;i++){
        var 
nueva_opcion addOpt(oCtrl,  iele[i], i);
        if( (
i-1)==mes ){nueva_opcion.selected true;}
    }
    
//dias
    
ele esBisiesto(year) ? a;
    
ele=ele.split(",");
    
oCtrl=document.getElementById('days');
    while (
oCtrl.lengthoCtrl.remove(0);
    for (var 
i=0;i<ele.length;i++){
        var 
nueva_opcion addOpt(oCtrl,  iele[i], ele[i]);
        if(
ele[i]==dia){nueva_opcion.selected true;}
    }
}

function 
Cambia(oCtrl) {
    var 
qmesi=document.getElementById('months').selectedIndex;
    switch (
i) {
        case 
1: case 3:    case 5:    case 7:    case 8:    case 10: case 12qmes=d; break;
        case 
4: case 6:    case 9:    case 11qmes=c; break;
        case 
2qmes=esBisiesto(year)? a; break;
        default: 
qmes=false;
    }
    if( 
qmes ) {
        while (
oCtrl.lengthoCtrl.remove(0);
        
ele=qmes.split(",");
        for(
i=0;i<ele.length;i++) {
           
addOpt(oCtrl,  iele[i], ele[i]);
        }
    }
}
   
function 
poner(a,eta,ete,eto){
ja=document.getElementById(a);
jb=document.getElementById(eta);
jc=document.getElementById(ete);
jd=document.getElementById(eto);
switch(
a){
    case 
"id6":        {
                    if (
jc.value <7)
                        {
ja.value=jb.value+"01";}
                    else{
                        if (
jc.value <13)
                            {
ja.value=jb.value+"02";}
                        }
//                    alert(ja.value);
                    
break;}
    case 
"dates":    {ja.value=jb.value+"-"+jc.value+"-"+jd.value;
//                    alert(ja.value);
                    
break;}
}}
</script> 
ahora el orden lo puedes modificar en la funcion "PONER", mi caso año-mes-dia, espero les sirva a cualquiera que lo mire, cabe mencionar que lo que traerias para validacion seria el input DATES,

suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra