Foros del Web » Programando para Internet » PHP »

Problema con calendario fechas

Estas en el tema de Problema con calendario fechas en el foro de PHP en Foros del Web. Hola, tengo un problema! tengo formularios donde debo introducir fechas. Para hacer mas facil la introduccion de dichos datos en el formulario, he decidido poner ...
  #1 (permalink)  
Antiguo 11/09/2008, 08:03
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Problema con calendario fechas

Hola, tengo un problema! tengo formularios donde debo introducir fechas. Para hacer mas facil la introduccion de dichos datos en el formulario, he decidido poner botones que van a un calendario donde puedo poner las fechas. el problema llega cuando tengo dos fechas para introducir de inicio y fin de un permiso de un empleado por ejemplo.
Cuando pongo como fecha incio por ejemplo 9/9/2008 y fecha fin el 10/9/2008, me dice que la fecha inicio debe ser menor que la fecha de fin(porque antes de eso yo hacia una comprobacion de fechas) y el problema es que las fechas estan bien introducidos, me pregunto si el problema esta en que la fecha es 9 en lugar de 09, por eso quiero saber como puedo solucionar este problema..

gracias un saludo.
  #2 (permalink)  
Antiguo 11/09/2008, 08:14
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 18
Respuesta: Problema con calendario fechas

Hola,

puedes poner el código que estas utilizando que creo saber cual es el problema pero quiero estar seguro antes de decirte cualquier cosa.

Saludos.
  #3 (permalink)  
Antiguo 11/09/2008, 08:19
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Este es el archivo calendario.js 1 PARTE
function bisiesto(a) {
function centuriaNoBisiesta(x) {
return (x % 100 == 0) && (x % 400 > 0)
}
return (a % 4 == 0) && !centuriaNoBisiesta(a);
}

function dias(mes, aa) {
var n_dias = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
incremento = (mes == 1 && bisiesto(aa)) ? 1 : 0;
return n_dias[mes] + incremento;
}

var _dia = ["D", "L", "M", "X", "J", "V", "S", "D"];

var mes = [
"enero",
"febrero",
"marzo",
"abril",
"mayo",
"junio",
"julio",
"agosto",
"septiembre",
"octubre",
"noviembre",
"diciembre"
];

function seleccionaFecha(dd, mm, aa) {
alert("año: " + aa + "\nmes: " + mm + "\ndia: " + dd);
return false;
}

function seleccionaFecha2(e) {
if (document.all) {
dia = event.srcElement.value;
f = event.srcElement.form;
}
else {
dia = e.target.value;
f = e.target.form;
}

// alert(f.innerHTML);

// with (f) seleccionaFecha(dia, mes.value, aaaa.value);
with (f) window[resultado.value](dia, mes.value, aaaa.value);

//alert(f.resultado.getAttribute("value"));

// window[f.resultado.value](dia, f.mes.value, f.aaaa.value)
// seleccionaFecha(dia, f.mes.value, f.aaaa.value);
}

function mostrarDias(aa, mm, f) {
var nFecha = new Date();
aaaaHoy = nFecha.getFullYear();
mesHoy = nFecha.getMonth();
diaHoy = nFecha.getDate();
nFecha.setFullYear(aa);
nFecha.setMonth(--mm);
nFecha.setDate(1);

var empieza = nFecha.getDay();
empieza += (empieza == 0) ? 7 : 0;
var totaldias = dias(mm, aa);
var termina = empieza + totaldias;

diaSemana = nFecha.getDay();
//alert("año: " + aa + "\nmes: " + mm + "\ncomienza: " + _dia[diaSemana] + "\ndias:" + totaldias);
// var fechas = document.getElementById("fechasCalendario");
// var fechas = f.getElementsByTagName("tBody")[0];

fechas = document.getElementById(f).getElementsByTagName("t Body")[0];
with(fechas) {
while(fechas.hasChildNodes()) fechas.removeChild(fechas.firstChild);
style.border = "2px solid gray";
// añadimos la primera fila
fila = document.createElement("tr");
fechas.appendChild(fila);

eldia = 1;
for (var actual = 1; actual < termina; actual ++) {

if ((actual % 7) == 1) {
fila = document.createElement("tr");
fechas.appendChild(fila);
}

if (actual < empieza) fila.appendChild(document.createElement("td"));

else { esHoy = ((eldia == diaHoy) && (mm == mesHoy) && (aa == aaaaHoy));
//if (esHoy) alert("hoy");
var celda = document.createElement("td");
fila.appendChild(celda);
celda.style.textAlign = "center";

var boton = document.createElement("button");
boton.setAttribute("type", "button");
celda.appendChild(boton);
with(boton) {
appendChild(document.createTextNode(eldia));
//type = "button";
value = eldia++;
if (document.all)
attachEvent("onclick", seleccionaFecha2);
else
addEventListener("click", seleccionaFecha2, false);
className = (esHoy) ? "hoy" : (actual % 7 == 0) ? "domingo" : "normal";
}
}
}
}
}

