AJAX - efecto en BD con AJAX

 
Vista:

efecto en BD con AJAX

Publicado por Adrian (4 intervenciones) el 21/06/2007 21:50:21
A ver:

Soy algo nuevo en AJAX pero ya lo uso bastante, el problema es el siguiente, tengo un navegador con una pagina abierta.

Dicha pagina realiza inserciones en una BD, siempre antes revisando que no esté un codigo en la BD, o sea valida que el codigo que se inserta no exista en la BD.

Todo esto funciona muy bien para los codigos que ya estaban insertados antes de realizar la primera inserción, por ejemplo

Tengo en la bd los codigos 1 y 2

Cuando trato de insertar el codigo 1 como ya está en la BD se lanza un error(todo esto sin recargar la pagina con AJAX)

Entonces inserto en codigo 3, se inserta bien.
Ahora no cierro la pagina, pues ya está otra vez en forma para una nueva inserción,

Ahora en la Bd están los codigos 1, 2 y 3
Pero si trato de insertar 3 nuevamente no lanza el error, para el script PHP el codigo 3 no está insertado en la BD Y Si LO Está

alguna ayuda?

Seguro a alguien le debe haber pasado ya

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:efecto en BD con AJAX

Publicado por weirdmix (45 intervenciones) el 24/06/2007 19:00:17
que manejador de base de datos estas usando, eso pasa principalmente con oracle, debes de dar un commit despues de hacer una insercion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:efecto en BD con AJAX

Publicado por Adrian (3 intervenciones) el 24/06/2007 21:02:28
Estoy usando MySql , crees que con el commit se solucione? me parece que el mysql no tiene commit o si?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:efecto en BD con AJAX

Publicado por Gonzalo (26 intervenciones) el 24/06/2007 21:40:58
Pon el código para que lo veamos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:efecto en BD con AJAX

Publicado por Adrian (4 intervenciones) el 25/06/2007 01:24:41
//crea el objeto ajax
function AJAXCrearObjeto()
{
var obj;
if(window.XMLHttpRequest)
{ // no es IE
obj = new XMLHttpRequest();
} else
{ // Es IE o no tiene el objeto

try {
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert('El navegador utilizado no está soportado');
}
}
return obj;
}

//funcion llamada desde el boton
function verifica_codigo_preg()
{
if(document.forms['form_addeditpreg'].codigo_pregunta.value!="")
{

oXML = AJAXCrearObjeto();
// creamos el objeto
oXML.open('GET', 'includes/existe_codpreg.asp?codigos='+ document.forms['form_addeditpreg'].codigo_pregunta.value);
oXML.onreadystatechange = leerDatos_preg;
// enviamos los datos
oXML.send('');
}
else
{
document.forms['form_addeditpreg'].Submit.disabled="disabled";
miDiv = document.getElementById('div_ver_preg');
miDiv.innerHTML = "";
}
}

// funcion que da el resultado que devolvió el script asp
function leerDatos_preg(){
if (oXML.readyState == 4) {
miDiv = document.getElementById('div_ver_preg');
// Modificamos su contenido
if(oXML.responseText=="si")
{
miDiv.innerHTML = "<span class='Error'>Inválido::Ya existe</span>";
//miDiv.innerHTML = "<span class='Error'>No existe ese Test </span>";
document.forms['form_addeditpreg'].Submit.disabled="disabled";
}
else
{
miDiv.innerHTML = "<span class='Titulo'>Código Válido</span>";
miDiv2 = document.getElementById('boton_agregar');
miDiv2.innerHTML = "<input type='submit' name='Submit' value='Agregar'/>";
}
}

}


Este es el script asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file="cadena.asp" -->
<%
codigo=request.QueryString("codigos")
codigo=Replace(codigo, CHR(39), "")

sSQL = "select * from PREGUNTAS where CODIGOPREGUNTA='" & codigo &"'"

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConnect

set RS=createobject("ADODB.Recordset")
RS.open sSQL,Conn

if (not RS.eof) then
Response.Write("si")
else
response.Write("no")
end if
RS.close
set RS=nothing
Conn.close
%>

En definitiva, la idea es verificar un codigo a insertar antes de insertarlo, no da problemas cuando se entra a la pagina por primera vez, todos los codigos que estuvieran en la BD darian error, pero si insertas ese codigo no se valida, como si no estuviera en la BD pero si lo está, y hasta que no se cierra la pagina y se abre de nuevo no se "commitea" ese codigo

a alguien le ha pasado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:efecto en BD con AJAX

Publicado por Gonzalo (26 intervenciones) el 25/06/2007 08:26:56
Se me ocurre... Mmmm... podrías probar una cosa?

Haz lo siguiente:
- Entra en la página
- Prueba un código que sepas que ya está
- Sin cerrar la página, ve manualmente a la base de datos y borra ese registro.
- Prueba otra vez ese código.

Si lo que creo es correcto. Te dirá que sigue estando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:efecto en BD con AJAX

Publicado por Adrian (4 intervenciones) el 26/06/2007 06:31:17
Hola, si dice que sigue estando

Alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Es un problema de cache

Publicado por Gonzalo (26 intervenciones) el 26/06/2007 08:12:01
La idea es que es un problema de cache. Tienes que hacer que el script asp devuelva una cabecera para que no se guarde en la cache del navegador, porque si no, por defecto, se guarda y hasta que no cierres la ventana, se usa la copia de cache.

No manejo ASP, pero creo que tienes que poner al principio del script algo como:
<%
Response.ExpiresAbsolute = #2000-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", "private, no-cache, must-revalidate"
%>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Interesante

Publicado por Hector (2 intervenciones) el 26/06/2007 16:46:44
Hola

Ya esto me pasado y no tenia idea de como solucionarlo
quisiera saber la forma de llevar este script a php..

Alguna ayuda....

Gracias....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Interesante

Publicado por Aristides (3 intervenciones) el 26/06/2007 17:44:34
Mira, no entiendo lo que dices , que script?, lo del response... en asp?

tienes la función header("") y entre las comillas pones el header que vas a mandar.

Aun no he probado si lo que dice gonzalo sirve, ahora cuando termine de almorzar lo probaré, pero debe ser eso mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcionó?

Publicado por Gonzalo (26 intervenciones) el 27/06/2007 18:13:54
Lo pudiste probar al final? Funcionó?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcionó?

Publicado por Aristides (3 intervenciones) el 28/06/2007 19:57:22
Diculpa la demora gonzalo, estaba de viaje , probaré
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcionó?

Publicado por Aristides (4 intervenciones) el 05/07/2007 19:16:39
Hola Gonmzalo, al final si funcionó pero como los headers hay que ponerlos al principio de la pagina tuve que hacer una restructuración
igual gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar