Foros del Web » Programando para Internet » PHP »

Seleccionar Varios CheckBox y usarlos para hacer consultas

Estas en el tema de Seleccionar Varios CheckBox y usarlos para hacer consultas en el foro de PHP en Foros del Web. Buenas, Tengo un formulario, en el que monto dinamicamente unos checkbox. Después, segun los que esten seleccionados, tengo que realizar una modificación en la BD. ...
  #1 (permalink)  
Antiguo 04/03/2008, 18:34
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Seleccionar Varios CheckBox y usarlos para hacer consultas

Buenas,

Tengo un formulario, en el que monto dinamicamente unos checkbox. Después, segun los que esten seleccionados, tengo que realizar una modificación en la BD.
En concreto, el formulario muestra 1 checkbox para cada tipo de usuario (perfil) que tiene el sistema:

<input name="sel[]" type="checkbox" value="<?=$registre["NombrePerfil"]?>">

y en script que recoge los valores:

Código PHP:
$lista=implode(',',$_POST['sel']);
//echo $lista;

$estat="Actiu";

$cons="UPDATE lectors SET Estat='$estat' WHERE Perfil IN (".$lista.")"//Estat='$estat'";
echo $cons;
$res=mysql_query($cons,$db); 
he comprobado que me llegan los valores y llegan.

La tabla "lectors" tiene un campo llamado "Estat". Segun tengo entendido, esa consulta, mira cada fila, y si el campo "Perfil" está dentro de los valores de la $lista, hace el UPDATE.

Alguien sabe qué puede pasar? Gracias.

