Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Mantener valor al refrescar pagina

Estas en el tema de Mantener valor al refrescar pagina en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/03/2013, 06:36
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Mantener valor al refrescar pagina

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:
Código PHP:
Ver original
  1. <select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
  2.         <option value="-1" selected>&nbsp;Todos los nombres&nbsp;</option>
  3. <?php
  4.     $tablanombre = mysql_query("SELECT DISTINCT Nombre FROM escortschicas ORDER BY Nombre ASC");
  5.     while ($registronombre = mysql_fetch_array($tablanombre))
  6.  
  7.       if (isset($_GET["selnombre"])<>'-1'){
  8.             echo "<option value='".$registronombre['Nombre']."' >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  9.         } elseif (isset($_GET["selordenar"])=='-1'){
  10.             echo "<option value='".$registronombre['Nombre']."' >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  11.         } else {
  12.             echo "<option value='".$registronombre['Nombre']."' selected>&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
  13. }
  14.     mysql_free_result($tablanombre);
  15.         ?>
  16.     </select>
__________________
¿Hay algo mas hermoso que ayudar.?
  #2 (permalink)  
Antiguo 24/03/2013, 07:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Mantener valor al refrescar pagina

puedes guardar la session de esta maneta cuando pasas a otra pagina se quedara guardados en session
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 24/03/2013, 07:23
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Mantener valor al refrescar pagina

Cada vez que envias tu formulario recibes o deberias recibir el el valor que posee tu select ( selnombre ) solo debes colocarle el atributo selected al que tenga ese valor.

Por ejemplo si tu formulario se envia por el metodo get, quedaria algo asi:

Código PHP:
Ver original
  1. <select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
  2.  
  3. <?php
  4. if ( isset($_GET['selnombre']) ){
  5. echo '<option value="-1" >&nbsp;Todos los nombres&nbsp;</option>';
  6. }else{
  7. echo  '<option value="-1" selected >&nbsp;Todos los nombres&nbsp;</option>';
  8. }
  9.  
  10.     $tablanombre = mysql_query("SELECT DISTINCT Nombre FROM escortschicas ORDER BY Nombre ASC");
  11.     while ($registronombre = mysql_fetch_array($tablanombre))
  12.  
  13.      if(  isset($_GET['selnombre']) and $_GET['selnombre']==$registronombre['Nombre'] ){
  14. $seleccionado = "selected";
  15. }else{
  16. $seleccionado = "";
  17. }
  18.  
  19.       if (isset($_GET["selnombre"])<>'-1'){
  20.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  21.         } elseif (isset($_GET["selordenar"])=='-1'){
  22.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  23.         } else {
  24.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
  25. }
  26.     mysql_free_result($tablanombre);
  27.         ?>
  28.     </select>


Ojo que solo puede haber un selected por cada select y tu estas imprimiendo un selected en varios options( en la parte del else{.... )
  #4 (permalink)  
Antiguo 24/03/2013, 08:05
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Mantener valor al refrescar pagina

Gracias a ambos arros y Rodrhigo.

arros con las sesiones ya lo tengo claro el problema es que ya utilizo sessiones para otras cosas y teniendo en cuenta que son bastantes selects no se si hay un limite para ir añadiendo mas sesiones.

Rodrhigo gracias por las molestias que te estan tomando he probado el código y de momento no me funciona porque no me rellena el select solo aparece la primera opcion la que esta por defecto al entrar en la pagina osea "Todos los nombres" y no me aparecen los nombres que deberian aparecerme de la base de datos, estoy intentando ver donde esta el problema.
Lo que me comentas de que solo haya un selected ya lo he eliminado de la linea 12 del codigo que puse al principio.
De momento no veo por que no me rellena el select y por lo tanto no puedo hacer pruebas.
¿Rodrhigo donde puede estar el problema?.
Un saludo
__________________
¿Hay algo mas hermoso que ayudar.?
  #5 (permalink)  
Antiguo 24/03/2013, 08:25
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Mantener valor al refrescar pagina

en la primera pagina te aparecen mas options? o solo te aparece el primero('todos los nombres')?

otra duda: con tu codigo imprimias mas de un options pero no seleccionaba el que querias, con mi codigo solo imprime el primero??? esi asi?

podrias ver el codigo de fuente y ver que esta imprimiendo mal o click secundario en el select y presionas inspeccionar elemento y te lleva directo al codigo para que veas si esta correcta la impresion.
  #6 (permalink)  
Antiguo 24/03/2013, 08:59
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Mantener valor al refrescar pagina

Rodrhigo en la primera pagina de entrada solo me aparece en el select "selnombre" ('todos los nombres').

La segunda pregunta lo siento no la entiendo ya que como comente al principio funciona bien solo que al pasar pagina con el paginador el select pasa a mostrar la opción por defecto ]('todos los nombres') en lugar de mostrar lo que habia seleccionado, no obstante la consulta sigue manteniendo lo seleccionado y muestra correctamente los datos aunque cambie de pagina con el paginador, solo es el select el que cambia lo que muestra.

Se me olvido decirte 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.
¿Es posible que el codigo que me has pasado no funcione por ese motivo?

Estoy haciendo pruebas pero no se como solucionarlo.

Gracias por tu paciencia y tu ayuda.
__________________
¿Hay algo mas hermoso que ayudar.?

Última edición por unexes; 24/03/2013 a las 09:19
  #7 (permalink)  
Antiguo 24/03/2013, 09:32
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Mantener valor al refrescar pagina

podrias mostrarme el codigo fuente desde donde comienza el select hasta donde termina el select.
Ctrl + U en tu navegador y busca el select y pega el codigo aca.
  #8 (permalink)  
Antiguo 24/03/2013, 14:11
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Mantener valor al refrescar pagina

Rodrhigo el select completo lo tienes al principio de este post es lo primero que he puesto.

Del código que tu me has puesto lo que impide que se rellene el select es este trozo de código en el cual en estos momentos estoy haciendo pruebas:
Código PHP:
Ver original
  1. if(  isset($_GET['selnombre']) and $_GET['selnombre']==$registronombre['Nombre'] ){
  2. $seleccionado = "selected";
  3. }else{
  4. $seleccionado = "";
  5. }
__________________
¿Hay algo mas hermoso que ayudar.?
  #9 (permalink)  
Antiguo 24/03/2013, 14:13
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Mantener valor al refrescar pagina

el codigo que te entrega tu navegador :P ..... cuando abres la pagina presionas Ctrl + U y extraes el <select>.......</select>
  #10 (permalink)  
Antiguo 24/03/2013, 14:39
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Mantener valor al refrescar pagina

Rodrhigo perdona no te entendi.

Este es el código que me entrega el Google Chrome al entrar con Ctrl+U del select
te he puesto toda la tabla que contiene el select:

Código:
<table width="185" height="30" border="0" cellspacing="5">
<tr>
<td align="left" class="Labelmenu">Seleccione por el nombre:
</td>
</tr>
  <tr>
  <td align="left">
     
<select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
 
<option value="-1" selected >&nbsp;Todos los nombres&nbsp;</option><option value=''  >&nbsp;&nbsp;</option>    </select>
    </td>
    </tr>
    <tr><td height="50"></td></tr>
    </table>
Espero te aclare el porque no funciona porque yo no lo veo.

Gracias por las molestias que te estas tomando, me comentas, un saludo
__________________
¿Hay algo mas hermoso que ayudar.?
  #11 (permalink)  
Antiguo 24/03/2013, 16:18
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Mantener valor al refrescar pagina

:D sip ese era el codigo que te pedia y si te fijas esta imprimiendo un option vacio
(<option value='' >&nbsp;&nbsp;</option> )

y la razon es porque al while le falta el corchete o como se llame ( { } )

y quedaria asi:

Código PHP:
Ver original
  1. <select name="selnombre" id="selnombre" class="Guias3"  Onchange="cargarContenido('ContenidoEscortsChicas.php')">
  2.  
  3. <?php
  4. if ( isset($_GET['selnombre']) ){
  5. echo '<option value="-1" >&nbsp;Todos los nombres&nbsp;</option>';
  6. }else{
  7. echo  '<option value="-1" selected >&nbsp;Todos los nombres&nbsp;</option>';
  8. }
  9.  
  10.     $tablanombre = mysql_query("SELECT DISTINCT Nombre FROM escortschicas ORDER BY Nombre ASC");
  11.  
  12.  
  13.  
  14.     while ($registronombre = mysql_fetch_array($tablanombre)){
  15.  
  16. if(  isset($_GET['selnombre']) and $_GET['selnombre']==$registronombre['Nombre'] ){
  17. $seleccionado = "selected";
  18. }else{
  19. $seleccionado = "";
  20. }
  21.  
  22.       if (isset($_GET["selnombre"])<>'-1'){
  23.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  24.         } elseif (isset($_GET["selordenar"])=='-1'){
  25.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  26.         } else {
  27.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
  28. }
  29.  
  30. }
  31.     mysql_free_result($tablanombre);
  32.         ?>
  33.     </select>

prueba y me avisas...


otra cosa: la funcion isset retorna true o false y tu tienes estas lineas:
if (isset($_GET["selnombre"])<>'-1')
y traducido sonaria asi: Si (verdadero o falso) es distinto de un texto( '-1' )....eso siempre es verdadero



mira:

Código PHP:
Ver original
  1. /*
  2.  
  3. prueba cambiar esta parte
  4.  
  5.  
  6. if (isset($_GET["selnombre"])<>'-1'){
  7.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  8.         } elseif (isset($_GET["selordenar"])=='-1'){
  9.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".$registronombre['Nombre']."</option>";
  10.         } else {
  11.             echo "<option value='".$registronombre['Nombre']."' $seleccionado >&nbsp;&nbsp;".(isset($_GET["selnombre"]))."</option>";
  12. }
  13.  
  14. por esto:
  15. */
  16.  
  17. echo "<option value='".$registronombre['Nombre']."' $seleccionado >".$registronombre['Nombre']."</option>";
  18.  
  19. /*hacen lo mismo .......*/

*la funcion isset comprueba que exista una variable X y no es para obtener el valor de la variable

Última edición por Rodrhigo; 24/03/2013 a las 16:30
  #12 (permalink)  
Antiguo 25/03/2013, 03:47
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Mantener valor al refrescar pagina

Rodrhigo
Gracias por tu ayuda, funciona perfectamente por lo menos a las pruebas a los que le he sometido, voy a hacer lo mismo con los otros select y supongo que todo ira bien.
Ya te comento si detectara algún error.

Gracias por tu ayuda, por tu tiempo, y por tu paciencia.

Un saludo, un amigo.
__________________
¿Hay algo mas hermoso que ayudar.?

Etiquetas: mysql, refrescar, registro, select, tabla, valor
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 21:56.