Foros del Web » Programando para Internet » PHP »

ayuda gestionar checkbox

Estas en el tema de ayuda gestionar checkbox en el foro de PHP en Foros del Web. Hola foreros uso Appserv en WinXP y se me a presentado un problema lo que e realizado es tomando el codigo de la FAQ's de ...
  #1 (permalink)  
Antiguo 21/05/2009, 15:49
Avatar de Enishy  
Fecha de Ingreso: septiembre-2007
Mensajes: 121
Antigüedad: 16 años, 7 meses
Puntos: 1
ayuda gestionar checkbox

Hola foreros uso Appserv en WinXP y se me a presentado un problema

lo que e realizado es tomando el codigo de la FAQ's de Como gestionar acciones a los registros seleccionados con checbox (estilo web-mails tipo Hotmail).
http://www.forosdelweb.com/f18/faqs-...tml#post518710

Esta es la situacion: en mi consulta muestro campos que contiene datos de objetos que estan en exposición fuera del pais, y lo consigo seleccioanndo solo los que tienen estado = '1'

Ahora no estoy seguro si estoy tomando bien el valor del check que es "estado"
Cita:
<td><input type=\"checkbox\" name=\"seleccion[]\" value=\"'$row[id]'\">$row[estado]</td>
para que sea enviado y el codigo procesar.php actualize los objetos a estado= '0'

bueno este es mi formulario html

Código PHP:
<?
// Realizar la conexión a la BD .. Seleccionar la BD a usar.

// Ejecutar la consulta para obtener los datos de la BD.
$sql="SELECT fcat.registro_catalogacion, fexp.nombre_exposicion, fexp.organizador_exposicion, fexp.lugar_exposicion, 
fexp.fechade_exposicion, fexp.fechahasta_exposicion, fexp.monto_poliza_exposicion
FROM ficha_catalogacion AS fcat, ficha_exposicion AS fexp
WHERE fcat.codigo_catalogacion = fexp.codigo_catalogacion
AND fcat.estado = '1'"
;
$resultado pg_exec($DB,$sql);

// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
echo"
<table width='900' border='1' cellpadding='3' cellspacing='1'>
<tr>
<td align='center' class='navbar'><strong>Reg. Cat.</strong></td>
<td align='center' class='navbar'><strong>Exposici&oacute;n</strong></td>
<td align='center' class='navbar'><strong>Organizador</strong></td>
<td align='center' class='navbar'><strong>Lugar </strong></td>
<td align='center' class='navbar'><strong>Monto</strong></td>
<td align='center' class='navbar'><strong>Fecha Partida</strong></td>
<td align='center' class='navbar'><strong>Fecha Llegada</strong></td>
<td>&nbsp;</td>
</tr>"
;
                            
