Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2009, 19:23
Avatar de junihh
junihh
 
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Problemas para guardar valor de checkbox en la BD

Hola señores:

Ya se me agotaron las ideas para encontrar la forma de hacer que la BD reciba el valor de dos checkbox, uno de ellos que servira para validar comentarios.

Mi app esta basado en dos archivos. Este primer archivo me sirve como panel de control para enlistar y saber cuales comentarios han sido validados y cuales no:

Código PHP:

<?php

if ($_POST['listdata'] == 1):

    
$tipodata $_POST['tipodata'];

    
mysql_connect ('localhost''root''123456') or die ($MenjError 'No se puede acceder a la base de datos: ' mysql_error());
    
mysql_select_db ('basededatos');
     
    
$query mysql_query ('SELECT * FROM comentarios');
     
    
$showtitu '<div class="titu">' $tipodata '</div>';
     
    function 
setData($arr)
    {
        
        if(
$arr['ttr'] == 1)
        {
            
$ttrOK ' checked';
        } 
        
        if(
$arr['valid'] == 1)
        {
            
$validOK ' checked';
        } 
        
        
$dat '<div class="item"><form action="editapp.php" method="POST">';
        
$dat .= '<input type="hidden" name="ID" value="' $arr['ID'] . '" />ID: ' $arr['ID'] . ' | ';
        
$dat .= '<input type="checkbox" value"1" name="ttr"' $ttrOK ' />Twitter | ';
        
$dat .= '<input type="checkbox" value"1" name="valid"' $validOK ' />V&aacute;lido';
        
$dat .= '<input type="submit" name="boton" value="Guardar Cambios" style="margin-left: 30px;" />';
        
$dat .= '</div></form>';
        
        return 
$dat;
        
    }
     
    while (
$row mysql_fetch_array($query))
    {
          
        if (
$tipodata == 'Validados' && $row['valid'] == 1)
        {
            
$showdata .= setData($row);
        }
          
        if (
$tipodata == 'No validados' && $row['valid'] == 0)
        {
            
$showdata .= setData($row);
        }
          
        if (
$tipodata == 'Todos')
        {
            
$showdata .= setData($row);
        }
          
    }
    
endif;

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

<head>

<title>Administrar Comentarios</title>
<meta name="robots" content="noindex, nofollow">

<style type="text/css">
<!--

html, body {
    height: 100%;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    line-height: 18px;
    text-align: left;
}

.item {
    padding-bottom: 10px;
    margin-bottom: 10px;
    border-bottom: dashed 1px #CCCCCC;
    width: 400px;
}

.titu {
    border: solid 1px #CCCCCC;
    padding: 8px;
    font-size: 18px;
    font-weight: bold;
    margin-top: 35px;
    margin-bottom: 35px;
    text-transform: uppercase;
    width: 385px;
}

-->
</style>
    
</head>
<body>


<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">

<input type="hidden" name="listdata" value="1" />

<input type="submit" name="tipodata" value="Todos" />
<input type="submit" name="tipodata" value="Validados" />
<input type="submit" name="tipodata" value="No validados" />

</form>


<?=$showtitu?>
<?=$showdata?>

<?=$MenjError?>


</body>
</html>

Este segundo archivo es quien se encarga de guardar los cambios en la BD luego de recibirlos:

Código PHP:
<?php

$bot 
$_POST['boton'];
$ID $_POST['ID'];
$valid = (isset($_POST['valid']) && $_POST['valid'] == '1') ? 0;
$ttr = (isset($_POST['ttr']) && $_POST['ttr'] == '1') ? 0;


mysql_connect ('localhost''root''123456') or die ($MenjError 'No se puede acceder a la base de datos: ' mysql_error());
mysql_select_db ('basededatos');


if (
$bot == 'Guardar Cambios'):
    
    
$sql "UPDATE comentarios SET valid='$valid', ttr='$ttr' WHERE ID = '$ID'";
    
$result mysql_query($sql);
    
    
mysql_close();
    
    if (
$result)
    {
        echo 
'Datos actualizados.';
    } else {
        echo 
'No se pudieron actualizar los datos.';
    }
    echo 
' <a href="edit.php">Regresar</a>';

endif;

?>
Cuando el primer archivo me enlista los datos que provienen de la BD, los checkbox se marcan apropiadamente, pero cuando aplico uno de los checkbox ("ttr" o "valid") y envio para guardar el cambio no pasa nada porque la variable llega vacia, sin embargo, cuando hago cambios en los demas campos, esos cambios si se guardan.

Alguna sugerencia de como guardar los cambios que haga en los checkbox ???
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 19/09/2009 a las 19:37