Foros del Web » Programando para Internet » PHP »

PHP OO consulta rango de fecha con funcion de calendario

Estas en el tema de consulta rango de fecha con funcion de calendario en el foro de PHP en Foros del Web. Hola amigos del foro, nuevamente acudo a ustedes como aficionado que soy para ver si pueden ayudarme con esto: En un buscador quiero agregar un ...
  #1 (permalink)  
Antiguo 05/02/2013, 21:39
Avatar de elmoikano  
Fecha de Ingreso: enero-2013
Mensajes: 50
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta consulta rango de fecha con funcion de calendario

Hola amigos del foro, nuevamente acudo a ustedes como aficionado que soy para ver si pueden ayudarme con esto:

En un buscador quiero agregar un campo que busque por rango de fechas, y me cuente el numero de registros devueltos en la consulta, el detalle es que al hacer el form con un input type="text", tengo resultados, pero agregue una calendario que obtuve de un generador de codigos, espero puedan ayudarme.
__________________
Bibliotecario pero morboso de las Tecnologías....
  #2 (permalink)  
Antiguo 05/02/2013, 21:48
Avatar de elmoikano  
Fecha de Ingreso: enero-2013
Mensajes: 50
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: consulta rango de fecha con funcion de calendario

El script1 del calendario es este:
[HTML]
<script language="javascript">
var fc_ie = false;
if (document.all) { fc_ie = true; }

var calendars = Array();
var fc_months = Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var fc_openCal;

var fc_calCount = 0;

function getCalendar(fieldId) {
return calendars[fieldId];
}

function displayCalendarFor(fieldId) {
var formElement = fc_getObj(fieldId);
displayCalendar(formElement);
}

function displayCalendar(formElement) {
if (!formElement.id) {
formElement.id = fc_calCount++;
}
var cal = calendars[formElement.id];
if (typeof(cal) == 'undefined') {
cal = new floobleCalendar();
cal.setElement(formElement);
calendars[formElement.id] = cal;
}
if (cal.shown) {
cal.hide();
} else {
cal.show();
}
}

function display3FieldCalendar(me, de, ye) {
if (!me.id) { me.id = fc_calCount++; }
if (!de.id) { de.id = fc_calCount++; }
if (!ye.id) { ye.id = fc_calCount++; }
var id = me.id + '-' + de.id + '-' + ye.id;
var cal = calendars[id];
if (typeof(cal) == 'undefined') {
cal = new floobleCalendar();
cal.setElements(me, de, ye);
calendars[id] = cal;
}
if (cal.shown) {
cal.hide();
} else {
cal.show();
}
}

//--Class Stuff--------------------------------------------------
function floobleCalendar() {
// Define Methods
this.setElement = fc_setElement;
this.setElements = fc_setElements;
this.parseDate = fc_parseDate;
this.generateHTML = fc_generateHTML;
this.show = fc_show;
this.hide = fc_hide;
this.moveMonth = fc_moveMonth;
this.setDate = fc_setDate;
this.formatDate = fc_formatDate;
this.setDateFields = fc_setDateFields;
this.parseDateFields = fc_parseDateFields;

this.shown = false;
}

function fc_setElement(formElement) {
this.element = formElement;
this.format = this.element.title;
this.value = this.element.value;
this.id = this.element.id;
this.mode = 1;
}

function fc_setElements(monthElement, dayElement, yearElement) {
this.mElement = monthElement;
this.dElement = dayElement;
this.yElement = yearElement;
this.id = this.mElement.id + '-' + this.dElement.id + '-' + this.yElement.id;
this.element = this.mElement;
if (fc_absoluteOffsetLeft(this.dElement) < fc_absoluteOffsetLeft(this.element)) {
this.element = this.dElement;
}
if (fc_absoluteOffsetLeft(this.yElement) < fc_absoluteOffsetLeft(this.element)) {
this.element = this.yElement;
}
if (fc_absoluteOffsetTop(this.mElement) > fc_absoluteOffsetTop(this.element)) {
this.element = this.mElement;
}
if (fc_absoluteOffsetTop(this.dElement) > fc_absoluteOffsetTop(this.element)) {
this.element = this.dElement;
}
if (fc_absoluteOffsetTop(this.yElement) > fc_absoluteOffsetTop(this.element)) {
this.element = this.yElement;
}

this.mode = 2;
}

function fc_parseDate() {
if (this.element.value) {
this.date = new Date();
var out = '';
var token = '';
var lastCh, ch;
var start = 0;
lastCh = this.format.substring(0, 1);
for (i = 0; i < this.format.length; i++) {
ch = this.format.substring(i, i+1);
if (ch == lastCh) {
token += ch;
} else {
fc_parseToken(this.date, token, this.element.value, start);
start += token.length;
token = ch;
}
lastCh = ch;
}
fc_parseToken(this.date, token, this.element.value, start);
} else {
this.date = new Date();
}
if ('' + this.date.getMonth() == 'NaN') {
this.date = new Date();
}
}

function fc_parseDateFields() {
this.date = new Date();
if (this.mElement.value) this.date.setMonth(fc_getFieldValue(this.mElement) - 1);
if (this.dElement.value) this.date.setDate(fc_getFieldValue(this.dElement)) ;
if (this.yElement.value) this.date.setFullYear(fc_getFieldValue(this.yEleme nt));
if ('' + this.date.getMonth() == 'NaN') {
this.date = new Date();
}
}

function fc_setDate(d, m, y) {
this.date.setYear(y);
this.date.setMonth(m);
this.date.setDate(d);
if (this.mode == 1) {
this.element.value = this.formatDate();
} else {
this.setDateFields();
}
this.hide();
}

function fc_setDateFields() {
fc_setFieldValue(this.mElement, fc_zeroPad(this.date.getMonth() + 1));
fc_setFieldValue(this.dElement, fc_zeroPad(this.date.getDate()));
fc_setFieldValue(this.yElement, this.date.getFullYear());
}

function fc_formatDate() {
var out = '';
var token = '';
var lastCh, ch;
lastCh = this.format.substring(0, 1);
for (i = 0; i < this.format.length; i++) {
ch = this.format.substring(i, i+1);
if (ch == lastCh) {
token += ch;
} else {
out += fc_formatToken(this.date, token);
token = ch;
}
lastCh = ch;
}
out += fc_formatToken(this.date, token);
return out;
}

function fc_show() {
if (typeof(fc_openCal) != 'undefined') { fc_openCal.hide(); }

if (this.mode == 1) {
this.parseDate();
} else {
this.parseDateFields();
}
this.showDate = new Date(this.date.getTime());
if (typeof(this.div) != 'undefined') {
this.div.innerHTML = this.generateHTML();
}

if (typeof(this.div) == 'undefined') {
this.div = document.createElement('DIV');
this.div.style.position = 'absolute';
this.div.style.display = 'none';
this.div.className = 'fc_main';
this.div.innerHTML = this.generateHTML();
this.div.style.left = fc_absoluteOffsetLeft(this.element);
this.div.style.top = fc_absoluteOffsetTop(this.element) + this.element.offsetHeight + 1;
document.body.appendChild(this.div);
}
this.div.style.display = 'block';
this.shown = true;
fc_openCal = this;
}

function fc_generateHTML() {
var html = '<TABLE><TR><TD CLASS="fc_head" COLSPAN="6"><DIV STYLE="float: right"><a class="fc_head" href="http://www.flooble.com/scripts/calendar.php" target="_blank">©</a></DIV>CALENDAR:</TD><TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').hide();"><B>X</B></TD></TR>';
html += '<TR><TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').moveMonth(-12);"><B><<</B></TD><TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').moveMonth(-1);"><B><</B></TD><TD COLSPAN="3" CLASS="fc_wk">' + fc_months[this.showDate.getMonth()] + ' ' + fc_getYear(this.showDate) + '</TD><TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').moveMonth(1);"><B>></B></TD><TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').moveMonth(12);"><B>>></B></TD></TR>';
html += '<TR><TD WIDTH="14%" CLASS="fc_wk">Mo</TD><TD WIDTH="14%" CLASS="fc_wk">Tu</TD><TD WIDTH="14%" CLASS="fc_wk">We</TD><TD WIDTH="14%" CLASS="fc_wk">Th</TD><TD WIDTH="14%" CLASS="fc_wk">Fr</TD><TD class="fc_wknd" WIDTH="14%">Sa</TD><TD class="fc_wknd" WIDTH="14%">Su</TD></TR>';
html += '<TR>';
var dow = 0;
var i, style;
var totald = fc_monthLength(this.showDate);
for (i = 0; i < fc_firstDOW(this.showDate); i++) {
dow++;
html += '<TD>*</TD>';
}
for (i = 1; i <= totald; i++) {
if (dow == 0) { html += '<TR>'; }
if (this.showDate.getMonth() == this.date.getMonth() && this.showDate.getYear() == this.date.getYear() && this.date.getDate() == i) {
style = ' style="font-weight: bold;"';
} else {
style = '';
}
html += '<TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').setDate(' + i + ', ' + this.showDate.getMonth() + ', ' + this.showDate.getFullYear() + ');" ' + style + '>' + i + '</TD>';
dow++;
if (dow == 7) {
html += '</TR>';
dow = 0;
}
}
if (dow != 0) {
for (i = dow; i < 7; i++) {
html += '<TD>*</TD>';
}
}
html +='</TR>';
html += '</TABLE>';
return html;
}

function fc_hide() {
if (this.div != false) {
this.div.style.display = 'none';
}
this.shown = false;
fc_openCal = undefined;
}

function fc_moveMonth(amount) {
var m = this.showDate.getMonth();
var y = fc_getYear(this.showDate);
if (amount == 1) {
if (m == 11) {
this.showDate.setMonth(0);
this.showDate.setYear(y + 1);
} else {
this.showDate.setMonth(m + 1);
}
} else if (amount == -1) {
if (m == 0) {
this.showDate.setMonth(11);
this.showDate.setYear(y - 1);
} else {
this.showDate.setMonth(m - 1);
}
} else if (amount == 12) {
this.showDate.setYear(y + 1);
} else if (amount == -12) {
this.showDate.setYear(y - 1);
}
this.div.innerHTML = this.generateHTML();
}
__________________
Bibliotecario pero morboso de las Tecnologías....
  #3 (permalink)  
Antiguo 05/02/2013, 21:49
Avatar de elmoikano  
Fecha de Ingreso: enero-2013
Mensajes: 50
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: consulta rango de fecha con funcion de calendario

esta es la segunda parte del script para el calendario
Código HTML:
	//--Utils-------------------------------------------------------------
	function fc_absoluteOffsetTop(obj) {
     	var top = obj.offsetTop;
     	var parent = obj.offsetParent;
     	while (parent != document.body) {
     		top += parent.offsetTop;
     		parent = parent.offsetParent;
     	}
     	return top;
     }
     
     function fc_absoluteOffsetLeft(obj) {
     	var left = obj.offsetLeft;
     	var parent = obj.offsetParent;
     	while (parent != document.body) {
     		left += parent.offsetLeft;
     		parent = parent.offsetParent;
     	}
     	return left;
     }
     
     function fc_firstDOW(date) {
     	var dow = date.getDay();
     	var day = date.getDate();
 		if (day % 7 == 0) return dow;
     	return (7 + dow - (day % 7)) % 7; 
     }
     
     function fc_getYear(date) {
     	var y = date.getYear();
     	if (y > 1900) return y;
     	return 1900 + y;
     }
     
     function fc_monthLength(date) {
		var month = date.getMonth();
		var totald = 30;
		if (month == 0 
			|| month == 2
			|| month == 4
			|| month == 6
			|| month == 7
			|| month == 9
			|| month == 11) totald = 31;
		if (month == 1) {
			var year = date.getYear();
			if (year % 4 == 0 && (year % 400 == 0 || year % 100 != 0))
		 		totald = 29;
			else
				totald = 28;
		}
		return totald;
     }
     
     function fc_formatToken(date, token) {
		var command = token.substring(0, 1);
		if (command == 'y' || command == 'Y') {
			if (token.length == 2) { return fc_zeroPad(date.getFullYear() % 100); }
			if (token.length == 4) { return date.getFullYear(); } 
		}
		if (command == 'd' || command == 'D') {
			if (token.length == 2) { return fc_zeroPad(date.getDate()); }
		}
		if (command == 'm' || command == 'M') {
			if (token.length == 2) { return fc_zeroPad(date.getMonth() + 1); }
			if (token.length == 3) { return fc_months[date.getMonth()]; } 
		}
		return token;
     }
     
     function fc_parseToken(date, token, value, start) {
		var command = token.substring(0, 1);
		var v;
		if (command == 'y' || command == 'Y') {
			if (token.length == 2) { 
				v = value.substring(start, start + 2);
				if (v < 70) { date.setFullYear(2000 + parseInt(v)); } else { date.setFullYear(1900 + parseInt(v)); } 
			}
			if (token.length == 4) { v = value.substring(start, start + 4); date.setFullYear(v);} 
		}
		if (command == 'd' || command == 'D') {
			if (token.length == 2) { v = value.substring(start, start + 2); date.setDate(v); }
		}
		if (command == 'm' || command == 'M') {
			if (token.length == 2) { v = value.substring(start, start + 2); date.setMonth(v - 1); }
			if (token.length == 3) { 
				v = value.substring(start, start + 3);
				var i;
				for (i = 0; i < fc_months.length; i++) {
					if (fc_months[i].toUpperCase() == v.toUpperCase()) { date.setMonth(i); }
				}
			} 
		}
     }
     
     function fc_zeroPad(num) {
		if (num < 10) { return '0' + num; }
		return num;
     }

	function fc_getObj(id) {
		if (fc_ie) { return document.all[id]; } 
		else { return document.getElementById(id);	}
	}

      function fc_setFieldValue(field, value) {
                if (field.type.substring(0,6) == 'select') {
                        var i;
                        for (i = 0; i < field.options.length; i++) {
                                if (fc_equals(field.options[i].value, value)) {
                                        field.selectedIndex = i;
                                }
                        }
                } else {
                        field.value = value;
                }
      }

      function fc_getFieldValue(field) {
                if (field.type.substring(0,6) == 'select') {
                        return field.options[field.selectedIndex].value;
                } else {
                        return field.value;
                }
      }
      
      function fc_equals(val1, val2) {
      		if (val1 == val2) return true;      		
      		if (1 * val1 == 1 * val2) return true;
      		return false;
      }
     
</script>

<style>
.fc_main { background: #DDDDDD; border: 1px solid #000000; font-family: Verdana; font-size: 10px; }
.fc_date { border: 1px solid #D9D9D9;  cursor:pointer; font-size: 10px; text-align: center;}
.fc_dateHover, TD.fc_date:hover { cursor:pointer; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; border-right: 1px solid #999999; border-bottom: 1px solid #999999; background: #E7E7E7; font-size: 10px; text-align: center; }
.fc_wk {font-family: Verdana; font-size: 10px; text-align: center;}
.fc_wknd { color: #FF0000; font-weight: bold; font-size: 10px; text-align: center;}
.fc_head { background: #000066; color: #FFFFFF; font-weight:bold; text-align: left;  font-size: 11px; }
</style>

	</head>
	<body>

		<h1>:::::::::</h1>
		
		<form action="fecha.php" method="post">
		<input size="10" id="fecha1" type="button" name="date1" title="YYYY-MM-DD" > 
		<input type="button" value="Fecha" onclick="displayCalendarFor('fecha1');">
		
		<input size="10" id="fecha2" type="button" name="date2" title="YYYY-MM-DD" > 
		<input type="button" value="Fecha" onclick="displayCalendarFor('fecha2');">
		
		<!--<input size="10" id="fecha1" type="text" name="date1" title="YYYY-MM-DD" > 
		
		<input size="10" id="fecha2" type="text" name="fecha2" title="YYYY-MM-DD" > -->
		
		<input type="submit" value="CONSULTAR" />
		</form>
		

	</body>
</html> 

y el codigo en PHP es este:

Código PHP:
<?php
        
        
Include "config.php";
            
//creo que el detalle esta en como declaro las variables de fecha
                        //pero no se como poner la variable para que postee el formato
                        //el tipo de dato es datetime
            
$q=$_POST['fecha1'];
            
$r=$_POST['fecha2'];
            
$tab1 "referencia_rapida";
            
            
$query "SELECT * FROM $tab1 WHERE fecha BETWEEN '".$q."' AND '".$r."'";
            
            
$result=mysql_query($query)
            OR DIE (
"Consulta fallida: ".mysql_error());
            
            echo 
"<TABLE BORDER = '3' id='export_excel'>";
            echo 
"<tr>";
            echo 
"<th></th>";
            echo 
"<th></th>";
            echo 
"<th align='center' colspan=4>Datos del Usuario</th>";
            echo 
"</tr>";
            echo 
"<tr>";
            echo 
"<th>Folio</th>";
            echo 
"<th>Fecha</th>";
            echo 
"<th>Nombre</th>";
            echo 
"<th>Apellido Pat</th>";
            echo 
"<th>Apellido Mat</th>";
            echo 
"<th>Matricula</th>";
            echo 
"<th>Carrera</th>";
            echo 
"<th>Semestre</th>";
            echo 
"<th>Medio</th>";
            echo 
"<th>Consulta</th>";
            echo 
"<th>Observaciones</th>";
            echo 
"<th>Resolución</th>";
            echo 
"<th>Quien atendio</th>";
            echo 
"<th>Tiempo de respuesta</th>";
            echo 
"</tr>";
            
            while (
$row mysql_fetch_array($result))
                {
                    echo 
"<tr>";
                    echo
"<td>",$row['id'],"</td>
                    <td>"
,$row['fecha'],"</td>
                    <td>"
,$row['nombre'],"</td>
                    <td>"
,$row['ap_paterno'],"</td>
                    <td>"
,$row['ap_materno'],"</td>
                    <td>"
,$row['matricula'],"</td>
                    <td>"
,$row['programa'],"</td>
                    <td>"
,$row['semestre'],"</td>
                    <td>"
,$row['medio'],"</td>
                    <td>"
,$row['descripcion'],"</td>
                    <td>"
,$row['observaciones'],"</td>
                    <td>"
,$row['resolucion'],"</td>
                    <td>"
,$row['nombre_biblio'],"</td>
                    <td>"
,$row['param'];
                    echo 
"</tr>";
                }
            echo 
"</table>";
            
        if (!
$result) {
        die(
"No exitsten Datos: " mysql_error());
        }
        
        
mysql_close($conexion)
        
?>
__________________
Bibliotecario pero morboso de las Tecnologías....

Etiquetas: calendario, datetime, fecha, formulario, funcion
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 04:24.