function mesAnterior(e) {


if (document.all) {
f = event.srcElement.form;
}
else {
f = e.target.form;
}
// alert(f.name);
antMes(f.aaaa.value, f.mes.value, f);
}




function mesSiguiente(e) {


if (document.all) {
f = event.srcElement.form;
}
else {
f = e.target.form;
}
// alert(f.name);
sigMes(f.aaaa.value, f.mes.value, f);
}
  #4 (permalink)  
Antiguo 11/09/2008, 08:20
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

2 PARTE:

function aaAnterior(e) {


if (document.all) {
f = event.srcElement.form;
}
else {
f = e.target.form;
}
f.aaaa.value--;
// alert(f.name);
mostrarDias(f.aaaa.value, f.mes.value, f.name);


}


function selMes(e) {
if (document.all) {
f = event.srcElement.form;
}
else {
f = e.target.form;
}
mostrarDias(f.aaaa.value, f.mes.value, f.name);
}

function aaSiguiente(e) {


if (document.all) {
f = event.srcElement.form;
}
else {
f = e.target.form;
}

f.aaaa.value++;
// alert(f.name);
mostrarDias(f.aaaa.value, f.mes.value, f.name);
}



function antMes(aa, mm, f) {
mes = parseInt(mm);
if (--mm == 0) {
mm = 12;
aa--;
f.aaaa.value = aa;
}
//mm--;
f.mes.value = mm;
//alert(aa + "" + mm);
mostrarDias(aa, mm, f.name);
}

function sigMes(aa, mm, f) {
mes = parseInt(mm);
if (++mm == 13) {
mm = 1;
aa++;
f.aaaa.value = aa;
}
//mm--;
f.mes.value = mm;
//alert(aa + "" + mm);
mostrarDias(aa, mm, f.name);
}

