Foros del Web » Programando para Internet » PHP »

paginación y submit al mismo tiempo

Estas en el tema de paginación y submit al mismo tiempo en el foro de PHP en Foros del Web. Hola a todos, tengo una página donde muestro un número elevado de registros obtenidos en una consulta. He creado una fila de enlaces, debajo de ...
  #1 (permalink)  
Antiguo 19/05/2011, 01:59
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 1
paginación y submit al mismo tiempo

Hola a todos,

tengo una página donde muestro un número elevado de registros obtenidos en una consulta. He creado una fila de enlaces, debajo de esta tabla de registros para paginarlos y mostrarlos de 10 en 10.

La paginación funciona bien y cada enlace tiene un href que recarga la propia página, modificando la consulta y mostrando los 10 registros adecuados.

Un enlace de paginacion es:

<a href="mipagina.php?pagina=X"></a>
Luego, dependiendo del valor X, se genera la consulta mostrando unos registros u otros.

Hasta aquí bien, pero ahora, los registros que muestro tienen un check que puedo marcar y mi problema es que no puedo paginar manteniendo los checks marcados.

Los checks marcados se almacenan en un array llamado idUsers.
<td><input type="checkbox" name="idUsers[]" value="<? echo $usuarios['idUsuario']></td>

El tema es que, si yo hago submit, pues recupero los checks almacenados en el array pero, si pagino, entonces no hago submit porque estoy cargando la página directamente desde cada enlace de paginación y no sé cómo mantener los checks en este caso. Una posible solución que se me ocurre sería almacenar el array de checks en una variable de sesión pero no sé si esto es óptimo o lógico.

¿Cual es la mejor manera de implementar una paginación de registros con checks?
Necesito poder mantener los checks marcados mientras voy paginando...

La última opción sería mostrar todos los registros con un scroll y así, sólo haría submit y siempre accedería a los checks marcados pero me gustaba el hecho de poder paginar.

Un saludo.
  #2 (permalink)  
Antiguo 19/05/2011, 03:47
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: paginación y submit al mismo tiempo

Es un poco jodido porque, tal como comentas, el marcado se pierde con el enlace. Quizás si dotas a esos enlaces con la capacidad para hacer un $_POST, podrías lograr el objetivo. La forma más sencilla es con JQuery, además de accesible porque no es necesario añadir el atributo onclick. Con una pequeña función inicial capturas clases, id, etc. y le asignas la característica que desees.

Otra vía que se me ocurre es la de establecer cookies, pero creo que igual debes hacerlo con javascript porque (dado que la paginación se hace mediante enlaces) es necesario que capture los checks en tiempo real.

Otra opción también tiene que ver con javascript y consiste en construir una paginación "falsa" como ésta: http://www.frequency-decoder.com/dem...ited/paginate/ . Nunca me han gustado los scripts que cargan todo de golpe, pero en tu caso podría servirte (por ejemplo, si el conjunto de datos no supera las 20 o 30 páginas).

Mi recomendación es que le metas JQuery y conviertas esos enlaces en inputs de tipo submit.
  #3 (permalink)  
Antiguo 19/05/2011, 04:02
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: paginación y submit al mismo tiempo

Gracias metacortex,

pero, ¿por qué no utilizar una variable de sesión que almacene el array de checks marcados?, ¿se podría hacer esto?

No tengo mucha idea de JQuery y no sé cómo hacer para que cada enlace haga submit,

¿podrías, por favor, mostrarme un pequeño código de ejemplo?

En el caso de la variable de sesión,

Si tengo el listado de registros con los checks así:

foreach ($resultadoUsuarios as $usuarios) {
<td><input type="checkbox" name="idUsers[]" value="<? echo $usuarios['idUsuario']></td>
}


Tal vez podría pillar el array y almacenarlo de esta forma
session_start();
$_SESSION['checks'] = idUsers[];


Y así tener siempre disponible el array con cada recarga.
No sé si esto es correcto.

¿Cómo sería con jquery? ¿Qué le añado al enlace de paginación?
<a href="mipagina.php?pagina=X"></a>
  #4 (permalink)  
Antiguo 19/05/2011, 04:28
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: paginación y submit al mismo tiempo

No le añades nada al enlace, es lo bueno de este framework. Tal como te mencioné sólo es cuestión de escribir una función inicial. En la web sobran ejemplos. Si no los consigues te enlazo uno dentro de un rato.

Es posible que el asunto se solucione con PHP pero, siéndote honesto, prefiero 1000 veces un enlace que tenga comportamiento de botón, me llene un input hidden con los checkboxes marcados en cada página, y que al final pueda enviarlos sin problemas a la BD.

Si te sirve de algo, hasta hace sólo unos días sólo usaba JQuery para efectos, drag-drop, resize, slide y todas esas cositas de mariquita :D. El miércoles antepasado (es decir, 8 días atrás) comencé a documentarme sobre éste y practicar como esclavo. Te cuento que desde este martes he estado manipulando la base de datos con JQuery, serializando, invocando funciones callback (de PHP) y otras tareas complejas que nunca imaginé que podría construir ¡Y todo sin recargar la página!, además de que tiene unas funciones tipo beforeSend(), success() y error() que te permiten generar el html que quieras para cada evento. De verdad es una herramienta muy útil si la combinas con lenguaje dinámico.


PD: algunos ejemplos con la función click().
  #5 (permalink)  
Antiguo 19/05/2011, 05:08
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: paginación y submit al mismo tiempo

No me aclaro metacortex...

estoy tratando de asignarle al enlace el comportamiento de botón indicándole en el click que ejecute el submit pero no me hace caso...
Es como si se volviera loco al tener el href y el submit a la vez en el mismo enlace...

<a href="mipagina.php?pagina=X" onclick="document.forms[0].submit()">

No hace el submit y es porque no puede hacer las dos cosas a la vez... O ejecuta el href pasando la pagina por GET o hace el submit pasando el formulario por POST.. pero no consigo que haga ambas cosas...

¿Qué hago mal?
Si utilizo el Jquery que dices, y me creo una función tal que así:

$('#other').click(function() {
$('#target').submit();
});

¿Cómo llamo a esta función desde el enlace?
¿Estaría bien escrita?
¿Me pasaría la página por GET al mismo tiempo que lanza el submit?

Un saludo.
  #6 (permalink)  
Antiguo 19/05/2011, 05:12
 
Fecha de Ingreso: mayo-2011
Ubicación: La Luna
Mensajes: 84
Antigüedad: 12 años, 11 meses
Puntos: 6
Respuesta: paginación y submit al mismo tiempo

para llamar a tu funcion le asignas un id a tu enlace <a id="prueba"

y luego lo capturas

$("#prueba").click
etc etc
  #7 (permalink)  
Antiguo 19/05/2011, 05:27
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: paginación y submit al mismo tiempo

Tarzan, tú relajarte.

Te aconsejo tomarlo con calma al principio porque no lo vas a aprender de la noche a la mañana. Si no estás muy apurado con ese trabajo, ciérralo, olvídate de él por hoy, bájate los ejemplos de JQuery que hay por la red y juega un poco con ellos desde tu localhost. Créeme que el premio final es grande.

Además se trata de un framework. Sólo unos días practicando y pronto estarás haciendo cosas buenas.

Te dejo el enlace a la documentación oficial: http://docs.jquery.com/Main_Page

En principio léete la sección "Get started" y luego, cuando estés practicando, consulta siempre "JQuery API reference". Afortunadamente es un recurso que cuenta con un montón de artículos, tutos, guías y trucos por todos lados, incluyendo los escritos en nuestro idioma.

No le busques solución específica a ese problema hoy por la vía del JQuery, porque si lo haces te aseguro que terminarás el día cansado, neutralizado, agotado y sin haber aprendido nada. Comprende primero el script y luego impleméntalo.

Etiquetas: submit
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 09:05.