Esta pequeña aplicación sencilla, consiste en seleccionar el numero del cierto mes de una lista y en otra lista aparecen los numeros de días. Si seleccionamos el numero de mes que corresponde a Febrero (2) la lista mostrará 29 días, y así por el estilo.

Veamos, la parte HTML donde también incluimos el código JavaScript haciendo uso de funciónes de Prototype.js:

<html>
<head>
<title>Prototype Segunda Aplicacion</title>
<script type="text/javascript" src="https://www.prototypejs.org/assets/2008/9/29/prototype-1.6.0.3.js"></script>
<script type="text/javascript">
 //enviando el numero del mes
 function send(value){
 //eliminando los dias del mes anterior
 var length=$("day").length;
 for (i=0;i<length;i++){
 $("day").remove(0);
 }
 //nos conectamos con response.php
 //que nos dará el numero de dias segun el mes
 new Ajax.Request(
 './response.php',{
 method: "get",
 parameters: {month: value},
 onSuccess: function(response){
 var days=response.responseText;
 for (i=1;i<=days;i++){
 $("day").options.add(new Option(i,i));
 }
 },
 onFailure: function(){
 alert('Failed!'); //en caso de errores
 }
 }
 ); 
 }
 
 //esta función se ejecuta al iniciar
 //consiste en llenar las dos lista con
 //el primer mes y sus dias correspondientes
 function init(){
 for (i=1;i<=12;i++){
 $("month").options.add(new Option(i,i));
 }
 for (i=1;i<=31;i++){
 $("day").options.add(new Option(i,i));
 }
 }
</script>
</head>

<body onLoad="init();">
<p>
 Mes: <select id="month" onChange="send(this.value);"></select>
 Dia: <select id="day"></select>
</p>
</body>
</html>

Ahora veamos el archivo response.php:

<?php
 $d=$_GET['month'];
 //definimos un array con los maximos de dias de cada mes
 $days=array(31,29,31,30,31,30,31,31,30,31,30,31);
 //mostramos según el numero del mes
 echo $days[$d-1];
?>

Ver el demo.