function calendario(elmes, aa, el_id, papi, como, resultado) {
//alert(resultado);

var totaldias = dias(elmes, aa);
var empieza = new Date(aa, elmes, 1).getDay();
if (empieza == 0) empieza = 7;
var termina = empieza + totaldias;
var eldia = 1;
var celda = 100 / 7;
var _calendario = document.createElement("form");
_calendario.name = el_id;
////////////////////////////
_calendario.id = el_id;
////////////////////////////
_calendario.action = "";
_calendario.method = "get";
_calendario.enctype = "text/plain";

// campo con el resultado
_control = document.createElement("input");

_control.id = "resultado";
_control.setAttribute("type", "hidden");
_control.setAttribute("name", "resultado");
_control.setAttribute("value", resultado);

_calendario.appendChild(_control);


_tabla = document.createElement("table");
//_tabla.id = el_id;
_tabla.cellPadding = 0;
_tabla.cellSpacing = 0;

_cabeza = document.createElement("tHead");
_cabeza.id = el_id + "_thead";
_cuerpo = document.createElement("tBody");
_tabla.appendChild(_cabeza);
_tabla.appendChild(_cuerpo);
_calendario.appendChild(_tabla);

// estructura creada... creamos la cabecera...
_fila = document.createElement("tr");
_celda = document.createElement("td");
_celda.colSpan = 7;

// Insertamos los controles...
// mes anterior
_control = document.createElement("button");
_control.appendChild(document.createTextNode("<")) ;
_control.className = "flecha";
_control.setAttribute("type", "button");
if (document.all)
_control.attachEvent("onclick", mesAnterior);
else
_control.addEventListener("click", mesAnterior, true);
_celda.appendChild(_control);

// meses
_control = document.createElement("select");
_control.setAttribute("NAME", "mes");
/////////////////////////////////////////////
_control.setAttribute("id", "mes");
/////////////////////////////////////////////

for (var i = 0, total = mes.length; i < total; i ++)
// _control.options[_control.options.length] = new Option(mes[i], (i + 1), elmes == i);
_control.options[_control.options.length] = new Option(mes[i], (i + 1));

if (document.all)
_control.attachEvent("onchange", selMes);
else
_control.addEventListener("change", selMes, true);

_celda.appendChild(_control);
_control.value = elmes + 1;

// mes siguiente
_control = document.createElement("button");
_control.appendChild(document.createTextNode(">")) ;
_control.className = "flecha";
_control.setAttribute("type", "button");
if (document.all)
_control.attachEvent("onclick", mesSiguiente);
else
_control.addEventListener("click", mesSiguiente, true);
_celda.appendChild(_control);

_celda.appendChild(document.createTextNode(" "));

// año anterior
_control = document.createElement("button");
_control.appendChild(document.createTextNode("<")) ;
_control.className = "flecha";
_control.setAttribute("type", "button");
if (document.all)
_control.attachEvent("onclick", aaAnterior);
else
_control.addEventListener("click", aaAnterior, true);
_celda.appendChild(_control);

_control = document.createElement("input");
_control.setAttribute("type", "text");
// _control.setAttribute("name", "aaaa");
// _control.value = aa;
_control.size = 2;
_celda.appendChild(_control);
_control.name = "aaaa";
/////////////////////////////////
_control.id = "aaaa";
/////////////////////////////////
_control.setAttribute("value", aa);
_control.setAttribute("TYPE", "TEXT");


// año siguiente
_control = document.createElement("button");
_control.appendChild(document.createTextNode(">")) ;
_control.className = "flecha";
_control.setAttribute("type", "button");
if (document.all)
_control.attachEvent("onclick", aaSiguiente);
else
_control.addEventListener("click", aaSiguiente, true);
_celda.appendChild(_control);



_fila.appendChild(_celda);
_cabeza.appendChild(_fila);

_fila = document.createElement("tr");

/*
for (var i = 1; i < 8; i ++)
_calendario += "<th class='dia' width=" + celda + "% >" + _dia[i] + "</th>";
*/

for (var i = 1; i < 8; i ++) {
_celda = document.createElement("th");
_celda.className = "dia";
_celda.style.width = (100 / 7) + "%";
_celda.appendChild(document.createTextNode(_dia[i]));
_fila.appendChild(_celda);
}

_cabeza.appendChild(_fila);

_papa = document.getElementById(papi);
if (como || !_papa.hasChildNodes())
_papa.appendChild(_calendario);
else
_papa.insertBefore(_calendario, _papa.firstChild)


//var l = "mostrarDias('" + aa + "', '" + (elmes + 1) + "', '" + el_id + "')";
//alert(l);
mostrarDias(aa, (elmes + 1), el_id);

//setTimeout(l, 100);

}

function calendar (elmes, aa, el_id, resultado) {
var totaldias = dias(elmes, aa);
var empieza = new Date(aa, elmes, 1).getDay();
if (empieza == 0) empieza = 7;
var termina = empieza + totaldias;
var eldia = 1;
var celda = 100 / 7;
var _calendario = "<form name='" + el_id + "' >";

// ponemos el sitio que recogerá el resultado
_calendario += "<input type='hidden' name='resultado' id='resultado' value='" + resultado + "' />\n";

_calendario += "<table cellpadding='0' cellspacing='0' id='" + el_id + "' cols='7' border='0' style='width: 50px' >"
_calendario += "<thead id='" + el_id + "_thead'><tr>";

_calendario += "<th colspan='7'>";

_calendario += "<button type='button' class='flecha' onclick='antMes(aaaa.value, mes.value, this.form)'>&lt;</button>";

_calendario += "<select name='mes' onchange='mostrarDias(aaaa.value, this.value, this.form.name)' >";
for (var i = 0; i < 12; i ++) {
_calendario += "<option value='" + (i + 1) + "'";
_calendario += (i == elmes) ? " selected" : "";
_calendario += " > " + mes[i] + "</option>\n";
}
_calendario += "</select>";


_calendario += "<button type='button' class='flecha' onclick='sigMes(aaaa.value, mes.value, this.form)'>&gt;</button>";

_calendario += "&nbsp;&nbsp;&nbsp;&nbsp;";
_calendario += "<button type='button' class='flecha' onclick='--aaaa.value; mostrarDias(aaaa.value, mes.value, this.form.name)'>&lt;</button>";
_calendario += "<input type='text' size='2' name='aaaa' value='" + aa + "'/>";
_calendario += "<button type='button' class='flecha' onclick='++aaaa.value; mostrarDias(aaaa.value, mes.value, this.form.name)'>&gt;</button>";

_calendario += "</th></tr><tr >";
for (var i = 1; i < 8; i ++)
_calendario += "<th class='dia' width=" + celda + "% >" + _dia[i] + "</th>";

_calendario += "</tr></thead>";



_calendario += "<tbody >";
// contenido del tBody


/*

_calendario += "<tr>";
for (var actual = 1; actual < termina; actual ++) {

if ((actual % 7) == 1) _calendario += "</tr><tr>";
if (actual < empieza) _calendario += "<td></td>";
else {
_calendario += "<td ><button type='button' onclick='seleccionaFecha(this.value, mes.value, aaaa.value)' value='" + eldia + "' class='";
_calendario += (hoymismo == eldia) ? "hoy" : ((actual % 7) == 0) ? "domingo" : "normal";
_calendario += "' >" + eldia++ + "</button></td>";
}
}
_calendario += "</tr>";

*/
_calendario += "</tbody></table></form>";

var llamar = "mostrarDias('" + aa + "', '" + (elmes + 1) + "', " + "'" + el_id + "')";
//alert(llamar);
setTimeout(llamar, 100);

return _calendario;

}

var _hoy = new Date();
  #5 (permalink)  
Antiguo 11/09/2008, 08:20
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

popup.html
<html>
<head>

<link rel=stylesheet type="text/css" href="calendario.css">
<style type="text/css">
html, body, form {
margin: 0;
padding: 0;
}

</style>
<script type="text/javascript" src="calendario.js" ></script>
<script type="text/javascript" >
<!--
var campoDestino;
var formDestino;
function leerDestino() {
url = location.search.substr(1).split("=");
Destino = url[1].split(".");
formDestino = Destino[0];
campoDestino = Destino[1];
}


function seleccionaFecha(dd, mm, aa) {
var volver = dd + "/" + mm + "/" + aa;
if (opener) {
opener.document.forms[formDestino][campoDestino].value = volver;
window.close();
}
else alert("año: " + aa + "\nmes: " + mm + "\ndia: " + dd);
}

window.onload = leerDestino;
-->
</script>
</head>
<!--body onload="leerDestino()"-->
<body>
<script type="text/javascript" >
<!--
_hoy = new Date();
document.writeln(calendar(_hoy.getMonth(), _hoy.getFullYear(), "calendario", "seleccionaFecha"));
//-->
</script>

</body>
</html>
  #6 (permalink)  
Antiguo 11/09/2008, 08:23
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

y este es el principal por ejemplo de asignacionmaquinas
<?php
include('../sesion.php');
include('../conexion.php');
include('../comun.php');
?>
<link rel=stylesheet type="text/css" href="formularios.css">
<?
$link=Conectarse();
if ($enviar){
if($finicio>$ffin){ ?>
<script language="JavaScript">
alert("La fecha de inicio debe ser menor que la fecha de fin");
</script>
<?}
else{
$sql="SELECT id_empleado FROM empleados WHERE id_empleado='".$id_empleado."'";
$resultado=mysql_query($sql);
$filas=mysql_num_rows($resultado);
$finicio=cambiaf_a_mysql($finicio);
$ffin=cambiaf_a_mysql($ffin);
$sql="INSERT INTO emplea_cliente_maquina (id_empleado,id_maquina,id_cliente,f_inicio,
f_fin,observaciones) VALUES
('$id_empleado','$id_maquina','$id_cliente','$fini cio','$ffin',upper('$observaciones'))";
$resultado=mysql_query($sql);
echo mysql_error();?>
<script language="JavaScript">
alert("LA ASIGNACIÓN ENTRE EMPLEADO/MÁQUINA/CLIENTE SE HA REALIZADO CORRECTAMENTE.");
document.location.href='../comienzo.php';
</script>

<?php
}

}

