Foros del Web » Programando para Internet » PHP »

rango años

Estas en el tema de rango años en el foro de PHP en Foros del Web. Hola como puedo seleccionar un rango de años (solo años, sin meses y días) por ejemplo así: 2014 - 2016 y luego ordenarlos de mayor ...
  #1 (permalink)  
Antiguo 16/06/2016, 14:00
 
Fecha de Ingreso: agosto-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 0
rango años

Hola

como puedo seleccionar un rango de años (solo años, sin meses y días)
por ejemplo así: 2014 - 2016
y luego ordenarlos de mayor a menor osea asi
2014 - 2016
2013 - 2014
2010 - 2013

espero que me ayuden. es para armar la bd
muchas gracias
  #2 (permalink)  
Antiguo 16/06/2016, 15:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: rango años

Código PHP:
Ver original
  1. $chunks = array_chunk(array_reverse(range(2010, 2016)),2);
  2.  
  3. foreach($chunks as $chunk)
  4. {
  5.     echo implode('-', $chunk) . "\n";
  6.  
  7. }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 16/06/2016, 15:55
 
Fecha de Ingreso: agosto-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: rango años

Cita:
Iniciado por hhs Ver Mensaje
Código PHP:
Ver original
  1. $chunks = array_chunk(array_reverse(range(2010, 2016)),2);
  2.  
  3. foreach($chunks as $chunk)
  4. {
  5.     echo implode('-', $chunk) . "\n";
  6.  
  7. }
Gracias, pero para insertar como hago entonces?
manualmente así en un textbox como string: "2014 - 2016" ??
o hay alguna forma para q el usuario pueda escoger el rango de año de manera más simple?

saludos
  #4 (permalink)  
Antiguo 16/06/2016, 18:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 16 años, 2 meses
Puntos: 31
Respuesta: rango años

lo mismo que te dejo: hhs
puedes darle al usuario un checkbox para que seleccione año A y año B

seria algo así:
Código PHP:
<form action="" method="post">
<div style="height: 6em; width: 5em; overflow: auto;">
<?php
$years 
range(date('Y'), 2010);
//$years = range(2010, date('Y'));
for($i 0$i count($years); $i++){
//echo "\n<br />",$years[$i];
echo '<input name="year[]" value="',$years[$i],'" type="checkbox">',"\n";
echo 
'<label>',$years[$i],'</label><br />',"\n";
}
?> 
</div><br /><input name="" type="submit" value="Enviar">
</form>
<?php 
//print_r($_POST);
if(isset($_POST['year'])){
$year $_POST['year'];
echo 
$year[1],' - ',$year[0];
}
?>
obviamente se puede seleccionar mas de 2 pero al solo tomar
$year[1] y $year[0] se están anulando las demás selecciones
por ejemplo si se selecciona: 2016, 2014 y 2012 solo tomara 2016 y 2014
puedes seleccionar múltiples y usar print_r($_POST); para que veas como funciona.
no se si sera lo que estas buscando hacer.
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #5 (permalink)  
Antiguo 16/06/2016, 18:39
 
Fecha de Ingreso: agosto-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: rango años

Cita:
Iniciado por thezzin Ver Mensaje
lo mismo que te dejo: hhs
puedes darle al usuario un checkbox para que seleccione año A y año B

seria algo así:
Código PHP:
<form action="" method="post">
<div style="height: 6em; width: 5em; overflow: auto;">
<?php
$years 
range(date('Y'), 2010);
//$years = range(2010, date('Y'));
for($i 0$i count($years); $i++){
//echo "\n<br />",$years[$i];
echo '<input name="year[]" value="',$years[$i],'" type="checkbox">',"\n";
echo 
'<label>',$years[$i],'</label><br />',"\n";
}
?> 
</div><br /><input name="" type="submit" value="Enviar">
</form>
<?php 
//print_r($_POST);
if(isset($_POST['year'])){
$year $_POST['year'];
echo 
$year[1],' - ',$year[0];
}
?>
obviamente se puede seleccionar mas de 2 pero al solo tomar
$year[1] y $year[0] se están anulando las demás selecciones
por ejemplo si se selecciona: 2016, 2014 y 2012 solo tomara 2016 y 2014
puedes seleccionar múltiples y usar print_r($_POST); para que veas como funciona.
no se si sera lo que estas buscando hacer.
no seria mejor con 2 combobox
la cosa seria validar q el primero sea menor al segundo
con eso ya podre insertarlo asi 2014 - 2016

bueno gracias por la ayuda
  #6 (permalink)  
Antiguo 16/06/2016, 20:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 16 años, 2 meses
Puntos: 31
Respuesta: rango años

la selecciona es tuya y claro que puedes usar:
Código PHP:
<form action="" method="post">
<?php
$years 
range(date('Y'), 2010);
$aabb '';
for(
$i 0$i count($years); $i++){
//echo "\n<br />",$years[$i];
$aabb .= '<option>'.$years[$i].'</option>'."\n";
}
echo 
' año A <select name="aa">'.
$aabb."\n".
'</select>';
echo 
' año B <select name="bb">'.
$aabb."\n".
'</select>';
?> 
<br /><input name="" type="submit" value="Enviar">
</form>
<?php 
//print_r($_POST);
if(isset($_POST['aa'])){
$aa $_POST['aa'];
$bb $_POST['bb'];
if(
$aa <= $bb){
echo 
'Seleccion no Valida!';    
}else{
echo 
$bb,' - ',$aa;
 }
}
?>
en este caso la selección iría en descenso
para eso usa asi: if($aa <= $bb){
si se elige en A 2014 y en B 2014 o 2016 no valido
pero si se elige en A 2014 y en B 2011 es valido
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #7 (permalink)  
Antiguo 16/06/2016, 20:07
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: rango años

no es mas fácil utilizar un daterange de js, mucho mas simple y rápido
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 16/06/2016, 20:38
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 16 años, 2 meses
Puntos: 31
Respuesta: rango años

Cita:
Iniciado por xfxstudios Ver Mensaje
no es mas fácil utilizar un daterange de js, mucho mas simple y rápido
puede ser, pero en lo personal si puedo liberarme de código js en ap php lo hago
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #9 (permalink)  
Antiguo 17/06/2016, 10:51
 
Fecha de Ingreso: agosto-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: rango años

Cita:
Iniciado por xfxstudios Ver Mensaje
no es mas fácil utilizar un daterange de js, mucho mas simple y rápido
si es otra opción, pero no encontré un ejm con años
solo fechas de días y meses.

-----------
  #10 (permalink)  
Antiguo 17/06/2016, 13:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: rango años

Cita:
Iniciado por thezzin Ver Mensaje
puede ser, pero en lo personal si puedo liberarme de código js en ap php lo hago
si ya veo, de todas formas esta esto, cualquier cosa https://jsfiddle.net/s4fwrrq7/

yo utilizo js y no veo que ralentice nada en mis app, claro sin abusar de el. Saludos
__________________
[email protected]
HITCEL
  #11 (permalink)  
Antiguo 17/06/2016, 19:26
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: rango años

Cita:
Iniciado por yagami19 Ver Mensaje
Gracias, pero para insertar como hago entonces?
manualmente así en un textbox como string: "2014 - 2016" ??
o hay alguna forma para q el usuario pueda escoger el rango de año de manera más simple?

saludos
Creo que ya tienes varias ideas, trabaja con ellas y cuando tengas algo hecho puedes publicarlo para que se te pueda orientar.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #12 (permalink)  
Antiguo 21/06/2016, 18:13
 
Fecha de Ingreso: agosto-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: rango años

Cita:
Iniciado por hhs Ver Mensaje
Creo que ya tienes varias ideas, trabaja con ellas y cuando tengas algo hecho puedes publicarlo para que se te pueda orientar.
Hola

ya tengo insertados los datos asi en la tabla:

id / rango
1 / 2014 - 2016
2 / 2013 - 2014
3 / 2010 - 2013
4 / 2017 - 2018

Pero ahora con el código que me paso antes, creo funcionaria bien si la diferencia es fija al obtener el mayor y menor de los rangos insertados, la cosa es que la diferencias son desiguales.bueno mi duda ahora como lo imprimo en orden del rango con el array
$campo[rango]

Código PHP:
while($campo $result->fetch_array()){
$p1 explode(" - "$campo["rango"]);
$dif $p1[1] - $p1[0]; // aqui puedo obtener la diferencia
$chunks array_chunk(array_reverse(range($p1[0], $p1[1])),$dif);

foreach(
$chunks as $chunk)
{
    echo 
implode('-'$chunk) . "\n";
    echo 
"<br/>";
 
}



Última edición por yagami19; 21/06/2016 a las 18:25

Etiquetas: rango
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 05:26.