Foros del Web » Programando para Internet » PHP »

Checkbox con sesiones y paginado

Estas en el tema de Checkbox con sesiones y paginado en el foro de PHP en Foros del Web. Hola, Tengo la siguiente página: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original if ( isset ( $_SESSION [ 'activo' ] ) != 1 ) {   ...
  #1 (permalink)  
Antiguo 21/06/2012, 15:50
Avatar de Lerolero  
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Checkbox con sesiones y paginado

Hola,

Tengo la siguiente página:
Código PHP:
Ver original
  1. if (isset($_SESSION['activo'])!=1){
  2.   echo '<script>document.location.href="index.php?submod=inicio";</script>';
  3. }
  4. $obj_agenda = new sQuery;

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  function accion(){
  3.   var cad="";
  4.   var separador="";
  5.   for ( x=0; x < document.form2.elements.length; x++)
  6.   {
  7.     if(window.document.form2.elements[x].checked)
  8.     {
  9.         cad+=separador;
  10.         cad+=window.document.form2.elements[x].value;
  11.         separador=";";
  12.        
  13.     }
  14.   }
  15.  
  16.     window.opener.document.form1.Arraycorreos.value = cad;
  17.     window.close();
  18.   }
  19.  
  20. function seleccionar_todo(){
  21.    for (i=0;i<document.form2.elements.length;i++)
  22.       if(document.form2.elements[i].type == "checkbox")
  23.          document.form2.elements[i].checked=1
  24. }
  25.  
  26. function deseleccionar_todo(){
  27.    for (i=0;i<document.form2.elements.length;i++)
  28.       if(document.form2.elements[i].type == "checkbox")
  29.          document.form2.elements[i].checked=0
  30. }
  31.  
  32.    
  33.    </script>
Código HTML:
Ver original
  1. <div id="main">
  2.               <a name="TemplateInfo"></a>
  3.               <h1>Correos de contactos</h1>
  4.             </div>
  5. <div align="center" >
  6.   <!-- Se crea el formulario -->
  7.   <!-- Nombre del formulario, action direccionado a la misma pagina y por metodo post-->
  8. <form name="form2" method="POST" action="<?php $_SERVER['REQUEST_URI'] ?>">

Código PHP:
Ver original
  1. $request= 'SELECT t_contacto.id
  2.                         FROM t_contacto, t_empresa
  3.                        WHERE t_contacto.activo_id=2
  4.                          AND t_empresa.id = t_contacto.empresa_id  
  5.                     ORDER BY cne_nombre'; //Ejecutamos la consulta
  6.         $consul = $obj_agenda->executeQuery($request);
  7.         $prueba= mysql_num_rows($consul); //Contamos el n&uacute;mero de filas de la consulta
  8.         $rows_by_page = 15;
  9.         $last_page = ceil($prueba/$rows_by_page); //Calculamos el número de páginas
  10.  
  11.         if(isset($_GET['page'])){ //Comprobamos si se ha seleccionado alguna página en concreto
  12.                  $page = $_GET['page'];
  13.         }else{
  14.                  $page = 1; //Si no se ha seleccionado nada la p&aacute;gina es uno por defecto
  15.               }
  16.          $limit = 'LIMIT ' .($page - 1) * $rows_by_page .',' .$rows_by_page; //Establesco el limite
  17.          
  18.             $query = 'SELECT t_contacto.id, cne_nombre, cne_apellido, cne_email_corporacion, cne_email_personal
  19.                         FROM t_contacto, t_empresa
  20.                        WHERE t_contacto.activo_id=2
  21.                          AND t_empresa.id = t_contacto.empresa_id
  22.                     ORDER BY cne_nombre '.$limit;  
  23.                     ;
  24.                  $result = $obj_agenda->executeQuery($query);
  25.                  // Recorremos todos los registros que haya soltado el query
  26.                  echo '<table class="lista" >
  27.              <tr>
  28.                <th align="center">CONTACTO</th>
  29.                 <th align="center">CORREO CORPORACIÓN</th>
  30.                 <th align="center">CORREO PERSONAL</th>
  31.                 </tr><tr><td colspan="3"  align="center">
  32.               <a href="javascript:seleccionar_todo()">Marcar todos</a> |
  33. <a href="javascript:deseleccionar_todo()">Marcar ninguno</a></td> </tr>';
  34.                   while($row = mysql_fetch_array($result)) {
  35.                      echo'<tr><td>'.$row['cne_nombre'].' '.$row['cne_apellido'].'</td>';
  36.                     if ($row['cne_email_corporacion'] == "")
  37.                     {
  38.                         echo '<td align="center" >*****</td>';
  39.                     }
  40.                     else
  41.                     {
  42.                    
  43.                      echo '<td><input type="checkbox" name="correocorporacion[]"
  44.                       value="'.$row['cne_email_corporacion'].'"/>'.$row['cne_email_corporacion'].'</td> ';
  45.                 }
  46.                    
  47.                    
  48.                    
  49.                         if ($row['cne_email_personal'] == "")
  50.                     {
  51.                         echo '<td align="center" >*****</td>';
  52.                     }
  53.                     else
  54.                     {
  55.                 echo'<td><input type="checkbox" name="correopersonal[]"
  56.                       value="'.$row['cne_email_personal'].'"/>'.$row['cne_email_personal'].'</td></tr>';
  57.                     }
  58.                    
  59.                            }
  60.                 echo '<tr><td align="center" colspan="3">';                
  61.         if($page>1){ //Si la p&aacute;gina es mayor que uno, se emprimen los links y se les pasa la p&aacute;gina
  62.                        //y la variable se sesi&oacute;n
  63.                 echo '<a href="index.php?submod=email_contactos&page= 1 "> << FIRST </a>
  64.                      <a href="index.php?submod=email_contactos&page='.($page - 1).'"> < PREV </a>';
  65.         }else{
  66.                 echo '<< FIRST < PREV ';
  67.              }
  68.  
  69.                 echo 'Pagina '.$page.' de '.$last_page;
  70.         if($page<$last_page){
  71.                 echo '<a href="index.php?submod=email_contactos&page='.($page + 1).'"> NEXT > </a>
  72.                       <a href="index.php?submod=email_contactos&page='.$last_page.'"> LAST >> </a>';
  73.         }else{
  74.                 echo' NEXT > LAST >> </tr>';
  75.              }
  76.                 echo '</table>';
Código HTML:
Ver original
  1. <input type="button" value="Aceptar" onclick="accion()">
  2. </form>  <!-- Cierro el formulario -->
  3. </div>

Esta página la abro desde una página principal y al seleccionar correos de la lista de checkboxes, los concatena y los agrega a un textarea, mi problema es que al pasar a otra página pierdo los checkbox que he seleccionado y no los agrega al textarea, He pensado pasar los checkbox seleccionados con variables de sesión y al final agregarlos, pero estoy algo confundida con eso. Espero me puedan ayudar!!
  #2 (permalink)  
Antiguo 21/06/2012, 16:41
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Respuesta: Checkbox con sesiones y paginado

si cambias de pagina haciendo el post, tendrias que recuperarlos con ese post.


Si cambias de pagina sin hacer post, lo unico que se me ocurre es que, cada vez que marques/desmarques un checkbox, con ajax lo guardes en alguna variable de sesion como indicas, y al cargar una pagina donde esten los checkbox, compruebes estas variables de sesion para que, si estan activas, las marques.
__________________
» Presupuesto Pagina Web
  #3 (permalink)  
Antiguo 22/06/2012, 07:51
Avatar de Lerolero  
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Checkbox con sesiones y paginado

Esto lo he agregado de acuerdo a lo que vi en este link --->"http://www.forosdelweb.com/f18/guardando-checkbox-marcados-lista-paginada-388346/"

Código PHP:
Ver original
  1. if(isset($_SESSION['correocorporacion'])){ //Si esta definida la sesión
  2.     $correos = $_SESSION['correocorporacion'];
  3.     /*Si esta definido y tiene un valor distinto a null*/
  4.     if(isset($_POST['correocorporacion']) && !empty($_POST['correocorporacion'])){
  5.         $temporal = $_POST['correocorporacion']; //Se crea una variable temporal igual a los datos del checkbox
  6.         /*Si esta definido y tiene un valor distinto a null*/
  7.         if(isset($_SESSION['marcado']) && !empty($_SESSION['marcado'])){
  8.          /* Se escoge la opcion que estaba marcada y ya no esta*/
  9.             $NoMarcado = array_diff_assoc($_SESSION['marcado'], $temporal);
  10.             foreach($NoMarcado as $key => $valor){
  11.                  if(isset($correos[$valor]))
  12.                     unset($correos[$valor]); //Se eliminan los checkbox que ya no estan marcados
  13.             }
  14.             unset($NoMarcado);
  15.             unset($_SESSION['marcado']);
  16.         }
  17.         foreach($temporal as $key => $valor)
  18.             $correos[$valor] = $valor;
  19.         unset($temporal);
  20.     }else{ //Si no se pasan variables por post, no hay checkbox marcadoss en la ultima página
  21.         if(isset($_SESSION['marcado']) && !empty($_SESSION['marcado'])){
  22.             $NoMarcado = $_SESSION['marcado']; //Se escogen todas las opciones que estaban marcadas
  23.             foreach($NoMarcado as $key => $valor){
  24.                  if(isset($correos[$valor]))
  25.                     unset($correos[$valor]); //Se eliminan los checkbox que ya no estan marcados
  26.             }
  27.             unset($NoMarcado);
  28.             unset($_SESSION['marcado']);
  29.         }
  30.     }
  31.     $_SESSION['correocorporacion'] = $correos;
  32. }else{ //Si no existe no hay checkbox marcados  
  33.     if(isset($_POST['correocorporacion']) && !empty($_POST['correocorporacion'])){
  34.         $temporal = $_POST['correocorporacion'];
  35.         foreach($temporal as $key => $valor)
  36.             $correos[$valor] = $valor;
  37.         unset($temporal);
  38.     }
  39.    $_SESSION['correocorporacion'] = $correos;
  40. }

y en la parte del formulario:

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($result)) {
  2.                      echo'<tr><td>'.$row['cne_nombre'].' '.$row['cne_apellido'].'</td>';
  3.                      
  4.                      /*agregadooooooooooooooooo*/
  5.                      $marcado = array();
  6.                      print_r($marcado); /*Aca pienso que hay error*/
  7.                      
  8.                     if ($row['cne_email_corporacion'] == "")
  9.                     {
  10.                         echo '<td align="center" >*****</td>';
  11.                     }
  12.                     else
  13.                     {
  14.                   echo '<td><input type="checkbox" name="correocorporacion[]"
  15.                       value="'.$row['cne_email_corporacion'].'"'.((isset($correos[$row['cne_email_corporacion']]))? '  checked': '').'>'.$row['cne_email_corporacion'].'</td> ';
  16.                     if(isset($correos[$row['cne_email_corporacion']]))
  17.                     $marcado[$row['cne_email_corporacion']] = $row['cne_email_corporacion'];
  18.                 }
  19.                    
  20.                         if ($row['cne_email_personal'] == "")
  21.                     {
  22.                         echo '<td align="center" >*****</td>';
  23.                     }
  24.                     else
  25.                     {
  26.                 echo'<td><input type="checkbox" name="correopersonal[]"
  27.                       value="'.$row['cne_email_personal'].'"/>'.$row['cne_email_personal'].'</td></tr>';
  28.                     }
  29.                    
  30.                            }
  31.                            
  32.                            /*********Agregado************/
  33.                            if(!empty($marcado)) $_SESSION['marcado'] = $marcado;
  34.                             /*********************/

Me saca que la variable $correo no esta definida ......No se en que me pueda esta equivocando

Etiquetas: checkbox, formulario, mysql, paginado, registro, sesiones, variables
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 05:27.