(Me he guiado por la FAQ: http://www.forosdelweb.com/f18/faqs-...tml#post518710)
  #2 (permalink)  
Antiguo 04/03/2008, 18:59
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

muestra el resto del codigo, asi no se ve nada.
  #3 (permalink)  
Antiguo 04/03/2008, 19:02
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

Formulario:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<? include "../../includes/connexio.php";
$db=conectarse(); ?>
<form action="desactivarUsuaris.php" method="post">
<?
    $cons
="SELECT * FROM Perfils WHERE IdPerfil!='adm' AND IdPerfil!='bib'";
    
$result=mysql_query($cons,$db);
        
    echo 
"<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>";
    echo 
"<tr><td colspan='2'><hr noshade></td></tr>";
    echo 
"<th bgcolor='#87CEFA'>Seleccionar</a></th>";
    echo 
"<th bgcolor='#87CEFA'>Nom</a></th>";
        
        while(
$registre=mysql_fetch_array($result))
        {
?>
<!-- tabla de resultados -->
  <tr bgcolor="#E0FFFF" onMouseOver="this.style.backgroundColor='#B0E0E6';" onMouseOut="this.style.backgroundColor='#E0FFFF';">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b>[B]<input name="sel[]" type="checkbox" value="<?=$registre["NomPerfil"]?>"></b></font></td>[/B]
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><? echo $registre["NomPerfil"]; ?></b></font></td>

  </tr>
<!-- fin tabla resultados -->
<?
        
}//fin while

?>   
<tr bgcolor="#33FFFF">
    <td align="right"><input type="button" name="cancelar" value="Cancel·lar" onClick="history.back()"></td>
    <td colspan="5"><input type="submit" name="Submit" value="Acceptar"></td>
  </tr>

   <? echo "</table>";?>
</form>
</body>
</html>
desactivarUsuaris.php

Código PHP:
<?
include "../../includes/connexio.php";
$db conectarse();

$lista=implode(',',$_POST['sel']);
//echo $lista;

$estat="Actiu";

$cons="UPDATE lectors SET Estat='$estat' WHERE Perfil IN (".$lista.")"//Estat='$estat'";
echo $cons;
$res=mysql_query($cons,$db);

?>
por ahora no tengo nada mas en el "desactivarUsuaris.php"
  #4 (permalink)  
Antiguo 04/03/2008, 19:27
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

al checkbox lo llamas sel[] aqui:

Código PHP:

<input name="sel[]" type="checkbox" value="<?=$registre["NomPerfil"]?>"></b></font></td>[/b]
y al recuperarlo lo llamas sel nada mas

Código PHP:
$lista=implode(',',$_POST['sel']); 

llamalo igual, no se tambien podrias llamarlo de otra manera, pero con el mismo nombre, no se si solucionara algo, pero es que no entiendo por que lo llamas sel[]

creo que si escribo $sel[] estoy convirtiendo el valor de $sel en un array asociativo, y no se si es eso lo que quieres hacer.
  #5 (permalink)  
Antiguo 04/03/2008, 19:38
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

Hola de nuevo,
te refieres a los corchetes? [] ?
Segun la FAQ que hay en este foro, lo que hace, en el checkbox, se añaden en esa variable, los valores de los checkbox que se hayan marcado.

Por ejemploo, los valores que me muestra el formulario son:

Professor/a
Estudiant
PAS

si yo marco los 3, y en el php hago un echo de esa lista:

$lista=implode(',',$_POST['sel']);
echo $lista;

me muestra: Professor/a,Estudiant,PAS

asi que no sé.... yo he seguido http://www.forosdelweb.com/f18/faqs-...tml#post518710

la consulta no me da ningun error, pero tampoco me hace lo que quiero.

Gracias por el interes jaronu.
  #6 (permalink)  
Antiguo 04/03/2008, 19:51
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

te imprime todos lo valores pero no solo el seleccionado, creo,
para ello recupera el valor del checkbox con el loop


Código PHP:
foreach ($_POST['sel'] as $id){ 
   echo 
$id."<br>"

  #7 (permalink)  
Antiguo 04/03/2008, 19:57
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

El sel[] solo se rellena con los checkboxes que haya marcado, lo he comprobado.

No sé si habria otra forma de hacer la consulta, porque creo que el problema esta ahí.
  #8 (permalink)  
Antiguo 04/03/2008, 20:06
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

quita los parentesis y los puntos y cambia la comillas dobles por simples:
esta linea
Código PHP:
$cons="UPDATE lectors SET Estat='$estat' WHERE Perfil IN (".$lista.")"
dejala asi:

Código PHP:
$cons="UPDATE lectors SET Estat='$estat' WHERE Perfil IN '$lista'"
  #9 (permalink)  
Antiguo 05/03/2008, 04:43
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

No funcionó.

Creo que el problema esta en las comillas....
He probado esto:

Código PHP:
include "../../includes/connexio.php";
$db conectarse();

$lista=implode(',',$_POST['sel']);
echo 
$lista;

$estat="Actiu";

/*$cons="UPDATE lectors SET Estat='$estat' WHERE Perfil IN (".$lista.")"; //Estat='$estat'";
echo $cons;
$res=mysql_query($cons,$db);*/

$uno="Estudiant";
$dos="Professor/a";

$cons="UPDATE lectors SET Estat='$estat' WHERE Perfil IN ('$uno','$dos')"//Estat='$estat'";
$res=mysql_query($cons,$db); 
y entonces ahí si que me lo cambia, pero no es lo que necesito, porque no sé cuantas variables voy a necesitar...

espero me puedan ayudar...
  #10 (permalink)  
Antiguo 05/03/2008, 06:11
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

no se, pues haz lo contario, en vea de implode, haz un explode y luego recupera las variables por separado

Código PHP:

if (isset($_POST["submit"])) {
    
$lista$_POST["sel"];

$lista explode(',',$row['sel']);




echo 
"$lista[1]";

echo 
"$lista[2]";


echo 
"$lista[3]"
en vea de hacer esto
Código PHP:

$lista
=implode(',',$_POST['sel']); 
echo 
$lista
bueno esta es la idea, no se si te servira.
  #11 (permalink)  
Antiguo 05/03/2008, 13:45
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

Pues no anda...
Los "echo" solo los hago para ver que me traen las variables.
Necesito que las filas en que el campo "Perfil" sea uno de los seleccionados se modifique. Y me extraña que siguiendo el codigo de la FAQ no funcione...
  #12 (permalink)  
Antiguo 06/03/2008, 11:47
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seleccionar Varios CheckBox y usarlos para hacer consultas

Bueno, ya lo he solucionado:

Código PHP:
$db conectarse();

$lista=$_POST['sel'];
foreach (
$lista as $id){
    
$lista2=$lista2."'".$id."',"//   añado comillas simples a cada variable q contiene    el array los separo con comas.
}  
$lista2=substr ($lista20, -1); //elimino la última coma
$nouEstat="Inactiu";

$cons="UPDATE lectors SET Estat='$nouEstat' WHERE Perfil IN(".$lista2.")"//hago la consulta 
Esto ha funcionado, y no se si es una chapuza, y si se podria mejorar.

Gracias
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 15:12.