PHP - Mantener valores en select al refrescar la pagina

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por unexes (124 intervenciones) el 24/03/2013 13:29:40
Hola a todos espero me podais ayudar.

Vereis tengo una pagina en la que utilizo varios selects para seleccionar unos determinados datos y filtrar una consulta, el filtrage funciona bien lo que ocurre es que al uitilizar el paginador y pasar de una pagina a la siguiente me refresca la misma y los selects toman el valor por defecto que muestran al entrar en la pagina por primera vez y me gustaria que mientras paso de pagina con el paginador los selects mantuvieran el valor seleccionado.
Este es el codigo que tengo de uno de los selects, todos se basan en el mismo código.
Muchas gracias a todos, un saludo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
		<option value="-1" selected>&nbsp;Todos los nombres&nbsp;</option>
<?php
	$tablanombre = mysql_query("SELECT DISTINCT Nombre FROM escortschicas ORDER BY Nombre ASC");
	while ($registronombre = mysql_fetch_array($tablanombre))
 
	  if (isset($_GET["selnombre"])<>'-1'){
			echo "<option value='".$registronombre['Nombre']."' >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
		} elseif (isset($_GET["selordenar"])=='-1'){
			echo "<option value='".$registronombre['Nombre']."' >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
		} else {
            echo "<option value='".$registronombre['Nombre']."' selected>&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
}
	mysql_free_result($tablanombre);
		?>
	</select>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por xve (6935 intervenciones) el 24/03/2013 18:19:11
Hola Unexes, aqui te adjunto un ejemplo para que veas como seria... tendras que adaptarlo a tu proyecto, ok?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$valores=array(1=>"opcion 1", "opcion 2", "opcion 3");
?>
 
<form action="" method="POST">
<select name="miSelect">
    <option value='0'>Selecciona una opcion</option>
    <?php
    foreach($valores as $key=>$value)
    {
        // Si coincide lo enviado por el formulario con tu valor...
        if($_POST["miSelect"]==$key)
        {
            echo "<option value='".$key."' selected>".$value."</option>";
        }else{
            echo "<option value='".$key."'>".$value."</option>";
        }
    }
    ?>
</select>
<input type="submit" value="enviar">
</form>


Cualquier duda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por Unexes (124 intervenciones) el 24/03/2013 21:02:11
xve gracias por tu ayuda.

Lo he intentado adaptar y no consigo que me funcione, como veras mi código difiere y aunque lo he adaptado para probarlo no me hace lo que yo quiero.

Se me olvido decir por si es importante que la estructura de la pagina es la siguiente:

Tengo una pagina que se llama "EscortsChicas.php" y dentro de la misma hay 2 divs
En el primer <div> llamo a la pagina con un require "MenuLateralEscortsChicas.php" en esa pagina se encuentran los selects desde donde selecciono por que datos quiero filtrar
En el segundo <div> llamo a la pagina con un require "ContenidoEscortsChicas.php" en esa pagina se encuentra la consulta con el paginador.

Estoy probando ahora esta variación de mi código pero me he hecho un lio y tampoco consigo hacerlo funcionar, lo pongo por si crees que estoy en el buen camino, lo que me ocurre de momento con esta prueba de código es que no me rellena el select con los nombres solo me pone la primera opción la que aparece por defecto cuando abres la página y aun no has seleccionado nada osea "todos los nombres".
Espero que me puedas seguir ayudando, un saludo y gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
<?php
if ( isset($_GET['selnombre']) ){
echo '<option value="-1" >&nbsp;Todos los nombres&nbsp;</option>';
}else{
echo  '<option value="-1" selected >&nbsp;Todos los nombres&nbsp;</option>';
}
 
    $tablanombre = mysql_query("SELECT DISTINCT Nombre FROM escortschicas ORDER BY Nombre ASC");
    while ($registronombre = mysql_fetch_array($tablanombre))
 
    if(  isset($_GET['selnombre']) and $_GET['selnombre']==$registronombre['Nombre'] ){
$seleccionado = "selected";
}else{
$seleccionado = "";
}
 
      if (isset($_GET["selnombre"])<>'-1'){
            echo "<option value='".$registronombre['Nombre']."'  seleccionado>&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
        } elseif (isset($_GET["selordenar"])=='-1'){
            echo "<option value='".$registronombre['Nombre']."'  seleccionado>&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
        } else {
            echo "<option value='".$registronombre['Nombre']."' seleccionado>&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
}
    mysql_free_result($tablanombre);
        ?>
    </select>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por xve (6935 intervenciones) el 25/03/2013 07:33:23
Hola Unexes, no deberia de haber ningún problema en utilizar requires, al contrario, que es una buena opción para no repetir código en varias paginas.

No se muy bien porque haces el condicional para $_GET["selnombre"] o $_GET["selordenar"]...
No veo donde empieza el formulario, pero interpreto que pasas los valores por $_GET, verdad?

Veo que estas utilizando nombres en la opción value del select, lo cual no es muy recomendable, ya que pueden haber espacios, signos, acentos, etc...

