Foros del Web » Programando para Internet » Javascript »

Pasar checkbox paginacion

Estas en el tema de Pasar checkbox paginacion en el foro de Javascript en Foros del Web. Hola buenas tardes, Primero daros las gracias a todos por molestaros en leer mi pregunta. Os comento mi problema, estoy mostrando con php unos datos ...
  #1 (permalink)  
Antiguo 11/08/2011, 06:07
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 0
Exclamación Pasar checkbox paginacion

Hola buenas tardes,

Primero daros las gracias a todos por molestaros en leer mi pregunta.

Os comento mi problema, estoy mostrando con php unos datos de una base de datos, y como son muchos lo pagino para que no me ocupe toda la pagina, y este mas organizado, el problema lo tengo cuando pongo un checkbox al lado de todas las celdas, para que lo marque el usuario, ya que cuando va a otra pagina el usuario y selecciona otra casilla si vuelve a la anterior pagina, no se le queda marcado logicamente, y leido muchos temas sobre esto en el foro, pero ninguno me aclara bien mis dudas, ya que he visto respuestas de que se pasen las variables en un campo hidden o por $_POST, pero en ninguna se me vuelve a quedar marcada la casilla. y yevo ya varios dias asi.... . El codigo que tengo ahora mismo es este:

Código HTML:
<body bgcolor="#FFFFFF" LINK="#333"  VLINK="#333" ALINK="#333">
<font face="arial, verdana, sans-serif" color="#333">
<?php 

$base="peliculas"; 
$con=mysql_connect('localhost', 'root', ''); 
mysql_select_db($base,$con); 

if (!isset($pg)) 
$pg = $_GET['pg'];; // $pg es la pagina actual 
$cantidad=3; // cantidad de resultados por página 
$inicial = $pg * $cantidad; 


$pegar = "SELECT nombre, estreno, resumen from peliculas order by nombre asc LIMIT $inicial,$cantidad"; 
$cad = mysql_db_query($base,$pegar) or die (mysql_error()); 

$contar = "SELECT * FROM peliculas ORDER BY nombre"; 
$contarok= mysql_db_query($base,$contar); 
$total_records = mysql_num_rows($contarok); 
$pages = intval($total_records / $cantidad); 
	
	?>
	
<table height="522" width="846">

  <tr>
	  <td width="561">
	   
		  <?
				while($fila = mysql_fetch_array( $cad  ))
					
					{
					
				?>
				
				<tr>
					  <td width="69" >
							<img src="/imagenes/peliculas/<? echo $fila['nombre'];?>.jpg" width="69" height="93" alt="<? echo $fila['nombre'];?>" /> 
					</td>
					 <td width="242" height="24">
						<div id="enlace1" align="right"><font size="1"><a target="_blank" href="resumenes/<? echo $fila['nombre'];?>.php"><? echo $fila['nombre'];?></a></font></div>
					</td>
					 <td width="20">
					  <input type="checkbox" name="dvd[]" value="<? echo $fila['nombre'];?>" />
					</td>
				</tr>
		  <?
					}
	?>
	</td>

  </tr>
</table>	
	
	
<?
// Creando los enlaces de paginación 
echo "<p>"; 
if ($pg <> 0) 
{ 
$url = $pg - 1; 
echo "<a href='prueba.php?pg=".$url."'>« Anterior</a> "; 
} 
else { 
echo " "; 
} 

for ($i = 0; $i<($pages + 1); $i++) { 
if ($i == $pg) { 
echo "<font face=Arial size=2 color=ff0000><b> $i </b></font>"; 
} 
else { 
echo "<a href='prueba.php?pg=".$i."'>".$i."</a> "; 
} 
}  

if ($pg < $pages) { 
$url = $pg + 1; 
echo "<a href='prueba.php?pg=".$url."'>Siguiente »</a>"; 
} 
else { 
echo " "; 
} 
echo "</p>"; 

// Cerrar la conexión con la BD
	mysql_close($con);	
?> 
</body>
</html> 
Alguien me podria decir como hacerlo ??? supongo que la solucion estara en java....

Un saludo y gracias de nuevo.

Última edición por angelmadrid; 12/08/2011 a las 05:36
  #2 (permalink)  
Antiguo 12/08/2011, 05:38
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 0
Pasar checkbox paginacion

alguien tiene alguna idea de como realizarlo??? aun sigo igual de perdio...
  #3 (permalink)  
Antiguo 12/08/2011, 06:12
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Pasar checkbox paginacion

