Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2010, 15:23
Avatar de Jota_sk
Jota_sk
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Hace lo que quieres.

Hola. Esta es la primera cosa que programo con AJAX, y la verdad le veo una gran utilidad y una función nueva para todos mis próximos scripts. He creado un mini script para ver como funciona y eso, pero me estoy armando un lío impresionante, porque aveces actualiza y otras veces no.

El index.php contiene esto

Código PHP:
Ver original
  1. <?php include ("config.php"); ?>
  2. <?php include ("header.php"); ?>
  3. <script type="text/javascript">
  4. function getDataServer(url, vars){
  5.      var xml = null;
  6.      try{
  7.          xml = new ActiveXObject("Microsoft.XMLHTTP");
  8.      }catch(expeption){
  9.          xml = new XMLHttpRequest();
  10.      }
  11.      xml.open("GET",url + vars, false);
  12.      xml.send(null);
  13.      if(xml.status == 404) alert("Url no valida");
  14.      return xml.responseText;
  15. }
  16. </script>
  17. <script type="text/javascript">
  18. function modificar(id){
  19.     var error = getDataServer("modificar.php","?mod="+id);
  20.     if(error){
  21.         alert(error);
  22.     }
  23. //    else{
  24. //        document.getElementById("div_"+id).style.display = "hidden";
  25. //    }
  26. }
  27. </script>
  28. <?php
  29.  
  30. $query = 'SELECT * FROM '.$tabla.'';
  31.  
  32. $result = mysql_query($query,$conn);
  33. while($row = mysql_fetch_array($result)){
  34.     echo '<form id="formulario">';
  35.         if($row['hecha'] == '0'){
  36.             echo '<input type="checkbox" id="'.$row['id'].'" name="'.$row['id'].'" value="'.$row['hecha'].'" onClick="modificar('.$row['id'].');"> '.$row['tarea'].'<br>';
  37.         }else{
  38.             echo '<input type="checkbox" id="'.$row['id'].'"  name="'.$row['id'].'" value="'.$row['hecha'].'" onClick="modificar('.$row['id'].');" checked> '.$row['tarea'].'<br>';
  39.         };
  40.     echo '</form>';
  41. };
  42. ?>
  43. <?php include("footer.php"); ?>

y el archivo modificar.php contiene lo siguiente

Código PHP:
Ver original
  1. <?php include ("config.php"); ?>
  2. <?php
  3.  
  4. if($_GET["mod"]){
  5.     $query = 'SELECT * FROM '.$tabla.' WHERE id = '.$_GET["mod"].';';
  6.     $result = mysql_query($query,$conn);
  7.     while($row = mysql_fetch_array($result)){
  8.         if($row['hecho'] == '0'){
  9.                 $consulta = 'UPDATE tareas SET hecha = "1" WHERE id = '.$_GET["mod"].';';
  10.         };
  11.         if($row['hecho'] == '1'){
  12.                 $consulta = 'UPDATE tareas SET hecha = "0" WHERE id = '.$_GET["mod"].';';
  13.         };
  14.     };
  15.     mysql_query($consulta, $conn);
  16. }
  17.  
  18. ?>

Lo único que quiero que haga el script es que cuando pulse un checbox, modifique en la base de datos el campo "hecho". Si hay un cero, quiero que ponga un uno, si hay un uno quiero que ponga un cero. Simplemente esto. Pero no lo consigue que funcione, o solo me funciona para cambiar a un 1 o para cambiar a un 0. Mi base de datos contiene lo siguiente, por si hay alguna duda.

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tareas` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `tarea` text NOT NULL,
  4.   `hecha` VARCHAR(2) NOT NULL,
  5.   `añadida` DATE NOT NULL,
  6.   PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
  8.  
  9. INSERT INTO `tareas` (`id`, `tarea`, `hecha`, `añadida`) VALUES
  10. (1, 'Programar php', '0', '2010-07-10'),
  11. (2, 'Tocar la guitarra', '1', '2010-07-10');