Les cuento lo que quiero hacer rapidito:
ya tengo un registro de usuarios con php y quisiera implementarle ajax, es decir que cuando se envie mediante POST no se refresque la pagina y aparezca el bloque que me indique el error o si se registro bien, todo esto sin refrescar.
Este es mi REGISTRO.PHP :
Código:
bueno el codigo php me funciona perfecto pero ahora lei un poco hacerca de Jquery y su funcion Ajax y cree un codigo que capas me funcione, se los dejo y me dicen si estoy errado o entendi mal o me faltan unas cosas (no soy bueno en JS empece solo hace semanas)echo'<table border="0" align="center"><tr><td align="center">';
//Formulario de registro
if (isset($_POST['submit']))
{
//Controlamos los campos vacios
if (empty($_POST['nick']) || empty($_POST['email']) || empty($_POST['pass']) || empty($_POST['repass']))
{
echo '<div class="redbox">Se deben completar todos los campos</div>';
}
//Restringimos el nick y el pass a solo A-Z y 0-9 y de 4 a 20 caracteres
elseif (!validar_np($_POST['nick']) || !validar_np($_POST['pass']))
{
echo '<div class="redbox">Nick y contraseña solo admiten letras y numeros entre 4 y 20 caracteres</div>';
}
//Validamos el email con un filtro
elseif (!validar_mail($_POST['email']))
{
echo '<div class="redbox">El email no es valido</div>';
}
//Controlamos si las pass son distintas
elseif ($_POST['pass'] <> $_POST['repass'])
{
echo '<div class="redbox">Las contraseñas no coinciden</div>';
}
else
{
//Nos fijamos si el nick ya existe
$nick = mres($_POST['nick']);
$sql = "SELECT nick FROM usuarios WHERE nick='$nick'";
$query = mysql_query($sql);
if ($nick = @mysql_fetch_array($query))
{
echo '<div class="redbox">El nick ya esta registrado</div>';
}
//Esta todo correcto, entonces cargamos variables a la DB
else
{
$nick = mres($_POST['nick']);
$pass = mres(md5($_POST['pass']));
$email = mres($_POST['email']);
$date = time();
$ipuser = $_SERVER['REMOTE_ADDR'];
$query = "INSERT INTO usuarios (nick,email,pass,fecha,ip) VALUES ('$nick','$email','$pass','$date','$ipuser')";
$resul = mysql_query($query);
if (!$resul)
{
echo '<div class="redbox">Se ha producido un error</div><meta http-equiv="Refresh" content="2;url=/">';
}
//Todo salio bien y se acaba de registrar
else
{
echo '<div class="greenbox">Registro exitoso! Ahora ingrese sus datos...</div>
<meta http-equiv="Refresh" content="2;url=/index.php?p=login">';
}
}
}
}
echo '</td>
<tr>
<tr>
<td align="center">
<div class="title" style="width:500px">Registrate</div>
<div class="window" style="width:500px">
<form id="registro" name="registro" method="post"/>
<table width="430" height="100" border="0" align="center">
<tr>
<td collspan="2"><div id="mensaje"></div></td>
</tr>
<tr>
<td width="215" align="left"><h3>Nick</h3></td>
<td width="215" align="right"><input type="text" id="nick" name="nick" class="campo"/></td>
</tr>
<tr>
<td align="left"><h3>Email</h3></td>
<td align="right"><input type="text" id="email" name="email" class="campo"/></td>
</tr>
<tr>
<td align="left"><h3>Contraseña</h3></td>
<td align="right"><input type="password" id="pass" name="pass" class="campo"/></td>
</tr>
<tr>
<td align="left"><h3>Confirmar Contraseña</h3></td>
<td align="right"><input type="password" id="repass" name="repass" class="campo"/></td>
</tr>
<tr>
<td></td>
<td align="right"><input type="submit" id="submit" name="submit" class="boton boton-verde" value="Registrar"/>
<input type="reset" name="limpiar" class="boton boton-gris" value="Limpiar" /></td>
</tr>
</table><hr><center><a href="index.php?p=login" class="bold px14">¿Ya estas registrado?</a></center>
</form>
</div>
</td>
</tr><tr>
<td></td></tr></table>';
Código:
¿Como puedo unir las funciones de php con Jquery?<script type="text/javascript">
$(document).ready(function(){
$("form#registro").submit(function() {
var nick = $("#nick").attr("value");
var email = $("#email").attr("value");
var pass = $("#pass").attr("value");
var repass = $("#repass").attr("value");
$.ajax({
type: "POST",
url: "index.php?p=registro",
data: " nick="+nick+" &
email="+email+" &
pass="+pass+" &
repass="+repass,
success: function(){
$("form#registro").hide(function(){$("div.redbox").fadeIn();});
}
});
return false;
});
});
</script>
Muchas gracias.


