Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Si seleccionas X q se quede X en el label

Estas en el tema de Si seleccionas X q se quede X en el label en el foro de PHP en Foros del Web. Cómo hago para que si el usuario selecciona que aparezcan 10 elementos por página se quede el 10 y no el mensaje inicial de select ...
  #1 (permalink)  
Antiguo 24/07/2013, 08:07
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 10 meses
Puntos: 5
Si seleccionas X q se quede X en el label

Cómo hago para que si el usuario selecciona que aparezcan 10 elementos por página se quede el 10 y no el mensaje inicial de select one?

Este es mi código:

Código PHP:
Ver original
  1. <label for="selectinput1"><?php echo $arrMainPage[$MainPageCarsPerPage]["TextHeader"]; ?></label>
  2.                         <select id="CarsPerPage" onchange="Number_Cars_Page()" >
  3.                             <option><?php echo $arrMainPage[$MainPageSelectOne]["TextHeader"]; ?></option>
  4.                                     <?php
  5.                                     $rcsElectionNumber = $cardata->query($qryCarsPerPage);
  6.  
  7.                                     while ($row = $rcsElectionNumber->fetch_array(MYSQLI_BOTH)) {
  8.                                         ?><Option><?php echo $row["ElectionNumber"]; ?></option>
  9.                                     <?php
  10.                                     }
  11.                                    
  12.                                     $rcsElectionNumber->free_result();
  13.                                     ?>                     
  14.                         </select>

la paginación me funciona casi perfecta ya: cuando vas a seleccionar el número de elementos por páginas, se despliega el label y te aparece 10,20,30,40,50 y el mensaje inicial antes d q seleccione nada el usuario es "Select one..." , si el usuario selecciona 10 aparecen 10 elementos en la página y así con cualquiera d los números q he dicho pero en el label siempre se pone el mensaje inicial "Select one..." y lo que quiero es que si el usuario ha seleccionado 30 por ejemplo, en el label se quede fijo el número 30 y no Select one... otra vez.

Muchisimas gracias.
  #2 (permalink)  
Antiguo 24/07/2013, 08:30
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Si seleccionas X q se quede X en el label

yo no usaría el "select one", dejaría directamente un valor por defecto y luego cuando se cambie la selección y vuelva a pintar el select compararía el valor a mostrar con el que seleccionaste anteriormente y le pondría la opción selected <option value='50' selected>50</option>.

o bien el select one lo usaría solo la primera vez que cargo la página y una vez que hizo su selección no lo pintaría más, siguiendo luego el comportamiento que te escribí arriba.
  #3 (permalink)  
Antiguo 24/07/2013, 08:40
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 13 años
Puntos: 28
Respuesta: Si seleccionas X q se quede X en el label

me imagino que el problema es que te recarga toda la pagina y pierdes el valor seleccionado, entonces tienes que darle un valor a los option y lo comparas con el $_POST del select.

Otra opción seria hacerlo con ajax, de manera que recargas solo la lista y no toda la pagina
  #4 (permalink)  
Antiguo 24/07/2013, 09:34
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Si seleccionas X q se quede X en el label

Cita:
Iniciado por villah Ver Mensaje
yo no usaría el "select one", dejaría directamente un valor por defecto y luego cuando se cambie la selección y vuelva a pintar el select compararía el valor a mostrar con el que seleccionaste anteriormente y le pondría la opción selected <option value='50' selected>50</option>.

o bien el select one lo usaría solo la primera vez que cargo la página y una vez que hizo su selección no lo pintaría más, siguiendo luego el comportamiento que te escribí arriba.
Tienes razón, n tiene mucho sentido el "select one" inicial en ese label, y más cuando tengo que se cargue por defecto con 10 elementos, así que ya lo he borrado y el primero que me aparece es el 10.

Respecto a lo que me dices q haga, entiendo lo que me quieres decir, pero sinceramene no sé muy bien cómo hacerlo al venirme todos los datos d la base de datos. Probablemente esté pecando d bastante novato en esto d la programación, sorry.

Muchas gracias por tu respuesta.
  #5 (permalink)  
Antiguo 24/07/2013, 09:42
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Si seleccionas X q se quede X en el label

No se que tan avanzado estás pero tené en cuenta que la mejor opción es la que te comentó jamie_88, de utilizar ajax. De esa forma solo recargas la lista a mostrar y te olvidas del select ya que no se recarga la página completa sino solo la porción de la grilla de resultado.

Si lo sigue haciendo de la manera actual, seguramente cuando recargas la página le pasas como parámetro la cantidad de elementos a mostrar en la grilla. Bueno, ese es el valor que tenes que utilizar a la hora de repintar el select comparándolo con cada uno de las <option> y marcando como selected la que corresponda.

Espero haber sido claro y que te sirva
  #6 (permalink)  
Antiguo 25/07/2013, 02:41
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Si seleccionas X q se quede X en el label

Cita:
Iniciado por villah Ver Mensaje
No se que tan avanzado estás pero tené en cuenta que la mejor opción es la que te comentó jamie_88, de utilizar ajax. De esa forma solo recargas la lista a mostrar y te olvidas del select ya que no se recarga la página completa sino solo la porción de la grilla de resultado.

Si lo sigue haciendo de la manera actual, seguramente cuando recargas la página le pasas como parámetro la cantidad de elementos a mostrar en la grilla. Bueno, ese es el valor que tenes que utilizar a la hora de repintar el select comparándolo con cada uno de las <option> y marcando como selected la que corresponda.

Espero haber sido claro y que te sirva
Muchas gracias por la respuesta villah.

He intentado hacerlo con ajax, pero la verdad q no he usado casi nunca ajax y lo q he hexo no me ha funcionado, lo he eliminado y he puesto en la línea del <option> dentro del while esto:
Código HTML:
Ver original
  1. <Option value="$_GET['pagenum']"><?php echo $row["ElectionNumber"]; ?></option>
es decir, que le he dado a value el valor d "$_GET['pagenum']" lo cual tiene bastante sentido y debería d funcionar pero no me funciona

Código PHP:
Ver original
  1. $SetNumberOnPage = $NumberOnPage;
  2.  
  3. if (isset($_GET['pagenum'])){
  4.     $SetNumberOnPage = $_GET['pagenum'];
  5. }

Ves algo q n te cuadre por lo q no funcione?

Muchas gracias.
  #7 (permalink)  
Antiguo 25/07/2013, 06:11
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Si seleccionas X q se quede X en el label

deberías poner un código más completo para ver bien como lo has dejado y porque no te funciona, de todas maneras te dejo un intento de código para ver si te sirve.

$SetNumberOnPage = (isset($_GET['pagenum'])?$_GET['pagenum']:10; //si esta definido pagenum lo asigna, caso contrario pone 10 (primer valor del select)

echo "<select........>";
while (con las condiciones que hagan falta) {
$sele = ($row["ElectionNumber"] == $SetNumberOnPage)?"selected":"";
echo "<Option $sele value="<?php echo $row["ElectionNumber"]; ?>']"><?php echo $row["ElectionNumber"]; ?></option>"
}
echo "</select>";

este código sin dudas tenes que adaptarlo a tus necesidades, fijate el tipo de datos en las comparaciones. Lo que cambia respecto de lo que vos hiciste es que en el value de cada option del select pone el mismo valor que muestra y usa la variable $sele para, mediante la comparación, ver si es el que corresponde poner como seleccionado o no.

espero te sirva ahora
  #8 (permalink)  
Antiguo 25/07/2013, 07:19
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Si seleccionas X q se quede X en el label

Cita:
Iniciado por villah Ver Mensaje
deberías poner un código más completo para ver bien como lo has dejado y porque no te funciona, de todas maneras te dejo un intento de código para ver si te sirve.

$SetNumberOnPage = (isset($_GET['pagenum'])?$_GET['pagenum']:10; //si esta definido pagenum lo asigna, caso contrario pone 10 (primer valor del select)

echo "<select........>";
while (con las condiciones que hagan falta) {
$sele = ($row["ElectionNumber"] == $SetNumberOnPage)?"selected":"";
echo "<Option $sele value="<?php echo $row["ElectionNumber"]; ?>']"><?php echo $row["ElectionNumber"]; ?></option>"
}
echo "</select>";
Ya hice lo q me dijiste, pero sigue sin funcionarme , puse exactamente esto:

Código PHP:
Ver original
  1. <label for="selectinput1"><?php echo $arrMainPage[$MainPageCarsPerPage]["TextHeader"]; ?></label>
  2.                         <select id="CarsPerPage" onchange="Number_Cars_Page()"  >
  3.                                     <?php
  4.                                     $SetNumberOnPage = (isset($_GET['pagenum'])?$_GET['pagenum']:10);
  5.                                     echo "<select...>";
  6.                                     $rcsElectionNumber = $cardata->query($qryCarsPerPage);
  7.  
  8.                                     while ($row = $rcsElectionNumber->fetch_array(MYSQLI_BOTH)) {
  9.                                         $sele = ($row["ElectionNumber"] == $SetNumberOnPage)?"selected":"";
  10.                                         ?><Option $sele value="<?php echo $row["ElectionNumber"]; ?>"><?php echo $row["ElectionNumber"]; ?></option>
  11.                                     <?php
  12.                                     }
  13.                                     echo "</select>";
  14.                                                                        
  15.                                     ?>                     
  16.                         </select>

Intenté poner un if antes del primer isset, pero luego me di cuenta q no tenía mucho sentido, ademas no me funcionaba.
El primer echo del select que haces no lo entiendo muy bien, se supone que el código ya está dentro del select, no haría falta el echo no? aunque lo he quitado y tampoco funciona y con el último echo también pienso lo mismo.

Me pasa lo mismo con echo que pones antes del option, el option ya tiene un echo dentro, no es necesario otro antes no?, d todas formas ese si que tuve que quitarlo porque me daba error, si te fijas en el código q me pasaste en el option hay un " '] " q anda sin iniciación, y me daba error y lo tuve q borrar tb, no sé si es q se te ha colado, o lo q falta d antes es justo la parte pa q me funcione :)

La variable $sele dentro del option me la subraya de amarillo(Description Resource Path Location Type
Undefined attribute name (sele).)

De todas formas parece q algo si q hemos avanzado porque antes en el navegador arriba cuando cambiaba el número de elementos por página me aparecía esto :

http://localhost/........php?page=1&pagenum=' '

Como q estaba vacío el pagenum pero ahora si que me aparece el número que elija: pagenum=20, 30 o lo q sea ...pero no se queda reflejado en la pestaña d selección. Sigue apareciendo el 10. He pnsado que a lo mejor es 10 de la primera línea que pone por defecto pero lo he intentado modificar y no funciona.

Qué parte del código te ahce más falta? creo q he puesto todo lo que tengo de eso, dime y busco si se me ha escapado algo q no haya puesto por aqui.

Muchas gracias!!muy amablee!!Te agradezco mucho tus respuestas y tu paciencia cn mi desconocimiento :).
  #9 (permalink)  
