Ir al contenido


Foto

Enviar formulario por ajax y php


  • Por favor identifícate para responder
2 respuestas en este tema

#1 wolfmoon

wolfmoon

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 09 julio 2013 - 06:29

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 mensajes
  • LocationMy House @ México

Escrito 09 julio 2013 - 09:48

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 mensajes

Escrito 10 julio 2013 - 08:11

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.