Foros del Web » Programando para Internet » Javascript »

Validacion formulario conjunta validacion en BD php

Estas en el tema de Validacion formulario conjunta validacion en BD php en el foro de Javascript en Foros del Web. Muy buenas a todos Viendo casos de este foro hay casos que se parecen pero creo que este es algo diferente. Tengo un formulario: <FORM ...
  #1 (permalink)  
Antiguo 10/07/2005, 00:13
Avatar de Carlos1975  
Fecha de Ingreso: mayo-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 0
Validacion formulario conjunta validacion en BD php

Muy buenas a todos
Viendo casos de este foro hay casos que se parecen pero creo que este es algo diferente.

Tengo un formulario:
<FORM ACTION="registrar.php" METHOD="post">
<table width="775" border="0" cellspacing="0">
<tr>
<td height="20" colspan="5" bgcolor="#FFA346" class="titulos" align="center">Inserte sus datos de registro</td>
</tr>
<tr>
<td height="15" colspan="5"></td>
</tr>
<tr>
<td width="83"></td>
<td width="241" class="titulo1"><div align="right">Nombre o Nick :</div></td>
<td width="47" height="20"></td>
<td width="390"><input name="nick" type="text" class="campos" size="30"></td>
<td width="4"></td>
</tr>
<tr>
<td></td>
<td></td>
<td height="15"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td class="titulo1"><div align="right">Provincia o País:</div></td>
<td height="20"></td>
<td><input name="provincia" type="text" class="campos" size="30"></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td height="15"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td class="titulo1"><div align="right">Url :</div></td>
<td height="20"></td>
<td><input name="url" type="text" class="campos" size="30" value="http://"></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td height="15"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td class="titulo1"><div align="right"><strong>Email :</strong></div></td>
<td height="20"></td>
<td><input name="email" type="text" class="campos" size="30"></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td height="15"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td class="titulo1"><div align="right">Password :</div></td>
<td></td>
<td><input name="pass1" type="password" class="campos" size="30" maxlength="8"></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td height="15"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td class="titulo1"><div align="right"><strong>Repita password :</strong></div></td>
<td></td>
<td><input name="password" type="password" class="campos" size="30" maxlength="8"></td>
<td></td>
</tr>
<tr>
<td height="15" colspan="5"></td>
</tr>
<tr>
<td colspan="3"><div align="right"><input name="enviar" type="submit" class="formula" onClick="Validar(this.form)" value=" Enviar "></div></td>
<td colspan="2"><div align="left"><input name="restablecer" type="reset" class="formula" value=" Restablecer "></div></td>
</tr>
<tr valign="bottom">
<td height="20" colspan="5" align="center"><hr noshade width='700' size='1' color='#FF6600'></td>
</tr>
<tr>
<td align="center" colspan="5" height="10" valign="top" class="fuentepequeña">Gracias por colaborar con nosotros, registrarse no implica compromiso alguno solo es para llevar un control sobre vuestros mensajes.</td>
</tr>
</table>
</form>

Como veis normalito y tengo una funcion javascript Validar();

<script LANGUAGE="JavaScript">
function Validar(form) {
if (form.nick.value == "")
{ alert("Por favor ingrese su nombre"); form.nick.focus(); return; }

if (form.email.value == "")
{ alert("Por favor ingrese su dirección de e-mail"); form.email.focus(); return; }

if (form.provincia.value == "")
{ alert("Por favor diga en que provincia o pais reside"); form.provincia.focus(); return; }

if (form.password.value != form.pass1.value)
{ alert("Los campos password no coinciden"); form.password.focus(); return; }

form.submit(); location.replace(registrar.php);
}

</script>

hasta aqui todo funciona bien pero el problema que cuando envio, en el primer campo que se deja vacio el usuario me sale el alert correspondiente pero me manda directamente a registrar.php y es que en este archivo hay una comprobacion de campos en la Base de datos para saber si este usuario ya existe o no para que escoga otro nick.
Como O porque mejor dicho no termina de realizar la funcion Validar() y me pasa directamente al siguiente archivo?
He probado con onSubmit="return Validar(this.form)" colocado en el <form action al principio de formulario.
Aqui va el php.

<?php

$link = mysql_connect("localhost", "nobody");
mysql_select_db("mardedios", $link);

function quitar($mensaje) {
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "") {
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result)) {
echo "<table align='center' class='tablanormal'>";
echo "<tr><td align='center' class='fuenteroja'>Error, nick escogido por otro usuario</td></table>";
}

else {
$sql = "INSERT INTO usuarios (nick, password, provincia, url, email) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["provincia"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["url"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ")";
mysql_query($sql);
echo "<table align='center' class='tablanormal'>";
echo "<tr><td align='center' class='fuenteroja'>Registro exitoso! si esta pagina no se redirecciona pulse <a href='ingreso.php'><span class='fuenteroja'>aquí</span></td></table>";
}

mysql_free_result($result);
}
else {
echo "<table align='center' class='tablanormal'>";
echo "<tr><td align='center' class='fuenteroja'>Por favor ingresa los campos nick, provincia, email y passwords.</td></table>";
}
mysql_close();

include("formregistro.php");

?>
  #2 (permalink)  
Antiguo 10/07/2005, 00:17
Avatar de Carlos1975  
Fecha de Ingreso: mayo-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 0
re:

Todo el codigo funciona bien asi que si lo quereis aprovechar ya sabeis copypaster y listo son dos archivos formulario y registrar pero por favor si teneis alguna ayuda.................
Salu2
  #3 (permalink)  
Antiguo 10/07/2005, 03:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Carlos,

el tema es que cuando le das al botón de submit, realiza el submit. En el onclick le indicas que pase por la función validadora pero no le das relación al resultado de la función y al submit.

Esto que hiciste

onSubmit="return Validar(this)"

es correcto, pero no te está funcionando porque la función no devuleve false como debería hacer, fíjate que en la función en los casos en los que el campo esté vacío solo pone return pero nada más.

agrega un false tras esos return y usa onSubmit="return Validar(this)" en el tag de form y te debería funcionar como quieres

{ alert("Por favor ingrese su nombre"); form.nick.focus(); return false; }
{ alert("Por favor ingrese su dirección de e-mail"); form.email.focus(); return false; }

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 12:59.