entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Verificar status usando ajax, php

hola a todos, tengo un formulario donde envio una solicitud hasta aqui funcina bien el problema es que quiero que valide si ya esta en cierto status o no y no se como hacerlo ya que tengo 3 archivos
el formulario, entra a una función en javascript y luego la función manda a un archivo php

lo dejo aqui

mi boton donde envío los datos

<button onclick="send1approval()" class="btn btn-primary btn-label-left">
                            <span><i class="fa fa-clock-o"></i></span>
                                Submit
                            </button>

function send1approval(){

        var firstname=document.getElementById("firstname").value;
        var lastname=document.getElementById("lastname").value;
        var signum=document.getElementById("signum").value;
        var idmop=document.getElementById("idMop").value;
        var date=document.getElementById("date").value;
        var comments = document.getElementById("wysiwig_full").value=tinyMCE.activeEditor.getContent();
        var sme=document.getElementById("lead_auditor_2").value;
        var smeemail=document.getElementById("lead_auditor_email").value;
        var smesignum=document.getElementById("lead_auditor_signum").value;
        var hour = document.getElementById("reloj").value;
        var ip = document.getElementById("ip").value;

        approval(firstname,lastname,signum,idmop,date,hour,comments,sme,smeemail,smesignum,ip);
        sendmail(firstname,lastname,signum,idmop,date,hour,comments,sme,smeemail,smesignum,ip);
}

function approval(firstname,lastname,signum,idmop,date,hour,comments,sme,smeemail,smesignum,ip){

var params ={
            "FIRSNAME": firstname,
            "LASTNAME": lastname,
            "SIGNUM": signum,
            "IDMOP": idmop,
            "DATE": date,
            "HOUR": hour,
            "COMMENTS": comments,
            "SME": sme,
            "SMESIGNUM": smesignum,
            "SMEMAIL": smeemail,
            "IP": ip,
            "ACT": 'SAVEAPPROVAL1' //type of process which will be used in the ajax call                
        };

        $.ajax({
            data:   params,  // the sent information
            url:    'approval.php', // the server file whc
            type:   'post',
            error: function(response){ //if an error happens it will be processed here
                alert("Error");

            },
            success:    function (response) { // the result of the call will be processed here
                var result = eval(response);

                alert("Sending");
            }
        });
}

y el php

$action =filter_input(INPUT_POST, "ACT");
switch ($action)
{
    case "SAVEAPPROVAL1":
            $firstname= filter_input(INPUT_POST, "FIRSNAME");
            $lastname= filter_input(INPUT_POST, "LASTNAME");
            $signum= filter_input(INPUT_POST, "SIGNUM");
            $idmop= filter_input(INPUT_POST, "IDMOP");
            $date= filter_input(INPUT_POST, "DATE");
            $comments= filter_input(INPUT_POST, "COMMENTS");
            $smea= filter_input(INPUT_POST, "SME");
            $smeb= filter_input(INPUT_POST, "SMESIGNUM");
            $smec= filter_input(INPUT_POST, "SMEMAIL");
            $hour= filter_input(INPUT_POST, "HOUR");
            $ip= filter_input(INPUT_POST, "IP");
            $status = "PRELIMINARY";
            $sql="SELECT * FROM MOPS.dbo.first_approval WHERE idmop='".$idmop."'";
            $rs=odbc_exec($connection,$sql);
            $num= odbc_num_rows($rs);
            if($num<=0)
            {
            $sqlAdd = "INSERT INTO [MOPS].[dbo].[first_approval] 
            (idmop,first_name,last_name,signum,date,hour,sme_firstname,sme_lastname,sme_mail,sme_signum,comments,revision,status) 
            values ('".$idmop."','".$firstname."','".$lastname."','".$signum."','".$date."','".$hour."','','".$smea."','".$smec."','".$smeb."','".$comments."','','".$status."')";
            $rs_tar_add=odbc_exec($connection,$sqlAdd);

            $sqlAddLog = "INSERT INTO [MOPS].[dbo].[logs] (ip,signum,idmop,[date],[hour],[status]) values ('".$ip."','".$signum."','".$idmop."','".$date."','".$hour."','".$status."')";
            $rs_tar_add1=odbc_exec($connection,$sqlAddLog);

            }

    break;

}

espero darme a entender, no se como validarlo por favor ayuda

0voto

Leonardo-Tadei comentado

Decís "el problema es que quiero que valide si ya esta en cierto status o no y no se como hacerlo", pero no nos decís cómo se guarda el estado, qué valores pueden tomar, ni qué respuesta querés obtener según el estado en que se encuentra.

0voto

rach comentado

hola @Leonardo-Tadei tal vez no me di a entender, voy a poner otra consulta donde si el usuario tiene un status="Preliminary" entonces me mande una alerta y no se como hacerlo con el código que tengo,

0voto

Leonardo-Tadei comentado

Es que en ningún momento antes de este comentario mencionás que el usuario tiene un estado, y que uno de los valores de este estado puede ser Preliminary

Cuál es la estructura de la tabla "usuario" ? Cuál es la clave por la que acceder a esta tabla para recuperar el estado del usuario con los datos recibidos por el script PHP ?

Qué mecanismo tenés que usar para enviar la alerta (un SMS, un e-mail, un mensaje en pantalla, etc) ???

0voto

rach comentado

me basta con una alerta en pantalla que diga que el status=="PReliminary"
si encuentra este status que me mande el mensaje de error o lo que sea, mi problema no es con la estructura de la tabla porq ahora ahora hace lo que necesito, simplmente necesito una validación que compruebe ese status que mencione arriba y que lo haga dentro del javascript, y quería ver si alguien me puede mostrar un ejemplo

1 Respuesta

3votos

Leonardo-Tadei Puntos227320

Hola @rach,

con tus ampliaciones se alcanza a comprender mejor la cuestión.

Ya tenés escrito casi todo el código que necesitás para mostrar el mensaje cuando el usuario está en estado Preliminary acá:

$.ajax({
        data:   params,  // the sent information
        url:    'approval.php', // the server file whc
        type:   'post',
        error: function(response){ //if an error happens it will be processed here
            alert("Error");

        },
        success:    function (response) { // the result of the call will be processed here
            var result = eval(response);

            alert("Sending");
        }
    });

Estás capturando la respuesta de tu script PHP en el apartado "success". La varialbe "response" tendrá lo que sea que haya devuelto tu script.

Lo que tenés que hacer es ver qué contiene esa varialbe y actuar en consecuencia, para lo cual tenés que determinar qué es lo que responde tu script PHP (la porción de código qeu mostrás no devuelve nada. Lo que sea que quieras que devuelva lo podés poner con un simple print() o devolver algo más complejo como una estructura JSON, etc)

No suele ser buena idea hacer un simple eval() de la respuesta como hacés ahora, al menos sin analizar lo que vas a ejecutar. Tampoco estila mostrar un alert(), que detiene toda ejecución del código, y en lugar se usa poner un texto en un DIV y dcorarlo con un color contextual según el tipo de respuesta.

Si por ejemplo ponés un DIV con ID="msg", podrías mostrar un print del script PHP así:

success:    function (response) { // the result of the call will be processed here
   document.getElementById("msg").innerHTML = response;
}

Luego esta solución se puede decorar mejor haciéndola visible solo al rescibir una respuesta o poniéndole un color de fondo con una clase por ejemplo.

Saludos cordiales

0voto

rach comentado

hola @Leonardo-Tadei muchas gracias por responder, pero sabes aún no me queda muy claro, entiendo que le estoy mandando los datos por medio de una petición ajax pero necesito validar no que haga la consulta como lo hace ahora si no que haga una busqueda para validar si es o no preliminary y de esa manera que me lo muestre en un div o como sea y no se como hacerlo, si tuvieras un ejemplo te lo agradecería mucho
Saludos

0voto

Leonardo-Tadei comentado

La validación de los datos, la tenés que hacer en el script PHP que recibe la petición AJAX.

La validación de si es o no "preliminary" la hacés con una query de toda la vida a la DB. Según el resultado de ese campo sabrás si tenés que agregar un registro o si tenés que actualizar el existente.

Para mostrar la respeusta en un DIV, es con la porción de código que te pongo más arriba.

No es que no quiera armarte un ejemplo, es que son 3 cosas, 2 de las cuales dependen del resto de tu aplicación.

La 3er cosa que es la parte de mostrar los resultados en el DIV, es la del ejemplo de más arriba (que podrías probar poniendo un mero print() en el código PHP que recibe la petición AJAX, aunque no hagas ningún proceso.

Por ser tantas cosas, tal vez debas abrir una pregunta específica para cada una, porque de otra forma es inviable armar código que te funcione...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta