Script para el cálculo de dÃas hábiles
1 COMENTARIO - Publicado hace 37 meses - Clasificado en: PHP, SCRIPTS, MOOTOOLSAutor:Zyos
Ver ejemplo en funcionamiento » »
Archivos fuente del ejemplo » »
Este escript en php que sirve para calcular los dÃas habiles. En mi caso se ocupa en una oficina, y lo nesecitan del año 2003 al 2008 pero se pueden mover los valores del 'for' en el script, lo mismo que los valores del array de inhabiles, donde se pueden agregar dÃas que no quieren ser contados. El ejemplo funciona con un fichero index.php:
<html>Con includes a la librerÃa mootools y un fichero script.php que se encarga de realizar el cálculo:
<head>
<title>DEMO</title>
<script src="js/mootools.js" type=text/javascript></script>
<script>
function ajax(){
new Ajax('script.php', {
update: $('resultado'),
postBody: $('form').toQueryString()
}).request();
}
</script>
</head>
<body>
<form id="form" onSubmit="javascript: ajax(); return false;">
<label>Día:</label>
<input type="text" size="2" name="day" value="<?php echo date("j"); ?>" />
<label>Mes:</label>
<input type="text" size="2" name="month" value="<?php echo date("n"); ?>" />
<label>Año:</label>
<input type="text" size="4" name="year" value="<?php echo date("Y"); ?>" />
<label>Días a Calcular:</label>
<input type="text" size="2" name="daysto" />
<input type="submit" id="btn" value="Calcular"/>
</form>
<br />
<div id="resultado" style="text-align:center;"></div>
</body>
</html>
<?php
// Todo exepto la función get_days_for_month, sacada de esta web
// http://codedump.jonasjohn.de/snippets/get_days_for_month.htm
// modificada para que funcione con años bisiestos es de mi autoria
// imzyos@gmail.com
function get_days_for_month($m,$y){
if($m == 02){
if(($y % 4 == 0) && (($y % 100 != 0) || ($y % 400 == 0))){
return 29;
}else{
return 28;
}
}
if ($m == 4 || $m == 6 || $m == 9 || $m == 11){
return 30;
}else{
return 31;
}
}
extract($_POST);
if(!isset($day) or !isset($month) or !isset($year) or !isset($daysto)){ exit; }
$inhabiles = array('5/2/2007');
$habiles = array();
for($y=2003; $y<=2008; $y++){
for($m=1; $m<=12; $m++){
for($d=1; $d<=get_days_for_month($m,$y); $d++){
$date = date('D', mktime(0,0,0,$m,$d,$y));
if($date == 'Sat' or $date == 'Sun'){
$inhabiles[] = date("j/n/Y", mktime(0,0,0,$m,$d,$y));
}else{
if(!in_array(date("j/n/Y", mktime(0,0,0,$m,$d,$y)),$inhabiles)){
$habiles[] = date("j/n/Y", mktime(0,0,0,$m,$d,$y));
}
}
}
}
}
$date = $day.'/'.$month.'/'.$year;
$contador = array_search($date,$habiles);;
echo '<b>'.$habiles[$daysto+$contador].'</b>';
?>
Algunas entradas relacionadas:
- SelectaPix: script para generar galerÃas de imágenes en PHP
- EasyGallery
- Popstats
- Backup de una base de datos MySQL a XML con PHP
- Crear una nube de etiquetas con PHP
- File Thingie: Administrador de archivos en PHP
- Obtener ficheros por extension
También te puede interesar:
| Tutorial Photoshop: Fantástica Foto Manipulación de un árbol | Windows Boot Analyzer - BootLogXP | Glype: PHP Proxy Script | 99 polls: generador de encuestas gratis en línea | Agregar efecto grunge al texto utilizando CSS |
COMENTARIOS
|
|
Publicado hace 2 meses K2H - Gracias. Una recomendación, trata de realizar tus funciones modulares o genéricas, en otras palabras, que no dependan de un cierto comportamiento o que se adapten a distintos comportamientos, las buenas funciones fundamentan bases y después se utilizan de la manera que se requiera, como la de "get_days_for_month", es buena y no depende directamente de terceros. Nuevamente, GRACIAS ;) |





















Sergyo en Validación con expresiones regulares y Javascript



