Foros del Web » Programando para Internet » PHP »

Enviar checbox a otra pagina para consulta.

Estas en el tema de Enviar checbox a otra pagina para consulta. en el foro de PHP en Foros del Web. Estimada comunidad, junto con saludar, les comento: Tengo un codigo, que muestra un listado te ticket por ejecutar, el usario selecciona un codigo de laboratorio, ...
  #1 (permalink)  
Antiguo 23/03/2010, 13:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Enviar checbox a otra pagina para consulta.

Estimada comunidad, junto con saludar, les comento:

Tengo un codigo, que muestra un listado te ticket por ejecutar, el usario selecciona un codigo de laboratorio, y muestra los ticket que estan por ejecutarse en una lista, todo esto dentro de una misma pagina, esto funciona OK, el problema esta, en que el usuario selecciona los ticket mediante un checkbox, y necesito pasar estos ticket seleccionados a otra pagina para hacer un INSERT y asi cambiar el estado de los ticket de por ejecutar a en ejecucion.
Cabe destacar que tengo todo dentro de un solo formulario, y el evento action ya esta usado para llamarse a si mismo, me refiero a la pagina se llama a si mismo y muestra los resultados, eso funciona bien, el problema que no se como enviar los chekbox seleccionados a una pagina para el inserte.

PUeden ver como funciona la parte del listar los ticket aqui:

http://www.labunab.com/Encargado.php

El codigo es el sgte:
Pagina Encargado.php
Código HTML:
<?php
$con = mysql_connect("localhost","xxx","xxx") or die ("Error: No se ha podido establecer la conexión con maquina local" . mysql_error());
mysql_select_db("labunab_bdmodelo",$con) or die ("Error: No se ha podido seleccionar la BBDD de la maquina local" . mysql_error());
?>
<head>
<title>Documento sin titulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="75%" border="1">
  <tr>
    <td><form name="form1" method="post" action="Encargado.php">
  <p>Consultar por laboratorio 
    <select name="CodigoLab">
            <option value="201">lab201</option>
            <option value="101">lab101</option>
            <option value="301">lab301</option>
          </select>
    <input type="submit" name="Submit" value="Consultar">
  </p>

  <tr>
    
  <td height="88"> 
    <?php 
if (isset($_POST['Submit'])){
//Aqui asignas a una variable local tu variable post y haces tu consulta normal
$CodigoLab=$_POST[CodigoLab];
$consulta = "SELECT IdTicket FROM ticket WHERE CodigoLab = ".$CodigoLab;
$consulta = mysql_query($consulta, $con);
	   	   // fetch_array --> puntero que se posiciona en la primera consulta hasta llegar al final.
	   while($rs=mysql_fetch_array($consulta))	   
  {?>
  <table width="75%" border="1">
      <tr>
        <td><?php echo "<strong>".$rs[IdTicket]; ?> <input type="checkbox" name="elec[]" value="1" />
		</td>
      </tr>
    </table>
            <?php 
  }
  }
?>
            <p>
              <input type="submit" name="Submit2" value="Enviar">
            </p></form> 
    <p>&nbsp;</p></body> 
  #2 (permalink)  
Antiguo 23/03/2010, 13:50
Avatar de venom_mau  
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Enviar checbox a otra pagina para consulta.

Hola duja.

Pues soy novato en php, pero te recomiendo que en la parte de:
Código:
<form name="form1" method="post" action="Encargado.php">
En lugar de action="Encargado.php" uses action='<?php echo $_SERVER["PHP_SELF"]; ?>', creo es un poco mejor.

Por lo demás, disculpa pero no entendí mucho a la parte de los checkbox

saludos

Última edición por venom_mau; 23/03/2010 a las 13:57
  #3 (permalink)  
Antiguo 23/03/2010, 14:43
 
Fecha de Ingreso: marzo-2010
Ubicación: Callao - Peru
Mensajes: 13
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Enviar checbox a otra pagina para consulta.

Hola ..
Si lo que quieres es mandar los valores de los checks que soleccionas generador por tu consulta pues intentalo siguiente:

Cuando generes los checks

Código PHP:
<input type="checkbox" name="chk_<?=$rs['IdTicket']?>" value="<?=$rs['IdTicket']?>" />

// De esta manera cada check tendra un nombre unico prefijado con chk_
// Si te fijas en el value le puse el IdTicket, anteriormente le habias puesto 1 .. bueno eso lo dejo a tu criterio
Create una funcion Javascript que recoja los checks que selecciones

Código HTML:
<script language="javascript">
       function enviar_checks(){ 
           var c;
           var elem=document.form1.elements;
           var col=new Array;
           for(x=0;x<elem.length;x++){
                 if(elem[x].type=='checkbox' && elem[x].checked){			
                        col.push(elem[x].value);
                 }
           }
           c=col.join(',');	
	
           if(c>''){ // si hay elementos los pasa a otrapagina.php por GET con la variable chks
	window.location='otrapagina.php?chks='+c;	
           }else{
                alert("Seleccione elementos");
           }

}
</script> 
Luego en tu boton que envia los checks a otra pagina llamas a la funcion

Código HTML:
<input type="button" value="Enviar" name="miboton" onclick="enviar_checks()" /> 
Luego en tu otrapagina.php recoger la variable que resiviste por GET de nombre chks

Ejemplo :
Código PHP:
echo $_GET['chks']; // resiviras los checks seleccionados asi : "1,2,3.." , osea separado por comas. 
Luego para hacer los insert tendrias que trabajar esta variable como un array y recorrerlo con un bucle y hacer las inserciones ....

Lo demas te lo dejo, espero haberte ayudado
cualquier cosa me avisas y te echo una mano ...

Saludos !!!
  #4 (permalink)  
Antiguo 23/03/2010, 20:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Enviar checbox a otra pagina para consulta.

Cita:
Iniciado por 3l_Q_SoY Ver Mensaje
Hola ..
Si lo que quieres es mandar los valores de los checks que soleccionas generador por tu consulta pues intentalo siguiente:

Cuando generes los checks

Código PHP:
<input type="checkbox" name="chk_<?=$rs['IdTicket']?>" value="<?=$rs['IdTicket']?>" />

// De esta manera cada check tendra un nombre unico prefijado con chk_
// Si te fijas en el value le puse el IdTicket, anteriormente le habias puesto 1 .. bueno eso lo dejo a tu criterio
Create una funcion Javascript que recoja los checks que selecciones

Código HTML:
<script language="javascript">
       function enviar_checks(){ 
           var c;
           var elem=document.form1.elements;
           var col=new Array;
           for(x=0;x<elem.length;x++){
                 if(elem[x].type=='checkbox' && elem[x].checked){			
                        col.push(elem[x].value);
                 }
           }
           c=col.join(',');	
	
           if(c>''){ // si hay elementos los pasa a otrapagina.php por GET con la variable chks
	window.location='otrapagina.php?chks='+c;	
           }else{
                alert("Seleccione elementos");
           }

}
</script> 
Luego en tu boton que envia los checks a otra pagina llamas a la funcion

Código HTML:
<input type="button" value="Enviar" name="miboton" onclick="enviar_checks()" /> 
Luego en tu otrapagina.php recoger la variable que resiviste por GET de nombre chks

Ejemplo :
Código PHP:
echo $_GET['chks']; // resiviras los checks seleccionados asi : "1,2,3.." , osea separado por comas. 
Luego para hacer los insert tendrias que trabajar esta variable como un array y recorrerlo con un bucle y hacer las inserciones ....

Lo demas te lo dejo, espero haberte ayudado
cualquier cosa me avisas y te echo una mano ...

Saludos !!!
Gracias por la ayuda amigo, me es de gran ayuda. Aunque aun no puedo terminar lo que quiero, mira, utilice parte del codigo que publicaste, me muestra el listado de ticket con un checkbox al lado, los tiqueo y lo que necesito es que dentro de la misma pagina recibir ese arreglo de los checkbox para hacer una consulta en sql y cambiarles el estado a dichos ticket seleccionados, por ejemplo los selecciono, pincho submit y los que seleccione cambian de estado a traves de la consulta, pero todo dentro de la misma pagina php. Pues si es en la misma pagina me queda mas eficiente, pues no pierdo esa lista desplegable que tengo.
Si me puedes ayudar te lo agradeceria mucho.

No considere el javascript momentaneamente pues me lleva a otra pagina, y dado que me di cuenta queda mas eficiente dejando todo en la misma, preferi dejarlo asi por ahora.

Ahi te dejo el link http://www.labunab.com/Encargado2.php

Encargados2.php

Código HTML:
<?php
$con = mysql_connect("localhost","xxx","xxx") or die ("Error: No se ha podido establecer la conexión con maquina local" . mysql_error());
mysql_select_db("labunab_bdmodelo",$con) or die ("Error: No se ha podido seleccionar la BBDD de la maquina local" . mysql_error());
?>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="75%" border="1">
  <tr>
    <td><form name="form1" method="post" action="Encargado2.php">
      <p>Consultar por laboratorio </p>
      <p>
        <select name="CodigoLab">
          <option value="201">lab201</option>
          <option value="101">lab101</option>
        </select>
        <input type="submit" name="Submit" value="Consultar">
      </p>
  <tr>
  <td height="88"> 
    <?php
	
	if (isset($_POST['Submit'])){
//Aqui asignas a una variable local tu variable post y haces tu consulta normal
$CodigoLab=$_POST[CodigoLab];
$consulta = "SELECT IdTicket FROM ticket WHERE CodigoLab = '$CodigoLab'";
$consulta = mysql_query($consulta, $con);
	   	   // fetch_array --> puntero que se posiciona en la primera consulta hasta llegar al final.
          while($rs=mysql_fetch_array($consulta))
  { ;
	 ?> 
<table width="75%" border="1">
      <tr>
        <td> <?php echo "<strong>".$rs[IdTicket];?> <input type="checkbox" name= "chks<?php '.$rs[IdTicket]'?>" value="<?php '.$rs[IdTicket]'?>"/>

		</td>
      </tr>
    </table>
            <?php 
  }
  }
?>
<p>
              <input type="submit" name="Submit2" value="Enviar" />
            </p></form> 
  #5 (permalink)  
Antiguo 24/03/2010, 15:51
 
Fecha de Ingreso: marzo-2010
Ubicación: Callao - Peru
Mensajes: 13
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Enviar checbox a otra pagina para consulta.

mmmm ... bueno si lo que quieres es trabajar con el arreglo en la misma pagina, tambien se puede, tendrias que agregar un campo oculto a tu formulario que contendra el valor de los check que selecciones y tendrias que modificar el javascript para no redireccione sino le pase el valor recuperado a la variable oculta y haga un submit sobre la misma pagina y luego trabajar esa variable como cualquier otra ..

Ejm:

agrega al formulario un campo oculto por ejemplo <input type="hidden" name="id_chk">

Código HTML:
<script language="javascript">
       function enviar_checks(){ 
           var c;
           var elem=document.form1.elements; // suponiendo que tu fomulario tenga como nombre form1
           var col=new Array; // array que contiene los elementos seleccionados
           for(x=0;x<elem.length;x++){
                 if(elem[x].type=='checkbox' && elem[x].checked){ // si los elementos del form1 son checkbox y esta seleccionados osea checked asignarlos al array	
                        col.push(elem[x].value);
                 }
           }
           c=col.join(',');  convierte el array en una cadena separada po comas ejem: 1,2,3 ..
	
           if(c>''){ // si hay elementos los asigna a la varible o campo oculto y envia el formulario
	    document.form1.id_chk.value=c;
	    document.form1.submit();
           }else{
                alert("Seleccione elementos");
           }

}
</script> 
Luego en el Codigo php podrias agregar otro if justo arriba del primero asi :
Código PHP:
 if($_POST['id_chk']>''){ //  
      // si hay valor en esa varible entonces trabajas con los id recibidos ejem : 1,2,3...
     // si vas a hacer otro select con estos id:
     
$sql="select*from tabla where id in(".$_POST['id_chk'].")";
     
// si vas a hacer una actualizacion :
     
$sql="update tabla set campo='algo' where id in(".$_POST['id_chk'].")";
    
// o lo que quieras procesar aquí


Bueno eso fue mas o menos una idea de como podrias trabajar, espero te sirva ..

Etiquetas: enviar
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 11:16.