Foros del Web » Programando para Internet » PHP »

problemas con el checkbox

Estas en el tema de problemas con el checkbox en el foro de PHP en Foros del Web. Hola mentes ilustradas de forosdelweb. Espero me puedan orientar en la siguiente cuestión, estoy tratando de insertar una columna en una tabla ya elaborada en ...
  #1 (permalink)  
Antiguo 13/04/2010, 08:17
 
Fecha de Ingreso: enero-2010
Mensajes: 13
Antigüedad: 14 años, 2 meses
Puntos: 0
problemas con el checkbox

Hola mentes ilustradas de forosdelweb.

Espero me puedan orientar en la siguiente cuestión, estoy tratando de insertar una columna en una tabla ya elaborada en un programa que realizó otra persona que ya no labora en la empresa en la que trabajo, realmente en su código hay muuuuchas cosas que no se que significan y que he ido investigando, al parecer la tabla la despliega en el siguiente array, yo introduje en ese array la columna que se necesita, dicha columna debe contener por cada línea un checkbox el cual si es checado significa que el material ha sido recibido, solamente que no se la manera de guardar los datos en la tabla identificando cada checkbox como único. Parte del código se encuentra en seguida, en el cuál está el array que despliega la tabla.

Traté de elaborarlo con imágenes. En caso de que se recibiera el pedido aparecía una palomita y en caso contrario un tache, pero se tenía que cargar la página de nuevo cada que se daba clic en la imagen y pues era muy tedioso y tardado (esta parte que menciono se encuentra en la parte del else if del código que está enseguida)

Código PHP:
$pager = new pager(array(
                         
"query" => $query,
                         
"doNotUseCache" => true,
                         
"filter" => $filter,
                         
"extendedFilter" => $extendedFilter,
                         
"currentPage" => $_GET["currentPage"],
                         
"pageSize" => 500,
                         
"sort" => $sort,
                         
"defaultTitleHeader" => "nowrap",
                         
"showFields" => array(
                                               
"".($app["permissions"]["erase"]==1?"c1":"")."" => 1
                                               
"".($app["permissions"]["erase"]==1?"c2":"")."" => 1,    
                                               
"".($app["permissions"]["erase"]==1?"c6":"")."" => 1,                                                                                      
                                               
"fdpid" => 1,
.......

"changeCellForFilter" => array(
                                        
"c2" => "\".eval(\"
                                                                  if('{recibida}' == 0)                                                                                                                                 
                                                                                  return '<input type=\'checkbox\' name=\'checa[]\'>';
                                                                  else if('{recibida}' == 1 ) 
                                                                                  return '<a onClick=\'if(confirm(\\\"¿Material sin recibir?\\\"))return true;else return false;\' href=\\\"?action=delete&corre={corre}&noodc={noodc}&pago={pago} \\\"><img src=\'"
.IMAGES_DIR."tick.png\' title=Deshabilitar border=0 alt=Deshabilitar></a>'; 
                                                                        \").\""
,
.......

if (
$pager->connectionFailed) {
        
$smarty->assign("errorMessage","No se puede tener acceso a la base de datos. Es posible que esté en uso en este momento.".$conn->_errorMsg);
        
$smarty->assign("errorLevel",$conn->_errorMsg);
    }
    
$smarty->assign("griddata",$pager->GRIDDATA);
    
$smarty->assign("navmenus",$pager->NAVMENUS);
    
$smarty->assign("next",$pager->nextPageLink);
    
$smarty->assign("prev",$pager->prevPageLink);
    
$smarty->assign("registros",$pager->numOfRecords); 
El botón submit está en un archivo "tpl"

Código PHP:
 <tr>
        <
td>
        {
$prev}&nbsp;{$navmenus}&nbsp;{$next}
        </
td>
    </
tr>
    <
tr>
        <
td>
        {
$griddata}
        </
td>
    </
tr>
    </
tr>    
    <
tr>
        <
td>
        {
$prev}&nbsp;{$navmenus}&nbsp;{$next}
        </
td>
    </
tr>
    <
tr>
        <
td>
        <
input type=hidden name=parametro value={$registros}>
        <
input type=submit class=button name=guardar value='Guardar cambios'>
        </
td>
    </
tr>
</
TABLE
El value del hidden lo tomé de esta parte del archivo ".php" $smarty->assign("registros",$pager->numOfRecords); para realizar el conteo de cuantas líneas y por lo tanto cuántos checkbox despliega el array, ya que varía la cantidad de líneas dependiendo de cuantas coincidan con el número de pedido.

En esta parte es donde modificaba a "recibida" para que cuando cargara la página de nuevo me apareciera la otra imagen

Código PHP:
if(isset($_GET["action"]) && ($_GET["action"] == "delete") && isset($_GET["noodc"]) && isset($_GET["corre"]) && isset($_GET["recibida"])){    
    
$cambiar "UPDATE odc
                SET recibida=0
                WHERE noodc="
.$_GET["noodc"]." AND corre=".$_GET["corre"]."";
    
$rescamb $conn->Execute($cambiar) or die ($conn->ErrorMsg()."<br />$cambiar");
    
$smarty->assign("buscarODC"$_GET["noodc"]);

Espero me haya explicado.... muchas gracias y que tengan un excelente día
  #2 (permalink)  
Antiguo 15/04/2010, 13:20
 
Fecha de Ingreso: enero-2010
Mensajes: 13
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: problemas con el checkbox

Fiu!!, por fin lo resolví.

La cosa estaba en el "value" del "checkbox".
En esta parte mando los datos que necesito por medio del "value" para poder hacer el update en la base de datos.
Código PHP:
return '<input type=\'checkbox\' name=\'checa[]\' value=\'{corre},{noodc},{recibida}\'>'
Y en esta parte por medio del "explode" recojo los datos.

Código PHP:
$checked=$_GET["checa"];
    for(
$i=0;$i<$cont;$i++){ 
        if(
$checked[$i]){
          
$separar=explode(",",$checked[$i]);
          
$numcorre=$separar[0];
          
$numodc=$separar[1];
          
$numrecibida=$separar[2];
          
$cambiar "UPDATE odc
                      SET recibida=1
                      WHERE  noodc=$numodc AND corre=$numcorre"
;
          
$rescamb $conn->Execute($cambiar) or die ($conn->ErrorMsg()."<br />$cambiar");
        }    
    } 
Espero le sirva a alguien que esté atorado en algo similar.

Saludines y sean felices

Etiquetas: checkbox
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 19:00.