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<?php include ("config.php"); ?>
<?php include ("header.php"); ?>
<script type="text/javascript">
function getDataServer(url, vars){
var xml = null;
try{
xml = new ActiveXObject("Microsoft.XMLHTTP");
}catch(expeption){
xml = new XMLHttpRequest();
}
xml.open("GET",url + vars, false);
xml.send(null);
if(xml.status == 404) alert("Url no valida");
return xml.responseText;
}
</script>
<script type="text/javascript">
function modificar(id){
var error = getDataServer("modificar.php","?mod="+id);
if(error){
alert(error);
}
// else{
// document.getElementById("div_"+id).style.display = "hidden";
// }
}
</script>
<?php
$query = 'SELECT * FROM '.$tabla.'';
echo '<form id="formulario">';
if($row['hecha'] == '0'){
echo '<input type="checkbox" id="'.$row['id'].'" name="'.$row['id'].'" value="'.$row['hecha'].'" onClick="modificar('.$row['id'].');"> '.$row['tarea'].'<br>';
}else{
echo '<input type="checkbox" id="'.$row['id'].'" name="'.$row['id'].'" value="'.$row['hecha'].'" onClick="modificar('.$row['id'].');" checked> '.$row['tarea'].'<br>';
};
echo '</form>';
};
?>
<?php include("footer.php"); ?>
y el archivo modificar.php contiene lo siguiente
Código PHP:
Ver original<?php include ("config.php"); ?>
<?php
if($_GET["mod"]){
$query = 'SELECT * FROM '.$tabla.' WHERE id = '.$_GET["mod"].';';
if($row['hecho'] == '0'){
$consulta = 'UPDATE tareas SET hecha = "1" WHERE id = '.$_GET["mod"].';';
};
if($row['hecho'] == '1'){
$consulta = 'UPDATE tareas SET hecha = "0" WHERE id = '.$_GET["mod"].';';
};
};
}
?>
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 originalCREATE TABLE IF NOT EXISTS `tareas` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`tarea` text NOT NULL,
`hecha` VARCHAR(2) NOT NULL,
`añadida` DATE NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tareas` (`id`, `tarea`, `hecha`, `añadida`) VALUES
(1, 'Programar php', '0', '2010-07-10'),
(2, 'Tocar la guitarra', '1', '2010-07-10');