hola angel,
te paso un ejemplo para almacenar checks en una página y luego recuperarlos al volver:
Código Javascript:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml" >
  2. <head>
  3.     <title>Untitled Page</title>
  4. <script type="text/javascript">
  5. function guardar()
  6. {
  7.     document.getElementById('hd_check').value='';
  8.     var check = document.getElementsByTagName('input');
  9.     for(i=0;i<check.length;i++)
  10.     {
  11.         if(check[i].type=='checkbox')
  12.         {
  13.             if(check[i].checked)
  14.                 document.getElementById('hd_check').value += check[i].id + "#";
  15.         }
  16.     }
  17. }
  18. function cargar()
  19. {
  20.     var hd_check = document.getElementById('hd_check').value.split('#');
  21.     var check = document.getElementsByTagName('input');
  22.     for(i=0;i<check.length;i++)
  23.     {
  24.         if(check[i].type=='checkbox')
  25.         {
  26.             for(j=0;j<hd_check.length;j++)
  27.             {
  28.                 if(hd_check[j] == check[i].id)
  29.                     document.getElementById(check[i].id).checked;
  30.             }
  31.         }
  32.        
  33.     }
  34. }
  35. </script>
  36. </head>
  37. <body onload="cargar()">
  38.     <form id="form1" action="otra_pagina.html" method="post" >
  39.     <div>
  40.     <input type="checkbox" id="ch1"/>uno
  41.     <input type="checkbox" id="ch2"/>dos
  42.     <input type="checkbox" id="ch3"/>tres
  43.     <input type="checkbox" id="ch4"/>cuatro
  44.     <input type="submit" id="bt_sb" onclick="guardar()" value="otra_pagina" />
  45.     <input type="hidden" value="" id="hd_check" />
  46.     </div>
  47.     </form>
  48. </body>
  49. </html>

si te funciona no te resultará dificil adaptarlo a lo tuyo. ten en cuenta que trabaja con IDS, te lo digo porque hay gente que no los usa, y yo creo que no debería dejar de usarlos, jejejeje.

saludos.
  #4 (permalink)  
Antiguo 12/08/2011, 10:36
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar checkbox paginacion

hola ceSharp, primero gracias por tu respuesta, y lo he puesto como decias y no me ha dado resultado, y lo he intentado integrar en mi codigo y tampoco XD ya estoy desesperaicoo
  #5 (permalink)  
Antiguo 16/08/2011, 02:11
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Pasar checkbox paginacion

hola angel,
ya ha pasado el puente y no sé si yo lo habrás podido solucionar. Exactamente dónde falla? suelo probar todo o casi todo lo que pongo aqué en IE, FireFox y Chrome, porque ya sabes que hay cosas que van en un navegador y en otro no.
No sé si el fallo está en que tu página no navega al sitio adecuado, es decir, mira:

Código Javascript:
Ver original
  1. <form id="form1" action="otra_pagina.html" method="post" >

aquí le estamos diciendo que cuando haya un submit, el navegador vaya a "otra_pagina.html", naturalmente si tú no tienes una página que se llame así se pierde todo y no va a funcionar. Ahí tendrías que poner tú la página donde quieres que vaya.

ese puede ser un posible fallo, si no es eso nos cuentas...

saludos.
  #6 (permalink)  
Antiguo 16/08/2011, 03:49
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar checkbox paginacion

Cita:
Iniciado por ceSharp Ver Mensaje
hola angel,
ya ha pasado el puente y no sé si yo lo habrás podido solucionar. Exactamente dónde falla? suelo probar todo o casi todo lo que pongo aqué en IE, FireFox y Chrome, porque ya sabes que hay cosas que van en un navegador y en otro no.
No sé si el fallo está en que tu página no navega al sitio adecuado, es decir, mira:

Código Javascript:
Ver original
  1. <form id="form1" action="otra_pagina.html" method="post" >

aquí le estamos diciendo que cuando haya un submit, el navegador vaya a "otra_pagina.html", naturalmente si tú no tienes una página que se llame así se pierde todo y no va a funcionar. Ahí tendrías que poner tú la página donde quieres que vaya.

ese puede ser un posible fallo, si no es eso nos cuentas...

saludos.
Hola ceSharp, si la pagina que tengo existe (es la misma), ya que estoy realizando paginacion y los datos que me refiero que se pierden es cuando pagino, ya que se muestran tres registros de la base de datos en cada pagina y cuando voi por ejemplo a la pagina dos, y selecciono o sin seleccionar y vuelvo a la pagina anterior, los otros registros que marque , no se han quedado marcados y al ser todos los datos que muestro de una base de datos, nose como realizarlo, para que siempre se queden marcados los checkbox...

graciasss
  #7 (permalink)  
Antiguo 16/08/2011, 04:34
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Pasar checkbox paginacion

vale,
si es una única página es normal que no te llegue a funcionar del todo lo que yo te puse. bueno, no sé como lo tendrás montado para hacer la paginación, pero las funciones de guardar() y cargar() que te puse te siguen valiendo.
me imagino que iras mostrando una parte u otra del total de checks que tienes en página, no? y unos botones para avanzar/retroceder en la paginación.

sería tan sencillo como llamar a guardar() y cargar() en tus botones de paginación:

Código Javascript:
Ver original
  1. <input type="button" value="siguiente" onclick="guardar();cargar();" />
input button o lo que tengas, el caso es que en el evento onclick hagas el guardado de checks marcados y la carga de checks con el mismo input hidden que te puse en el anterior ejemplo.

saludos.
  #8 (permalink)  
Antiguo 16/08/2011, 05:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar checkbox paginacion

pues hoy estare negado con la programacion... porque no me sale nadaa he intentado adaptar tu codigo que me has dado a lo mio y no se quedan guardados, no me hagas mucho caso, pero el problema no podria estar en la paginacion que realizao?? ya que la paginacion que hago va a traves de enlaces, sin pulsar ningun boton del formulario, directamente a los enlaces, el codigo que tenga en la paginacion es este:

Código HTML:

<form name="peliculas" action="elijedd.php" method="get" onSubmit="return valida_envia()">
<table height="522" width="846">

  <tr>
	  <td width="561">
	   
		  <?
				while($fila = mysql_fetch_array( $cad  ))
					
					{
					
				?>
				
				<tr>
					  <td width="69" >
							<img src="/imagenes/peliculas/<? echo $fila['nombre'];?>.jpg" width="69" height="93" alt="<? echo $fila['nombre'];?>" /> 
					</td>
					 <td width="242" height="24">
						<div id="enlace1" align="right"><font size="1"><a target="_blank" href="resumenes/<? echo $fila['nombre'];?>.php"><? echo $fila['nombre'];?></a></font></div>
					</td>
					 <td width="20">
					  <input type="checkbox" name="dvd[]" value="<? echo $fila['nombre'];?>" />
					</td>
				</tr>
		  <?
					}
	?>
	</td>
<td><input name="submit" type="submit" class="Estilo4" onclick= "guardar();cargar();" value="Enviar"; />
				</td>
			
	      </table>
		</form> 

  </tr>
</table>	
	
	
<?
// Creando los enlaces de paginación 
echo "<p>"; 
if ($pg <> 0) 
{ 
$url = $pg - 1; 
echo "<a href='prueba.php?pg=".$url."'>« Anterior</a> "; 
} 
else { 
echo " "; 
} 

for ($i = 0; $i<($pages + 1); $i++) { 
if ($i == $pg) { 
echo "<font face=Arial size=2 color=ff0000><b> $i </b></font>"; 
} 
else { 
echo "<a href='prueba.php?pg=".$i."'>".$i."</a> "; 
} 
}  

if ($pg < $pages) { 
$url = $pg + 1; 
echo "<a href='prueba.php?pg=".$url."'>Siguiente »</a>"; 

} 
else { 
echo " "; 
} 
echo "</p>"; 

// Cerrar la conexión con la BD
	mysql_close($con);	
?> 
</body>
</html>

ya estoy por dejar que se muestren todos los datos en un pagina y que utilicen la el raton para ver todos los registross jajajaja
  #9 (permalink)  
Antiguo 16/08/2011, 05:37
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Pasar checkbox paginacion

por lo que veo en tu código haces un while donde van saliendo los checkbox's. Pero no tienen ID.Las funciones JS de cargar y guardar trabajan con ID's, si no los tienen no van a poder guardar y cargar los marcados o no.

las funciones que te puse recogen por etiqueta todos los valores de la página (getElementByTagName) en este caso la etiqueta 'INPUT', luego en un bucle va mirando uno a uno los de tipo 'CHECKBOX' si está marcado o no. Si está marcado recoge el ID del check y lo guarda en el hidden. Evidente si no hay ID graba un vacio o directamente falla, como me pasa a mí si quito los ID de los checks.

puedes cambiar en las funciones de guardar() y cargar() que recoja por NAME, y no por ID:

Código Javascript:
Ver original
  1. function guardar()
  2. {
  3. ...
  4. document.getElementById('hd_check').value += check[i].name + "#";
  5. ...
  6. }
  7. function cargar()
  8. {
  9. ...
  10. document.getElementById(check[i].name).checked;
  11. ...
  12. }
o también si quieres, cuando construyes los check en tu while, añade también que meta un ID al check con algún autonumérico, para que no se repitan, y ya con eso los guardara y cargará bien.

muchisimas veces el ID de un objeto es vital para diferenciarlo de otro. el name también te vale, pero normalmente todos los editores te alertan de que dos objetos tienen el mismo ID, pero no que tengan el mismo NAME, pues esta propiedad se puede repetir.

saludos.
  #10 (permalink)  
Antiguo 16/08/2011, 10:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Pasar checkbox paginacion

Pues nada por mucho que lo intento me sigue saliendo igual es decir con los check sin que se queden marcados, este es el codigo que tengo , incoorporando el tuyo

Código HTML:
<script type="text/javascript">
function guardar()
{
	
    document.getElementById('hd_check').value='';
    var check = document.getElementsByTagName('input');
    for(i=0;i<check.length;i++)
    {
        if(check[i].type=='checkbox')
        {
            if(check[i].checked)
                document.getElementById('hd_check').value += check[i].id + "#";
        }
    }
}
function cargar()
{
    var hd_check = document.getElementById('hd_check').value.split('#');
    var check = document.getElementsByTagName('input');
    for(i=0;i<check.length;i++)
    {
        if(check[i].type=='checkbox')
        {
            for(j=0;j<hd_check.length;j++)
            {
                if(hd_check[j] == check[i].id)
                    document.getElementById(check[i].id).checked;
            }
        }
        
    }
}
</script>

<?php 



$base="peliculas"; 
$con=mysql_connect('localhost', 'root', ''); 
mysql_select_db($base,$con); 

if (!isset($pg)) 
$pg = $_GET['pg'];; // $pg es la pagina actual 
$cantidad=3; // cantidad de resultados por página 
$inicial = $pg * $cantidad; 


$pegar = "SELECT nombre, estreno, resumen from peliculas order by nombre asc LIMIT $inicial,$cantidad"; 
$cad = mysql_db_query($base,$pegar) or die (mysql_error()); 

$contar = "SELECT * FROM peliculas ORDER BY nombre"; 
$contarok= mysql_db_query($base,$contar); 
$total_records = mysql_num_rows($contarok); 
$pages = intval($total_records / $cantidad); 
	
	?>
	<form id="form1" action="123.php" method="post" >
<table height="522" width="846">

  <tr>
	  <td width="561">
	   
		  <?
				while($fila = mysql_fetch_array( $cad  ))
					
					{
					
				?>
				
				<tr>
					  <td width="69" >
							<img src="/imagenes/peliculas/<? echo $fila['nombre'];?>.jpg" width="69" height="93" alt="<? echo $fila['nombre'];?>" /> 
					</td>
					 <td width="242" height="24">
						<div id="enlace1" align="right"><font size="1"><a target="_blank" href="resumenes/<? echo $fila['nombre'];?>.php"><? echo $fila['nombre'];?></a></font></div>
					</td>
					 <td width="20">
					  <input type="checkbox" name="dvd[]" value="<? echo $fila['nombre'];?>" id="<? echo $fila['fecha'];?>" />
					  
					  <input type="hidden" value="" id="hd_check" />
					</td>
				</tr>
		  <?
					}
	?>
	<input type="submit" id="bt_sb" onclick="guardar()" value="otra_pagina"  onclick="guardar();cargar();" />
	</form>
	</td>

  </tr>
</table>	
	
	
<?
// Creando los enlaces de paginación 
echo "<p>"; 
if ($pg <> 0) 
{ 
$url = $pg - 1; 
echo "<a href='123.php?pg=".$url."' onClick=\"guardar();cargar();\">« Anterior</a> "; 
} 
else { 
echo " "; 
} 

for ($i = 0; $i<($pages + 1); $i++) { 
if ($i == $pg) { 
echo "<font face=Arial size=2 color=ff0000><b> $i </b></font>"; 
} 
else { 
echo "<a href='123.php?pg=".$i."' onClick=\"guardar();cargar();\">".$i."</a> "; 
} 
}  

if ($pg < $pages) { 
$url = $pg + 1; 
echo "<a href='123.php?pg=".$url."' onClick=\"guardar();cargar();\">Siguiente »</a>"; 
} 
else { 
echo " "; 
} 
echo "</p>"; 

// Cerrar la conexión con la BD
	mysql_close($con);	
?> 
</body>
</html> 
Un saludo y gracias por tu tiempo

Etiquetas: checkbox, html, paginacion, pasar, php
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 23:55.