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á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') ? 1 : 0;
$ttr = (isset($_POST['ttr']) && $_POST['ttr'] == '1') ? 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 ???