Undefined index

Asked

Viewed 36 times

0

Hello, I am in a project that works with many forms and I need that when the person arrives in the last form, when clicking on Ubmit it sends the result of a variable javascript to the bank. I’ll put only two forms so it doesn’t get huge:

first my duties:

<script type="text/javascript">         
        var arrayPontos = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ];
        var contador = 0; 

            function zeraCont(){ contador = 0;}


            function contarEscolhas(){
                contador ++; 
                if(contador>3){ 
                        alert('Escolha apenas três opções');
                    //for (i=0;i<document.elements.length;++i){
                    //    if(document.questao.elements[i].type == "checkbox"){document.questao.elements[i].checked=0;}
                    //}
                    contador= 0;
                }
            } 

            function arrayPositionMax(array) {
                var max = -Infinity;
                var position = -Infinity;
                for (i = 0; i != array.length; ++i) {
                    if (array[i] > max) {
                        max = array[i];
                        position = i;
                    }
                }
                return position;
            }
            function getPontos(pontos){
                arrayPontos[pontos]++;
            }      
            function finalizar(){  
                var itens = ["Enfermagem", "Eletroeletronica", "Informatica", "Alimentos", "Plasticos", "Logistica", "Administracao", "Quimica", "Meio_Ambiente", "Mecatronica", "Eletronica", "Telecomunicacao", "Seguranca"];
                var resultado = itens[arrayPositionMax(arrayPontos) - 1];
                return resultado;
                //alert("O resultado do seu teste é: "+resultado+"."); 
            }



            function sendToDB(resultado){ 
                //alert("O resultado do seu teste é: "+resultado+"."); 
                $.ajax({
                    type:'post',        //Definimos o método HTTP usado
                    dataType: 'json',   //Definimos o tipo de retorno
                    url: 'resultadoTeste.php?resultado=' + resultado,//Definindo o arquivo onde serão buscados os dados
                    success: function(dados){
                        alert('sucesso!');
                    }
                });
            } 
    </script>

all forms (except last) work as follows:

<form name="questao" method="post" role="login">
                        <section>
                            <div class="row">
                                <div class="col-xs-12 form-group">
                                    <div align = "center">
                                        <br>QUESTÃO 1</br>
                                    </div>
                                    <br> <font size="4,5">Marque três alternativa que expressam o que <b><font color="#f15344">você gostaria de </b></font>trabalhar com:</font></br>

                                    <fieldset name="Q1">
                                        <div class="checkbox" name="Alternativa" value="1">
                                          <label><input type="checkbox" name="Q1[]" value="Enfermagem" onclick="getPontos(1);contarEscolhas()"> <font size="4"> Garantir a saúde das pessoas</font></label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="2">
                                          <label><input type="checkbox" name="Q1[]" value="Eletroeletronica" onclick="getPontos(2);contarEscolhas()"><font size="4"> Máquinas e instalações elétricas</font>
                                        </label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="3">
                                          <label><input type="checkbox" name="Q1[]" value="Informatica" onclick="getPontos(3);contarEscolhas()"><font size="4"> Usar lógica para fazer programas e sistemas</font></label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="4">
                                          <label><input type="checkbox" name="Q1[]" value="Alimentos" onclick="getPontos(4);contarEscolhas()"><font size="4"> Desenvolver, gerenciar e distribuir produtos</font>
                                          </label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="5">
                                          <label><input type="checkbox" name="Q1[]" value="Plasticos" onclick="getPontos(5);contarEscolhas()"><font size="4"> Desenvolver, gerenciar e distribuir produtos alimenticios</font>
                                          </label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="6">
                                          <label><input type="checkbox" name="Q1[]" value="Logistica" onclick="getPontos(6);contarEscolhas()"><font size="4"> Desenvolver, gerenciar e distribuir produtos plásticos</font>
                                          </label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="7">
                                          <label><input type="checkbox" name="Q1[]" value="Administracao" onclick="getPontos(7);contarEscolhas()"><font size="4"> Gerenciar e influenciar pessoas a atingirem metas</font></label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="8">
                                          <label><input type="checkbox" name="Q1[]" value="Quimica" onclick="getPontos(8);contarEscolhas()"><font size="4"> Estudar, manusear e transformar substâncias ou materiais </font>
                                          </label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="9">
                                          <label><input type="checkbox" name="Q1[]" value="Meio Ambiente" onclick="getPontos(9);contarEscolhas()"><font size="4"> Estudar, manusear e transformar substâncias ou materiais para beneficiar natureza</font>
                                          </label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="10">
                                          <label><input type="checkbox" name="Q1[]" value="Mecatronica" onclick="getPontos(10);contarEscolhas()"><font size="4"> Projetar, usar, instalar e controlar  máquinas industriais</font>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="11"> 
                                          <label><input type="checkbox" name="Q1[]" value="Eletronica" onclick="getPontos(11);contarEscolhas()"><font size="4"> Sistemas e aparelhos eletrônicos </font></label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="12"> 
                                          <label><input type="checkbox" name="Q1[]" value="Telecomunicacao" onclick="getPontos(12);contarEscolhas()"><font size="4"> Sistemas e aparelhos de comunicação</font></label>
                                        </div>
                                        <div class="checkbox" name="Alternativa" value="13">
                                          <label><input type="checkbox" name="Q1[]" value="Seguranca" onclick="getPontos(13);contarEscolhas()"><font size="4"> Instruir e garantir a segurança das pessoas e locais </font></label>
                                        </div>
                                    </fieldset><br>
                                    <br>

                                    <div align="right">

                                        <a class="btn btn-laranja" onclick="show('link3');finalizar();zeraCont()">PRÓXIMO</a></br>
                                    </div>
                                </div>
                            </div>
                            </form>

