Jump to content


Photo

Enviar formulario por ajax y php


  • Please log in to reply
2 replies to this topic

#1 wolfmoon

wolfmoon

    Member

  • Miembros
  • PipPip
  • 13 posts

Posted 09 July 2013 - 06:29 AM

Tengo que enviar un form por ajax y php. El codigo me funciona correctamente (en apariencia), si yo introduzco un correo existente me devuelve una respuesta 2 y me dice que el correo ya existe, si introduzco un correo nuevo se me ingresa en la base de datos, y la respuesta esta vez es 1, es decir, que ya esta suscrito.
El problema viene cuando ya se ha introducido un correo, si vuelvo a intentar introducir un correo nuevo la respuesta esta vez es la 2, aunque efectivamente si que me ingresa los datos en la bd. Lo mismo pasa cuando la primera vez que envio el form el correo ya existe, si meto uno nuevo a continuacion me vuelve a enviar la 2, aunque tambien se efectua el ingreso en la bd.... alguna idea??

Saludos a la comundiad

Los codigos

class Contacto extends Tabata
{



public function addLector(){

if(empty($_POST["email"]) or Tabata::validarEmail($_POST["email"])==false){
// echo " ";


}else{
parent::con();
$consulta = sprintf("select id_cliente from newsletter where
email = %s",
parent::comillas_inteligentes($_POST["email"])
);
$result = mysql_query($consulta);



if (mysql_num_rows($result) == 0) {
//insertamos el correo
$inserto = sprintf("
INSERT INTO newsletter VALUES(
null,' ',%s,now()
);", parent::comillas_inteligentes($_POST["email"]));
mysql_query($inserto);
echo "1";exit;

}else{
echo "2";exit;
}

}


}



[js] $('#signup').submit(function() { 

var url = $(this).attr('action'),
data = $(this).serialize(),
$menssage = $('#errorNews')


$.post(url, data, function(datas) {

if(datas==0) {
$menssage.slideDown(200, function(){
$menssage.html('<p>Los datos ingresados son incorrectos</p>');
$('#signup')[0].reset();

})
}

if(datas==1) {
$menssage.slideDown(200, function(){
$menssage.html('<p>Ya estás suscrito a nuestro boletín, gracias</p>');
$emailNews.val("");
$menssage.delay(800).fadeOut(300);

})
}

if(datas==2) {
$menssage.slideDown(200, function(){
$menssage.html('<p>Tu email ya exite en nuestra base de datos</p>');
$emailNews.val("");
$menssage.delay(800).fadeOut(300);

})
}


});

return false;
}); [/js]
  • 0

#2 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 posts
  • LocationMy House @ México

Posted 09 July 2013 - 09:48 AM

Bueno amigo el primer problema es que la base de datos acepta esos datos.

Sugeriria añadir "unique" al campo donde tienes el correo. y como segunda que tu PHP haga la validacion y regrese una respuesta, asi el AJAX solo mostrara la respueta, asi ya no tienes que evaluarla con Ajax.

Aquí un ejemplo de lo que hice yo en PHP para usuarios:


public function obtenerUsuarios($parametros = array()){
$valores = null;
$consulta = "SELECT * FROM usuarioregistrado";

if(isset($parametros["id"])){
$consulta .= " WHERE idusuarioregistrado = :id";
$valores = array("id"=>$parametros["id"]);
}

$oConectar = new conectorDB;
$this->usuarios = $oConectar->consultarBD($consulta,$valores); //$oConectar->consultarBD($consulta);
       
return $this->usuarios;
} //Termina funcion ontenerUsuarios();

public function verificaUsuarios($parametros){ //funcion verificar, recibe RFC, OFERENTE y email
$registrados = self::obtenerUsuarios();

foreach($registrados as $index){
if($index["rfc"] == $parametros["rfc"]){
echo "<h3>El RFC ya esta registrado, no es posible registrarlo nuevamente</h3>";
                die;
            }
if($index["oferente"] == $parametros["oferente"]){
echo "<h3>El numero de OFERENTE ya esta registrado, no es posible registrarlo nuevamente</h3>";
die;
}
            if($index["email"] == $parametros["email"]){
echo "<h3>El CORREO ELECTRONICO ya esta registrado, no es posible registrarlo nuevamente</h3>";
die;
            }
}
return true;
} //Termina funcion verificaUsuarios($parametros)


:cheesy:
  • 0

#3 wolfmoon

wolfmoon

    Member

  • Miembros
  • PipPip
  • 13 posts

Posted 10 July 2013 - 08:11 AM

Gracias por contestar.

El tema esta en que el ingreso en la base de datos simpre se hace correctamente, es decir, si el email ya existe no lo vuelve a ingresar y si no existe lo ingresa bien. Lo que me falla es la respuesta que me envia al ajax, no entiendo el porque...
  • 0




IP.Board spam blocked by CleanTalk.