Ver Mensaje Individual
  #7 (permalink)  
Antiguo 28/02/2013, 14:24
burlock_spock
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

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
  1. <form action="ValidateForms.php" name="admnotify" method="post">
  2.     <fieldset>
  3.         <legend>Sobre Sugerencias al Administrador</legend>
  4.         <?php
  5.         $str_value = 'value';
  6.         $str_adminNotifications = 'adminNotifications';
  7.         $valueColumn = getDBcompletecolumn($str_value, $str_adminNotifications);
  8.         $str_keyname = 'keyname';
  9.         $keynameColumn = getDBcompletecolumn($str_keyname, $str_adminNotifications);
  10.         $str_notification = 'notification';
  11.         $notificationColumn = getDBcompletecolumn($str_notification, $str_adminNotifications);
  12.         if($valueColumn['0']){
  13.             echo utf8_encode($notificationColumn['0']); ?> <input type="checkbox" name="<?php echo $keynameColumn['0']; ?>" checked><br/>
  14.             <?php
  15.             for($i=1;$i<getDBcolumns($str_adminNotifications);$i++){
  16.                 if($valueColumn[$i]){
  17.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>" checked disabled><br/>
  18.                 <?php
  19.                 }
  20.                 else{
  21.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>" disabled><br/>
  22.                 <?php
  23.                 }
  24.             }
  25.             ?>
  26.             <input type="hidden" value="h_admnotifysuggest" name="hiddenfield"><br/>
  27.             <input type="submit" value="Guardar" name="admnotifysuggest">
  28.         <?php
  29.         }
  30.         else{
  31.             echo utf8_encode($notificationColumn['0']); ?> <input type="checkbox" name="<?php echo $keynameColumn['0']; ?>"><br/>
  32.             <?php
  33.             for($i=1;$i<getDBcolumns($str_adminNotifications);$i++){
  34.                 if($valueColumn[$i]){
  35.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>" checked><br/>
  36.                 <?php
  37.                 }
  38.                 else{
  39.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>"><br/>
  40.                 <?php
  41.                 }
  42.             }
  43.             ?>
  44.             <input type="hidden" value="h_admnotifysuggest" name="hiddenfield"><br/>
  45.             <input type="submit" value="Guardar" name="admnotifysuggest">
  46.         <?php
  47.         }
  48.         ?>
  49.     </fieldset>
  50. </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 original
  1. for($i=0;$i<getDBcolumns($str_adminNotifications);$i++){
  2.     if(getDBsinglefield($str_value, $str_adminNotifications, $str_id, $i) != $_POST[$keynameColumn[$i].checked]){
  3.         $query = "UPDATE `webcentral2013`.`adminNotifications` SET `value` = '".$_POST[$keynameColumn[$i]]."'
  4.         WHERE `adminNotifications`.`id` = '".$i."'";
  5.         if(executeDBquery($query)){
  6.             unset($str_adminNotifications);
  7.             unset($str_value);
  8.             unset($str_id);
  9.             unset($str_keyname);
  10.             unset($keynameColumn);
  11.             unset($query);
  12.             ?>
  13.                 <script type="text/javascript">
  14.                     alert('Configuración guardada con éxito.');
  15.                     window.location.href='Administrar.php';
  16.                 </script>
  17.             <?php
  18.         }

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...