Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/06/2004, 14:27
Avatar de tunait
tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Te hago un planteamiento, a ver si te sirve;

Página con tu formulario de envío, pero en vez de uno, tienes dos:

uno con dos campos de tipo hidden y de nombre form1


<form name="form1" id="form1" method="post" action="verifica.asp">
<input type="hidden" name="archivo" />
<input type="hidden" name="tabla" />
</form>


Y el otro, que es el que yá tienes (nótese que ahora se llama form2) y que el botón yá no es un submit si no un button al que se le ha añadido un onclick que llama a una función javascript.


<form action="insert.asp" method="post" enctype="multipart/form-data" name="form2" id="form2" onsubmit="return enviar2()">
<td><font color="#729DF0">Archivo :</font></td>
<td style="padding: 0" colspan="2"><input type="file" name="file" onkeydown="return borrar()" onkeyup="return borrar()" size="38"></td></tr>
<td><font color="#729DF0">Nick :</font></td>
<td><input type="text" name="name" size="35" value=""></td>
<td><p align="right"><select name="tipo" style="font-size: 9pt">
<option value="audio">Audio</option>
<option value="vhs">Vhs</option>
<option value="dvd">Dvd</option>
<option value="divx">Divx</option>
<option value="carteles">Carteles</option>
<option value="ps1">Ps1</option>
<option value="ps2">Ps2</option>
<option value="xbox">Xbox</option>
<option value="dream">Dreamcast</option>
<option value="gamecube">Gamecube</option>
<option value="pcplay">Juegos Pc</option>
<option value="pcsoft">Software</option>
<option selected value="cero"> - Tipo -</option>
</select></p></td></tr>
<input type="hidden" name="fecha" value="<%=date()%>">
<input type="hidden" name="url" value="/public/uploaded/">
<td> </td><td colspan="2"><br>
<p align="center">
<input type="button" name="Submit" value="Enviar" onclick="Validator(this.form)" />

</form>



ok, debajo del segundo formulario (o donde te dé la gana) colocas un iframe oculto

<iframe name="pepe" style="visibility:hidden;display:none">&nbsp;</iframe>



Y por javascript pones esto (incluye lo que yá tenías)


<script language="JavaScript" type="text/javascript">
var envia = false
function verifica(donde){
document.form1.archivo.value = donde.file.value.split("\\")[donde.file.value.split("\\").length-1]
document.form1.tabla.value = donde.tipo.value
document.form1.target = "pepe"
document.form1.submit()

}
function enviar(){
document.form2.submit()
}
function enviar2(){
return envia
}

//******
function borrar(){
document.formulario.archivo.value = "";
return false;
}

function Validator(theForm)
{
if (theForm.file.value == "")
{
alert("Por favor seleccione un archivo.");
theForm.file.focus();
return (false);
}
if (theForm.name.value == "")
{
alert("Escriba un Nick (nombre).");
theForm.name.focus();
return (false);
}
if (theForm.tipo.value == "cero")
{
alert("Por favor seleccione el tipo de portada.");
theForm.tipo.focus();
return (false);
}
verifica(theForm);
}

</script>


y creas un nuevo archivo asp de nombre verifica.asp que sea algo parecido a esto:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<?xml version="1.0" encoding="iso-8859-1"?>
<!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>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<%
Dim Conexion,rs
Set Conexion = Server.CreateObject("ADODB.Connection") 
Conexion.Open "Driver={Microsoft Access Driver (*.mdb)}; " & "Dbq=" & Server.MapPath("/mdb-database/portadas.mdb") 
cad = "select * from " & request.form("tabla") & " where pal='" & request.form("archivo") & "'"

set rs = Conexion.execute(cad)
if NOT rs.EOF then
%>
<script language="JavaScript" type="text/javascript">
parent.envia = false
parent.alert('La imagen yá existe!')
</script>
<%
else
%>
<script language="JavaScript" type="text/javascript">
parent.envia = true
parent.enviar()
</script>
<%
end if
Conexion.close
set rs = nothing
set Conexion  = nothing
%>
</body>
</html>

Espero no haber metido la pata al cambiar los datos por los tuyos, dado que obviamente las pruebas las hice con otra base de datos (aprovechando una que tenía por ahí) pero creo que está bien.

A mi me ha funcionado.

La idea es:

Al dar intro a un campo no hace submit, hay que darle al botón de enviar
el botón enviar envía a la función que tienes para verificar que estén todos los campos rellenos
Si todo está ok se copian los datos necesarios al formulario oculto y éste se envía al asp nuevo y el resultado carga en el iframe oculto
El asp nuevo verifica si el nombre existe en la bd. Si existe, al cargarse en el iframe envía una alerta advirtiendo que el archivo yá existe.

Si no existe, al cargar el asp nuevo en el iframe envía la orden de que el otro formulario (el form2) se envíe.

Y eso.

Yá me contarás

Saludos.....

Última edición por tunait; 22/06/2004 a las 15:08