Hola de nuevo Emprear.
No pude contestar antes porque anduve liado.
He pensado si podría sustituir la función JS por algo más "rápido y sencillo". Se me ha ocurrido intentar obtener el valor del objeto "checked" que habría sido pasado a través del POST del formulario. Me explico:
1. Mi formulario, en el que tengo los checkbox, sería el siguiente:
Código PHP:
Ver original<form action="ValidateForms.php" name="admnotify" method="post">
<fieldset>
<legend>Sobre Sugerencias al Administrador</legend>
<?php
$str_value = 'value';
$str_adminNotifications = 'adminNotifications';
$valueColumn = getDBcompletecolumn($str_value, $str_adminNotifications);
$str_keyname = 'keyname';
$keynameColumn = getDBcompletecolumn($str_keyname, $str_adminNotifications);
$str_notification = 'notification';
$notificationColumn = getDBcompletecolumn($str_notification, $str_adminNotifications);
if($valueColumn['0']){
echo utf8_encode($notificationColumn['0']); ?> <input type="checkbox" name="
<?php echo $keynameColumn['0']; ?>" checked><br/>
<?php
for($i=1;$i<getDBcolumns($str_adminNotifications);$i++){
if($valueColumn[$i]){
echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="
<?php echo $keynameColumn[$i]; ?>" checked disabled><br/>
<?php
}
else{
echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="
<?php echo $keynameColumn[$i]; ?>" disabled><br/>
<?php
}
}
?>
<input type="hidden" value="h_admnotifysuggest" name="hiddenfield"><br/>
<input type="submit" value="Guardar" name="admnotifysuggest">
<?php
}
else{
echo utf8_encode($notificationColumn['0']); ?> <input type="checkbox" name="
<?php echo $keynameColumn['0']; ?>"><br/>
<?php
for($i=1;$i<getDBcolumns($str_adminNotifications);$i++){
if($valueColumn[$i]){
echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="
<?php echo $keynameColumn[$i]; ?>" checked><br/>
<?php
}
else{
echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="
<?php echo $keynameColumn[$i]; ?>"><br/>
<?php
}
}
?>
<input type="hidden" value="h_admnotifysuggest" name="hiddenfield"><br/>
<input type="submit" value="Guardar" name="admnotifysuggest">
<?php
}
?>
</fieldset>
</form>
2. Ya en el fichero en que valido los formularios tengo el siguiente trozo de código, destinado a comprobar si el valor que está guardado para ese checkbox en BBDD es igual o no al que ha pasado por el formulario:
Código PHP:
Ver originalfor($i=0;$i<getDBcolumns($str_adminNotifications);$i++){
if(getDBsinglefield($str_value, $str_adminNotifications, $str_id, $i) != $_POST[$keynameColumn[$i].checked]){
$query = "UPDATE `webcentral2013`.`adminNotifications` SET `value` = '".$_POST[$keynameColumn[$i]]."'
WHERE `adminNotifications`.`id` = '".$i."'";
if(executeDBquery($query)){
unset($str_adminNotifications);
unset($str_value);
unset($str_id);
unset($str_keyname);
unset($keynameColumn);
unset($query);
?>
<script type="text/javascript">
alert('Configuración guardada con éxito.');
window.location.href='Administrar.php';
</script>
<?php
}
Pues bien, la línea del primer "if" me escupe un error "Use of undefined constant checked...
Por el error, obviamente, no estoy llamando bien al objeto checked. Creo que debo hacerlo desde código JS, pero me podrías decir tú cómo lo solucionarias exactamente?
PD: Que desesperación y que paquete que soy...