Foros del Web » Programando para Internet » PHP »

Pasar último valor de <select> seleccionado

Estas en el tema de Pasar último valor de <select> seleccionado en el foro de PHP en Foros del Web. Teniendo este select: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form method = 'POST' action = 'listanivel.php<?php echo "?categoria=$cat&nivel=$niv"; ?> '>     < select ...
  #1 (permalink)  
Antiguo 17/05/2010, 01:57
 
Fecha de Ingreso: mayo-2010
Mensajes: 52
Antigüedad: 14 años, 6 meses
Puntos: 0
[SOLUCIONADO]Pasar último valor de <select> seleccionado

Teniendo este select:

Código HTML:
Ver original
  1. <form method='POST' action='listanivel.php<?php echo "?categoria=$cat&nivel=$niv"; ?>'>
  2.     <select name='orden' onchange='this.form.submit()'>
  3.         <option value='fmanual'>Fecha
  4.         <option value='$puntuacion'>Valoración
  5.         <option value='visitas'>Visitas
  6.         <option value='$usuario'>Usuario
  7.         <option value='titulo'>Alfabético
  8.     </select>
  9. </form>


Quiero que al seleccionar un valor y dirigirme a la nueva página, se mantenga el último valor seleccionado.

Gracias y un saludo.

Última edición por Weahl; 18/05/2010 a las 02:30
  #2 (permalink)  
Antiguo 17/05/2010, 07:51
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Pasar último valor de <select> seleccionado

parte por cerrar la etiqueta de <option>
por lo demas solo capturas el valor del post, comparas, y agregas un selected al crear el <select>
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 17/05/2010, 08:59
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Pasar último valor de <select> seleccionado

Crea un archivo php, metele todo este codigo, luego lo analizas, luego lo implementas... si desea.




<?
session_start();


////////////////////////////////////////////////////////////
//// se puede quitar ////////////
//esto es solo para borar la sesion (por comodidad)
if($_GET['sesDestroy'] != ""){
$_SESSION['ses_option_selected']='';
?>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="refresh"
content="1;URL=?">
<?
}
//// se puede quitar ////////////
////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////
///////// esto guardara en una variable de sesion ////////
///////// el valor seleccionado ////////
///////// Por lo que ya en todas tus paginas ////////
///////// podras tener disponible dicho valor ////////
if($_POST['orden'] != ""){
$_SESSION['ses_option_selected']=$_POST['orden'];
}
///// Pon estas lineas alli a donde valla el envio //////
/////////////////////////////////////////////////////////////

?>

<script type="text/javascript" language="javascript">
function mostrar(){

for(i=1; i<=(document.getElementsByTagName('option').lengt h -1); i++){
//aqui introducimos php...! dentro de js (claro que se puede)

alert(document.getElementsByTagName('option')[i].value);

if((document.getElementsByTagName('option')[i].value) == "<?=$_SESSION['ses_option_selected']?>"){
//alert(document.getElementsByTagName('option')[i].value);

alert("Seleccionado: "+document.getElementsByTagName('option')[i].value);

document.getElementsByTagName('option')[i].selected="selected";

}
}
}
</script>


<?

//si se ha seleeccionado un valor siempre llamara a la funcion mostrar()
if($_SESSION['ses_option_selected'] != ""){
?>
<body onLoad="mostrar()">
<?
}else{
?>
<!-- no se llama a la funcion mostrar() -->
<body>
<?
}

//les di valor para poder usarlas
$puntuacion=10;
$usuario="user";

?>


<form method='POST' action=''>
<select name='orden' onchange='this.form.submit()'>
<option value=""></option>
<option value="fmanual">Fecha</option>
<option value="<?=$puntuacion?>">Valoración</option>
<option value="visitas">Visitas</option>
<option value="<?=$usuario?>">Usuario</option>
<option value="titulo">Alfabético</option>
</select>
</form>

<!-- Solo por comodidad al trabajar con el scrip, puedes quitarlo-->
<p /><a href="?sesDestroy=true">Eliminar sesion</a>



</body>
  #4 (permalink)  
Antiguo 18/05/2010, 02:29
 
Fecha de Ingreso: mayo-2010
Mensajes: 52
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar último valor de <select> seleccionado

Muchas gracias a ambos, ya he conseguido hacerlo. Simplemente poniendo unos IF y si coincidia el valor con el del POST pues mostraba un selected tal y como decía el amigo Hidek1 (o eso creo xD).

Pues eso, de nuevo, gracias a los dos ;).
  #5 (permalink)  
Antiguo 18/05/2010, 02:41
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar último valor de <select> seleccionado

Holaa quisiera empezar salundando ya que es mi primer mensaje

Volviendo al tema, yo tengo el mismo problema pero a medios, me explico jeje.

