Foros del Web » Programando para Internet » Javascript » Frameworks JS »

valor de Checkbox y Ajax

Estas en el tema de valor de Checkbox y Ajax en el foro de Frameworks JS en Foros del Web. Hola, aca estoy nuevamente planteando una gran duda que trate por todas las formas de resolver y no pude. Les comento: Tengo una pagina que ...
  #1 (permalink)  
Antiguo 16/05/2009, 15:35
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años, 7 meses
Puntos: 0
valor de Checkbox y Ajax

Hola, aca estoy nuevamente planteando una gran duda que trate por todas las formas de resolver y no pude. Les comento:

Tengo una pagina que la uso para actualizar datos de una base de datos mysql, en dicha pagina despliego este formulario:
<form action="#" method="post" name="form1" id="form1">
<input type="text" id="nombre" name="nombre" value="<?php echo htmlentities($row_perfilesusers['nombre'], ENT_COMPAT, ''); ?>" size="32" />

<input type="text" id="apellido" name="apellido" value="<?php echo htmlentities($row_perfilesusers['apellido'], ENT_COMPAT, ''); ?>" size="32" />

<input type="checkbox" id="busco" name="busco" value="" <?php if (!(strcmp(htmlentities($row_perfilesusers['busco'], ENT_COMPAT, ''),"Y"))) {echo "checked=\"checked\"";} ?> />

<input type="button" value="Guardar cambios" onClick="fajax()" />

el cual tiene 2 campos input text donde cargo el nombre y apellido del usuario y una campo checkbox que en la BD es del tipo SET 'Y','N'.
Al cargar la pagina obtengo los datos del usuario con una consulta a mysql y los imprimo en los inputs y el checkbox.

El archivo js lo llamo en la pagina asi :

<script src="actualiza.js" type="text/javascript"></script>


y el archivo actualiza.js es el siguiente:

function ajaxFunction()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
return xmlHttp;
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
return xmlHttp;
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
}


function fajax()
{
var nombre,apellido,busco,accion,ajax;

nombre = document.getElementById('nombre').value;
apellido = document.getElementById('apellido').value;
busco = document.getElementById('busco').value;
accion = document.getElementById('accion').value;

ajax=ajaxFunction();
ajax.open("POST","actualizadatos.php",true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

ajax.onreadystatechange=function()
{
if(ajax.readyState==1)
{

document.getElementById('capa').innerHTML = "<div style='text-align:center; vertical-align:middle'><img src='image/loading.gif' align='center' style='text-align:center; vertical-align:middle' /> Aguarde por favor...</div>";

}
else if (ajax.readyState==4) // Readystate 4 significa que ya acabó de cargarlo
{
if(ajax.status==200)
{
document.getElementById('capa').innerHTML = ajax.responseText;
}
}
}

ajax.send("nombre="+nombre+"&apellido="+apellido+" &busco="+busco+"&accion="+accion);
}



Ahora el archivo actualizadatos.php es el siguiente:

$nombre=$_REQUEST['nombre'];
$apellido=$_REQUEST["apellido"];
$busco = $_REQUEST["busco"];
$accion=$_REQUEST["accion"];


if (isset($nombre)) {
$_POST['id_usuario']=$_SESSION['id_usuario'];
$_POST['id']=$row_perfil1['id'];
$_POST['nombre']=$nombre;
$_POST['apellido']=$apellido;
$_POST['busco']=$busco;


$updateSQL = sprintf("UPDATE perfiles SET id_usuario=%s, nombre=%s, apellido=%s, busco=%s WHERE id=%s",
GetSQLValueString($_POST['id_usuario'], "int"),
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['apellido'], "text"),
GetSQLValueString(($_POST['buscohombres']) ? "true" : "", "defined","'Y'","'N'"),
GetSQLValueString($_POST['id'], "int"));

mysql_select_db($database_perfil, $perfil);
$Result1 = mysql_query($updateSQL, $perfil) or die(mysql_error());
}




?>

El tema es que los datos de los input text me los guarda y carga sin problemas pero el checkbox no hay caso, cuando guardo los cambios en la BD no me graba en el campo busco si el usuario marco o no el checkbox.

Probe de todo un poco y nada, me gustaria si es posible que me den una ayudita ya que visite facil 30 webs pero en ninguna se encontrar la solucion.

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 16/05/2009, 17:01
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: valor de Checkbox y Ajax