Y DENTRO DEL FORMULARIO EN LSO CAMPOS DE FECHAS TENGO LO SIGUIENTE:

<tr>

<td><span class="Estilo1">Fecha inicio </span></td>
<td width="17%"><input name="finicio" type="text" id="finicio" size="10" maxlength="10" />
<button type="button" onClick="window.open('../calendario/popup.html?destino=empleamaquinacliente.finicio', '_blank', 'width=267,height=167')">
<img src="../imagenes/calen.gif" width="20" height="20">
</button>
</td>
<td width="11%"><span class="Estilo1">Fecha fin </span></td>
<td width="56%"><input name="ffin" type="text" id="ffin" size="10" maxlength="10" />
<button type="button" onClick="window.open('../calendario/popup.html?destino=empleamaquinacliente.ffin', '_blank', 'width=267,height=167')">
<img src="../imagenes/calen.gif" width="20" height="20">
</button>
</td>
</tr>

GRACIAS
  #7 (permalink)  
Antiguo 11/09/2008, 08:38
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 18
Respuesta: Problema con calendario fechas

Creo que debes verificar que esta llegando a la validación que estas haciendo con el if

Código PHP:

if ($enviar)
{
  echo 
$finicio "<br />";
  echo 
$ffin;
exit; 
Saludos
  #8 (permalink)  
Antiguo 11/09/2008, 08:52
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Antes, cuando no tenia el calendario y escribia a mano 01/07/2008 y por ejemplo 11/07/2008 funcionaba bien, ahora el problema me le da al introducir con el calendario 1/7/2008 en lugar de 01/07/2008.
No entiendo tu respuesta, por eso no se que debo cambiar o porque tengo que poner el echo
Gracias.
  #9 (permalink)  
Antiguo 11/09/2008, 08:57
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 18
Respuesta: Problema con calendario fechas

mmmm, tienes razón el lio puede estar en el 0(zero) que pones antes de cada miembro de la fecha.

No hay una forma que con el calendario le des ese formato??
  #10 (permalink)  
Antiguo 11/09/2008, 09:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

No lo se, es que el calendario y las funciones las cogi de una pagina de internet, entonces nose como se ha echo ni encuentro la manera, es lo que quiero saber, como puedo cambiar eso si el numero es menor de 10, meterle un 0 delante para que la comprobacion me la haga bien.
  #11 (permalink)  
Antiguo 11/09/2008, 09:13
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 18
Respuesta: Problema con calendario fechas

hola,

para que te facilites la vida y no busques más te dejo este sitio donde encontrarás un mejor calendario y sin ese popup. Además que da la opción de escoger el més y dia mediante una lista desplegable.

http://www.dynamicdrive.com/dynamici...oncalendar.htm

Un saludo y si tienes alguna duda me cuentas.
  #12 (permalink)  
Antiguo 11/09/2008, 09:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 2
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Hola a todos, me acabo de registrar y no se bien como hacer para empezar un tema sin tener q responder, no importa....lo que quiero saber es si alguna manera de ver mis mensajes enviados y recibidos desde mi celular por la web, gracias a todos, mail [email protected] graciasssssss
  #13 (permalink)  
Antiguo 11/09/2008, 09:44
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Es que a mi lo que me pidieron es mostrar ese formulario en popup y en el que cogi tambien puedes escoger el mes y el año que quieras.
Ese no da el problema de 1 con 01???
gracias
  #14 (permalink)  
Antiguo 11/09/2008, 09:46
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 18
Respuesta: Problema con calendario fechas

no, es más, a ese le puedes dar el formato que mejor te convenga..
  #15 (permalink)  
Antiguo 11/09/2008, 09:53
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Pero es que no tengo tiempo para cambiar todo ahora, necesit algo rapido! solucion a eso si pudiera ser para cambiar solamente eso!
  #16 (permalink)  
Antiguo 15/09/2008, 06:21
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Necesito ayuda! Aver is alguien me puede resolver la duda de arriba! Graciasssssssss
  #17 (permalink)  
Antiguo 16/09/2008, 09:58
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con calendario fechas

Por favor si alguien pudiera contestarme! es lo unico que me keda para temrinar la aplicación de mi proyecto fin de carrera!!!!!

Gracias de antemano!
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 08:40.