Yo no tarde en resolver el problema con los condicionales y el selected, pero la cosa es que me funciona bien en Internet Explorer, pero no en Mozilla Firefox y no se que hacer ya... Llevo varios días intentando solucionarlo pero no lo consigo.

Os agradezco, por adelantado, vuestras respuestas.

Un saludo desde Málaga.
  #6 (permalink)  
Antiguo 20/05/2010, 00:48
 
Fecha de Ingreso: mayo-2010
Mensajes: 52
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar último valor de <select> seleccionado

Copianos aquí el código del select que le echemos un vistazo ;)
  #7 (permalink)  
Antiguo 20/05/2010, 01:12
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar último valor de <select> seleccionado

Ya lo he arreglado peo no hago exactamente lo que quería hacer, pero me cumple. La cuestión es que me funciona en IEXPLORER y no en Firefox. Aquí os dejo el código.

Código PHP:
echo "<tr><td width = 50% align = 'right'>Estado: </td><td width = 50%><select name = 'estado' SIZE = '1'>";

        if(
$estado == 1){
           echo 
"<OPTION selected value = '1'>1</option>";
           echo 
"<OPTION value = '2'>2</option>";
           echo 
"<OPTION value = '3'>3</option>";
           }
           if(
$estado == 2){
              echo 
"<OPTION value = '1'>1</option>";
               echo 
"<OPTION selected value = '2'>2</option>";
               echo 
"<OPTION value = '3'>3</option>";
           }
           if(
$estado == 3){
              echo 
"<OPTION value = '1'>1</option>";
               echo 
"<OPTION value = '2'>2</option>";
               echo 
"<OPTION selected value = '3'>3</option>";
           }

       echo 
"</select></td></tr>"
  #8 (permalink)  
Antiguo 20/05/2010, 18:40
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Pasar último valor de <select> seleccionado

Ahi te lo resolvi:

Fijate que al "name" de cada select le di valor segun el estado:
estado1,estado2,estado3

Porque al ser del mismo nombre, firefoxito creia que se trataba del mismo select que el anterior y nada mas lo buscaria es su cache, con lo que recuperaria siempre el primero...

Aqui esta el codigo:

<?php

$estado=1;
//$estado=2;
//$estado=3;



echo "<tr><td width = 50% align = 'right'>Estado: </td><td width = 50%>";

echo "<form>";

if($estado == 1){
echo "<select name='estado1' SIZE='1'>";
echo "<OPTION selected value='1'>1</option>";
echo "<OPTION value='2'>2</option>";
echo "<OPTION value='3'>3</option>";
}

if($estado == 2){
echo "<select name='estado2' SIZE='1'>";
echo "<OPTION value='1'>1</option>";
echo "<OPTION selected value = '2'>2</option>";
echo "<OPTION value='3'>3</option>";
}

if($estado == 3){
echo "<select name='estado3' SIZE='1'>";
echo "<OPTION value='1'>1</option>";
echo "<OPTION value='2'>2</option>";
echo "<OPTION selected value='3'>3</option>";
echo "</select>";
}

echo "</form>";
echo "</td></tr>";

?>



<!-- TAMBIEN PUEDES HACER ASI : -->
<!-- ASI TENDRAS UNA SOLA VARIABLE: "estado" -->


<?
//$estado=1;
$estado=2;
//$estado=3;
echo "<tr><td width = 50% align = 'right'>Estado: </td><td width = 50%>";
if($estado == 1){
echo "<form name='form1'>";
echo "<select name='estado' SIZE='1'>";
echo "<OPTION selected value='1'>1</option>";
echo "<OPTION value='2'>2</option>";
echo "<OPTION value='3'>3</option>";
echo "</form>";
}
if($estado == 2){
echo "<form name='form2'>";
echo "<select name='estado' SIZE='1'>";
echo "<OPTION value='1'>1</option>";
echo "<OPTION selected value = '2'>2</option>";
echo "<OPTION value='3'>3</option>";
echo "</form>";
}
if($estado == 3){
echo "<form name='form3'>";
echo "<select name='estado' SIZE='1'>";
echo "<OPTION value='1'>1</option>";
echo "<OPTION value='2'>2</option>";
echo "<OPTION selected value='3'>3</option>";
echo "</select>";
echo "</form>";
}
echo "</td></tr>";
?>



Felicidades por tu primer pregunta, aunque en realidad te colaste...

Saludos...!

Última edición por wiwi74; 20/05/2010 a las 18:50
  #9 (permalink)  
Antiguo 21/05/2010, 01:13
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar último valor de <select> seleccionado

Muchas gracias por tu respuesta, esta tarde lo miraré con tranquilidad

Etiquetas: pasar, seleccionado
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 12:10.