ACA PROBE DE UNA FORMA MAS SENCILLA: Resultado el mismo, me actualiza el nombre y apellido pero el checkbox que tengo como set 'Y','N' en la BD SIEMPRE SE GRABA COMO Y. no entiendo que pasa, ya me estoy volviendo loco.

una ayudita porfa, gracias


$_POST['id_usuario']=1;
$_POST['id']=1;
if(isset($_POST['Submit']) && !empty($_POST['Submit'])) {
$updateSQL = sprintf("UPDATE perfiles SET id_usuario=%s, nombre=%s, apellido=%s, busco=%s WHERE id=%s",
GetSQLValueString($_POST['id_usuario'], "int"),
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['apellido'], "text"),
GetSQLValueString(isset($_POST['busco']) ? "true" : "", "defined","'Y'","'N'"),
GetSQLValueString($_POST['id'], "int"));

mysql_select_db($database_perfil, $perfil);
$Result1 = mysql_query($updateSQL, $perfil) or die(mysql_error());
}

$colname_Recordset1 = "-1";
if (isset($_SESSION['id_usuario'])) {
$colname_Recordset1 = $_SESSION['id_usuario'];
}
mysql_select_db($database_perfil, $perfil);
$query_Recordset1 = sprintf("SELECT * FROM perfiles WHERE id_usuario = %s", GetSQLValueString($colname_Recordset1, "int"));
$Recordset1 = mysql_query($query_Recordset1, $perfil) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

//en este ejemplo lo enviamos a la misma página


?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
//acá cada uno crea el objeto a su manera
function aj(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
else{
try{
return new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
alert('tu navegador no soporta ajax');
return false;
}
}
}
function sendAndLoad(){
var rpc=aj();
if(rpc){
//si pudo crearse el objeto, avanzamos (respetar el orden)
rpc.open('POST','<?php echo basename($_SERVER['PHP_SELF']) ?>',true);
rpc.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//preparamos las variables a enviar
var aEnviar='';

for(ii=0; ii<arguments.length;ii++){
//usamos el objeto arguments para obtener y parsear los datos a enviar
//encodeURI es semejante a urlencode de PHP
aEnviar+=arguments[ii].desc+'='+encodeURI(arguments[ii].dato)+'&';
}
//creamos una función anónima que sirva de handler
rpc.onreadystatechange=function(){
if(rpc.readyState==4){
//nos conectamos, recibimos y hacemos algo con lo que recibimos si queremos
//en este caso, mostramos lo que enviamos
document.getElementById('pp').style.display='block ';
document.getElementById('pp').style.color='green';
document.getElementById('pp').innerHTML=rpc.respon seText;
}else{
//no nos conectamos todavía y mostramos la precarga
document.getElementById('pp').style.display='block ';
}
}
//Recién ahora, que tenemos todo lo anterior terminado, podemos enviar el request
rpc.send(aEnviar);
}
}
//asignamos la función al botón de envío al cargar la página, así no tocamos el html
window.onload=function(){
document.getElementById('Submit').onclick=function (){
//pasamos objetos escritos en notación json como argumentos
sendAndLoad(
{desc:'nombre',dato:document.getElementById('nombr e').value},
{desc:'apellido',dato:document.getElementById('ape llido').value},
{desc:'busco',dato:(document.getElementById('busco ').checked)?document.getElementById('busco').value :'N'},
{desc:'Submit',dato:document.getElementById('Submi t').value});
}
}
</script>
</head>

<body>
<form action="" method="post" name="form1" id="form1">
<table align="center">
<tr valign="baseline">
<td nowrap="nowrap" align="right">Id_usuario:</td>
<td><input type="hidden" name="id_usuario" id="id_usuario" value="<?php echo htmlentities($row_Recordset1['id_usuario'], ENT_COMPAT, 'iso-8859-1'); ?>" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Nombre:</td>
<td><input type="text" name="nombre" id="nombre" value="<?php echo htmlentities($row_Recordset1['nombre'], ENT_COMPAT, 'iso-8859-1'); ?>" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Apellido:</td>
<td><input type="text" name="apellido" id="apellido" value="<?php echo htmlentities($row_Recordset1['apellido'], ENT_COMPAT, 'iso-8859-1'); ?>" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Busco:</td>
<td><input type="checkbox" name="busco" id="busco" value="" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">&nbsp;</td>
<td><input type="button" id="Submit" name="Submit" value="Actualizar registro" /></td>
</tr>
</table>

</form>
<p>&nbsp;</p>


<div id="pp" style="display:none;color:#F00">Cargando...</div>
</body>
</html>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.