Antiguo 25/07/2013, 07:35
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Si seleccionas X q se quede X en el label

respecto al echo del select y su cierre es como decís, no hace falta, lo puse para que te ubiques como debería quedar el código completo. respecto del del option, es verdad, es un error...

lo de $sele debe quedar

<Option <?php echo $sele; ?> value="<?php echo $row["ElectionNumber"]; ?>"><?php echo $row["ElectionNumber"]; ?></option>

fijate con este cambio y contame
  #10 (permalink)  
Antiguo 25/07/2013, 07:59
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Si seleccionas X q se quede X en el label

Cita:
Iniciado por villah Ver Mensaje
respecto al echo del select y su cierre es como decís, no hace falta, lo puse para que te ubiques como debería quedar el código completo. respecto del del option, es verdad, es un error...

lo de $sele debe quedar

<Option <?php echo $sele; ?> value="<?php echo $row["ElectionNumber"]; ?>"><?php echo $row["ElectionNumber"]; ?></option>

fijate con este cambio y contame
FUNCIONAAA!!!!

GRACIASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!!!!!!!!


Viva Argentinaaa!!! jejejeje

Encima tu apodo es cm el nuevo fichaje d mi equipo Villa!!Villa Maravilla!! :P

Da gusto encontrarse con gente como tu Martin, muchas gracias de verdad, para lo que quieras! si alguna vez vienes a España ya tienes casa!! jajaja

Voy a seguir con la page, a ver si avanzo, llevo un par de semanas intentando hacer unos filtros para que me cambie la página en función de lo que elija el usuario en los filtros y por lo visto tengo que usar json que no lo había usado nunca(por ahí he puesto algún post en javascript pero no ha triunfao muxo :P), ahí estoy intentando avanzar, pero con esto es una cosa más solucionada y una alegría más. Te lo agradezco mucho. Para lo q quieras, si quieres mi email o necesitas algo dimelo, aunq en programación no creo q te pueda ayudar yo mucho a ti, pero a lo mejor en otras cosas si jejeje.

Te doy el puntoo q es lo único q me dejan dar!!:P , estaría bien que se pudiera dar más d un punto :).

Un abrazooo!!!
  #11 (permalink)  
Antiguo 25/07/2013, 08:08
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Si seleccionas X q se quede X en el label

jjaaj, bueno, me alegra haber sido de utilidad. un abrazo

Etiquetas: label, quede, select, sql
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 10:47.