while (
$row pg_fetch_array($resultado)){  
echo
"
<tr>
<td>$row[registro_catalogacion]</td>
<td>$row[nombre_exposicion]</td>
<td>$row[organizador_exposicion]</td>
<td>$row[lugar_exposicion]</td>
<td>$row[monto_poliza_exposicion]</td>
<td>$row[fechade_exposicion]</td>
<td>$row[fechahasta_exposicion]</td>
<td><input type=\"checkbox\" name=\"seleccion[]\" value=\"'$row[id]'\">$row[estado]</td>
</tr>"
;

echo
"
</table><br/>
<table border=0 cellspacing=0 cellpadding='0'>
<tr>
<td><input type='submit' name='submit' value='Retornar Objeto'></td>
</tr>
</table>
?>
mi problema ocurre en el arhivo PHP "procesar.php" y es este

Cita:
Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: syntax error at or near "\" LINE 4: WHERE id IN(\'\') AND ^ in C:\AppServ\www\MuseoP\Admin\Formularios\procesar.p hp on line 8
Código PHP:
<?php 
include "Conexion.php";
$lista=implode(',',$_POST['seleccion']);
pg_exec("UPDATE ficha_catalogacion 
SET estado='0'
FROM ficha_exposicion
WHERE id IN("
.$lista.") AND
ficha_catalogacion.codigo_catalogacion = ficha_exposicion.codigo_catalogacion"
);
?>
  #2 (permalink)  
Antiguo 21/05/2009, 15:56
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: ayuda gestionar checkbox

nose corrijanme pero creo q deberia llevar puntos de concatenacion no?

Cita:
"<form action=\"procesar.php\" method=\"post\"> \n";
y esto deberia ser mas o menos asi no?

Cita:
print ("<TD><input type=checkbox name=idborrarnotaria[] value=".$resultado1['id_abogado']."> </TD>\n");
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #3 (permalink)  
Antiguo 21/05/2009, 16:19
Avatar de Enishy  
Fecha de Ingreso: septiembre-2007
Mensajes: 121
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: ayuda gestionar checkbox

hola hice unas correcciones en la parte del mostrar el checkbox

Código PHP:
<td><input type="checkbox\" name=\"seleccion[]\" value=\"'$row[codigo_exposicion]'\">$row[estado]</td> 
y e intentado mostrar lo que hay en la variable $lista, colocando solo esto

Código PHP:
<?php 
$lista
=implode(',',$_POST['seleccion']);
echo 
$lista;
?>
y muestra esto el resultado de procesar.php
Cita:
\'\'
ayuda please
  #4 (permalink)  
Antiguo 21/05/2009, 16:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: ayuda gestionar checkbox

Bueno, esta claro que $_POST['seleccion'] esta vacio y necesitas hacer una comprobacion para evitar que te de ese error cuando no se seleccione nada.

Nota: tienes unas comillas simples encerrando $row[id] y seguramente esa es la causa del error.

Lo correcto para crear cada checkbox seria mas o menos asi:

Código php:
Ver original
  1. // Todo en una sola linea, escapando correctamente comillas
  2. // Y codificando la matriz como debe de ser
  3. echo "<td><input type=\"checkbox\" name=\"seleccion[]\" value=\"{$row['id']}\">{$row['estado']}</td>";

Recuerda que siempre que uses una matriz asociativa, debes encerrar los indices entre comillas, simples o dobles.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 21/05/2009, 16:21
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: ayuda gestionar checkbox

te repito no es necesario el escape
print ("<TD><input type=checkbox name=idborrarnotaria[] value=".$resultado1['id_abogado']."> </TD>\n");
eso te lo muestra por q no toma lo q esta dentro de las diagonales saludines!!
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #6 (permalink)  
Antiguo 23/05/2009, 10:04
Avatar de Enishy  
Fecha de Ingreso: septiembre-2007
Mensajes: 121
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: ayuda gestionar checkbox

hola foreros gracias por las sugerencias ^_^

les cuento que encontre otra manera pues la anterior usada con el implode no logro hacerlo funcionar... Bueno como dijo el amigo triby esto queda asi

Cita:
<td><input type=\"checkbox\" name=\"seleccion[]\" value=\"{$row['codigo_exposicion']}\">{$row['estado']}</td>
dime algo triby que no entiendo con lo nuevo que quiero utilizar... al llamar a procesar.php mando el arreglo seleccion[] usando el POST y es aqui mi duda: este for no se si me esta tomando solo los check que marco en el formulario.... es correcto lo que estoy haciendo en el for? pues la idea de esta nueva forma es recorrer a traves de for solo los check marcados para luego poder hacer la actualizacion, es decir poner estado=0, pero mi consulta UPDATE me sale error porque mi condicion esta mal hecha mira

Cita:
....AND
ficha_exposicion.codigo_exposicion ='$cod
mi campo de tabla codigo_exposicion es entero y $cod es de tipo arreglo

Código PHP:
<?php 
include("conexion.php");

$p=$_POST['seleccion'];
for(
$i=0$i count($p); $i++){
$cod $p[$i];
}
$sql "UPDATE ficha_catalogacion 
SET estado='0'
FROM ficha_exposicion
WHERE ficha_catalogacion.codigo_catalogacion = ficha_exposicion.codigo_catalogacion AND
ficha_exposicion.codigo_exposicion ='$cod'"
;
$rs pg_exec($DB,$sql);
?>
  #7 (permalink)  
Antiguo 23/05/2009, 13:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: ayuda gestionar checkbox

En $_POST['seleccion'] solo te van a aparecer los checkbox que hayan sido marcados, por lo que tecnicamente estas recorriendo bien la matriz dentro del for, pero logicamente tienes una falla poprque en cada paso vuelves a inicializar $cod con el valor del elemento actual en $p sin realizar un procedimiento adicional.

Te recomiendo volver a la opcion del implode usando WHERE campo in (lista), resulta mucho mas optimo tanto para PHP como para acceso a base de datos, solo tienes que verificar:

Código php:
Ver original
  1. if(count($_POST['seleccion']) < 1) // Al menos un checkbox debio ser marcado
  2.     // Aqui finalizas el script, con die, exit, return o lo que prefieras
  3.  
  4. // Aqui continuas para realizar la consulta
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 27/05/2009, 09:12
Avatar de Enishy  
Fecha de Ingreso: septiembre-2007
Mensajes: 121
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: ayuda gestionar checkbox

hola Triby te cuento que ya me salio... volvi a la antigua opcion con el implode como me sugeriste problema resuelto.... mi problema estaba en mi consulta del formulario pues en el check le mandaba la PK de la tabla asi

Código PHP:
<td><input type="checkbox\" name=\"seleccion[]\" value=\"{$row['codigo_exposicion']}\"></td> 
y codigo_exposicion salia en blanco al mostrar variable $lista ...bueno lo que hice fue poner mi campo a la consulta y listo problema resuelto...gracias por su ayuda
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 13:12.