The last form has a button called result at the end with the value of submit, but also performs a function:

<input type="submit" class="btn btn-rosa" value="RESULTADO" onclick="show('link20');sendToDB();">

and has as action a page called result.php:

    <?php
        //Conectando ao banco de dados
        $mysqli = new mysqli("localhost", "root", "", "qct");
        if ($mysqli->connect_errno) {
            echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
        }

        $resultado = $_POST["resultado"];

        //Atualizando banco de dados
        $res = $mysqli->query("UPDATE qct.usuarios SET resultado='".$resultado."' WHERE id=1");  

        //Pais não encontrado
        if (!$res) {
            echo "Query failed: (" . $mysqli->errno . ") " . $mysqli->error;
            //TODO: devolver um objeto JSON vazio
        }
?>
<html> 
<head> 
</head>

<body> 

  <div id="link20" class="dynamic_link" style="display:none">
            <section class="container">
                <section class="login-form">
                    <form method="post" action="resultado.php"  role="login">
                        <section>
                            <div class="row">
                                <div class="col-xs-12 form-group">  

                                    <div align = "center"><font color="#585454">
                                        <br>Seu curso é: <?php echo $resultado ?>


                                        </div>

                                </div>
                            </div>
                        </section>
                    </form>
                </section>
            </section>
        </div>    
    </body>
</html>

The resulting page should display the result of the sum made on the forms page and send this information to the BD, but it displays the message: Notice: Undefined index: resultado in C:\xampp\htdocs\Sites\TCCBinha\questionario\resultado.php on line 8.

I realized that this may be happening precisely because I am not sending the result through ajax as it should.

So my question is whether there is how I pass the value of the result variable that was created in the function finalizar() to my ajax which is in sendToDB. Thank you

  • You do not post result at any time, there is no way to recover this value. If you want to catch with post, you have to send with post, even if it is by Ajax. It is no use sending as a URL variable: url: 'resultadoTeste.php?resultado= - to catch like this, only with $_GET.

  • see here examples of how to make a POST with jQuery: https://api.jquery.com/jQuery.post/

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.