Te podría quedar algo así:
1
2
3
4
5
6
7
8
9
10
if (isset($_GET["selnombre"])<>'-1')
{
    echo "<option value='".$registronombre['Nombre']."'>&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
}elseif (isset($_GET["selordenar"])=='-1'){
    echo "<option value='".$registronombre['Nombre']."'>&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
}elseif($_GET["selnombre"]==$registronombre['Nombre']){
    echo "<option value='".$registronombre['Nombre']."' selected>&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
}else{
    echo "<option value='".$registronombre['Nombre']."'>&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por unexes (124 intervenciones) el 25/03/2013 10:39:04
xve Gracias por tu ayuda, el código que me has puesto lo he probado y no me funciona, no obstante he encontrado una solución.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
<?php
    if ( isset($_GET['selnombre']) ){
         echo '<option value="-1" >&nbsp;Todos los nombres&nbsp;</option>';
       }else{
         echo  '<option value="-1" selected >&nbsp;Todos los nombres&nbsp;</option>';
}
    $tablanombre = mysql_query("SELECT DISTINCT Nombre FROM escortschicas ORDER BY Nombre ASC");
     while ($registronombre = mysql_fetch_array($tablanombre)){
 
    if(  isset($_GET['selnombre']) and $_GET['selnombre']==$registronombre['Nombre'] ){
      $seleccionado = "selected";
      }else{
      $seleccionado = "";
      }
echo "<option value='".$registronombre['Nombre']."' $seleccionado >".$registronombre['Nombre']."</option>";
}
    mysql_free_result($tablanombre);
        ?>
    </select>

De nuevo te doy las gracias por acudir en mi ayuda, un saludo.

PD: Lo de "$_GET["selordenar"]" es un error de copiar y pegar y no rectificarlo por "$_GET['selnombre']", no obstante eso no era lo que hacia que fallara el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por xve (6935 intervenciones) el 25/03/2013 16:31:37
Gracias por comentarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener valores en select al refrescar la pagina

Publicado por Rogelio (1 intervención) el 29/10/2017 18:26:54
Yo se que ha pasado mucho tiempo de que se posteo esta solución, pero la agradezco mucho , fue lo que esperaba.
Ya que al presionar el botón submit se refrescaban las listas.... y asi me quedó una lista de meses, Solo le hice un pequeño cambio a POST

1
2
3
4
5
6
7
8
9
10
11
12
13
<select class=“form-control” name = “mes”>
<?php
     for ($mesC = 1; $mesC <= 12; $mesC++)
     {
        if ( isset ($_POST[‘mes’] && $_POST[‘mes’] == $mesC)
        {
           $seleccionado = “selected”;
         } else {
            $seleccionado = “”;
          }
        echo “<option “.$seleccionado.>.str_pad((int) $mesC, 2, “0”, STR_PAD_LEFT).</option>”;
     }
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Mantener valores en select al refrescar la pagina

Publicado por Gonzalo (615 intervenciones) el 30/10/2017 04:35:26
recuerda que la conexion con el servidor es sincrona, una vez que se termina de enviar la pagina todas las conexiones, archivos etc. se cierran (es por eso que facil hakear un apagina web)

asi que tal vez lo que debes hacer es guardar un hidden con el id del registro que necesitas y al recargar la pagina pides de nuevo la informacion relacionada con ese indice.

o tambien puedes usar javascript o jquery, asi evitarias estar recargando la pagina, pero claro, eso depende de como manejes la pagina.

Aqui te dejo una clase para usar los drop down boxes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class ClassSelect
{
  private
  $Arreglo,
  $Name
  ;
 
  function Clear()
  {
    $this->Arreglo=array();
    $this->Name="";
  }
 
  function Name($Name)
  {
    $this->Name=$Name;
  }
 
  function Option($i,$v)
  {
    $this->Arreglo[$i]=$v;
  }
 
  function Get($Value)
  {
    $Ok=
    '<Select';
    if($this->Name!="")
    {
      $Ok.=
      ' Name="'.$this->Name.'"'.
      ' Id="'.$this->Name.'"';
    }
    $Ok.=
    '>';
 
    foreach($this->Arreglo as $i=>$v)
    {
      $Ok.=
      '<Option Value="'.$i.'"';
      if
      (
        $Value==$i |
        $Value==$v
        )
      {
        $Ok.=
        ' selected';
      }
      $Ok.=
      '>';
 
      $Ok.=
      $v;
 
      $Ok.=
      '</option>';
    }
    $Ok.=
    '</select>';
 
    return $Ok;
  }
 
  function Display($Value="")
  {
    echo($this->Get($Value));
  }
}

en tu caso deberias usarlo mas o menos asi

1
2
3
4
5
6
7
8
9
$Mes=new ClassSelect();
$Mes->Clear();//por si acaso
$Mes->Name("mes");
for ($mesC = 1; $mesC <= 12; $mesC++)
{
    $Mes->Option($mesC,$mesC);
}
 
$Mes->Display($_POST[‘mes’]); //este elemento es el que se selecciona del arreglo.

y listo, la clase ordenara el DropDown por ti.

salu2.

el rayado interno del cañón de un rifle o pistola da un efecto que hace girar la bala sobre su eje, haciendo que el disparo llegue mas lejos y prácticamente no se desvié por efecto del aire en distancias cortas. los rifles con cañón interno lizo tendrán mucho menor alcance, menor precisión y menor efectividad (causan menos daño) aunque usen el mismo tipo de bala.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener valores en select al refrescar la pagina

Publicado por roger (1 intervención) el 20/07/2018 15:09:28
De 10, me funciono. }Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener valores en select al refrescar la pagina

Publicado por Angello Carvajal (1 intervención) el 20/03/2020 00:18:22
Extraordinario ejemplo, simple y efectivo.

Gracias por compartir, espero aportar para otros.

Cuando pueda subiré algunos proyectos.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar