Comunidad de diseño web y desarrollo en internet online

Insertar datos dinámicamente en un <select>

Citar            
MensajeEscrito el 19 Jun 2012 02:27 pm
Lo que no estoy pudiendo realizar es insertar los datos dentro de un formulario, y más específicamente dentro de una etiqueta <select>.
El código que tengo es este:

Código :

<select name="checkin_year_month"> 
<?php 
$ano = date(Y);
$meses = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
for($i = 0; $i <= date(11); $i++) { 
   $i==date("n")-1 ? $valor = "selected" : $valor = "";
   $i<=11 ? $nombre = $meses[$i] : $nombre = "";
   $j = $i+1;
echo "<option value='$ano-$j' $valor>$nombre/$ano</option>"; 
} 
?> 
</select>



Van a ver dos <select>, el primero de días y el segundo de meses/años.
El de meses/años funciona, me muestra los nombres de los meses junto con el año.
Pueden ver el ejemplo funcionando aquí: http://3551.com.ar/prueba.php

Lo que no logro hacer es que cuando llegue a diciembre de 2012 (en este caso), siga automáticamente por enero 2013.
Lo ideal sería que me muestre los últimos doce meses a partir del mes actual (ahora sería junio/2012) e iría hasta mayo 2013.

La función es para reservar habitaciones en un hotel, de manea que el 30 diciembre se pueda reservar para enero del siguiente año.

Me imagino que se puede conseguir por medio de un condicional (if), pero no logro deducir como.
Como verán de javascript poco y nada, busque por internet pero no resulto.

Saludos

Por do

16 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 21 Jun 2012 05:49 pm
Logre hacerlo, este es el código

Código :

<select name=""> 
<?php
$mes=date("n") ; 
$rango=11; 
for ($i=$mes;$i<=$mes+$rango;$i++){ 
    $mesano=date('Y-n', mktime(0, 0, 0, $i,  1, date("Y") ) );
   echo "<option value='$mesano'>$mesano</option>"; 
} 
?> </select>

Muestra los 11 meses siguientes al mes en curso. En total un año.
Para modificar los meses que se muestran solo hay que modificar el número del $rango
El único inconveniente es que no muestra los nombres de los meses, solo el número.

Saludos

Por do

16 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 21 Jun 2012 06:30 pm
Ahora si, buscando encontré como mostrar los nombres de los meses, aunque PHP solo los muestra en inglés, así que hay que traducirlos.
Esté es el código completo para mostrar 12 meses, a partir del mes en curso, traducido al español.

Código :

<select name=""> 
<?php
$mes=date("n"); 
$rango=11; 
for ($i=$mes;$i<=$mes+$rango;$i++){ 
    $mesano=date('Y-n', mktime(0, 0, 0, $i,  1, date("Y") ) );
   $meses=date('F', mktime(0, 0, 0, $i,  1, date("Y") ) );
      if ($meses=="January") $meses="Enero";
      if ($meses=="February") $meses="Febrero";
      if ($meses=="March") $meses="Marzo";
      if ($meses=="April") $meses="Abril";
      if ($meses=="May") $meses="Mayo";
      if ($meses=="June") $meses="Junio";
      if ($meses=="July") $meses="Julio";
      if ($meses=="August") $meses="Agosto";
      if ($meses=="September") $meses="Setiembre";
      if ($meses=="October") $meses="Octubre";
      if ($meses=="November") $meses="Noviembre";
      if ($meses=="December") $meses="Diciembre";
   $ano=date('Y', mktime(0, 0, 0, $i,  1, date("Y") ) );
   echo "<option value='$mesano'>$meses/$ano</option>"; 
} 
?> </select>

Para el idioma inglés hay que eliminar todos los if,. para cualquier otro idioma reemplazar los nombres de los meses y listo.

Saludos

Por do

16 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.