Pass the value of an option to another option without going through pages

1

I have an option

<p> Curso:
    <select name='curso' id="aparecercurso" class="escolhercursos">
        <option>Nenhum</option>
        <? 

            $sqlcursos = "SELECT designacao FROM cursos";

            $respostacurso = mysql_query($sqlcursos,$conexao);

            while ($curso = mysql_fetch_array($respostacurso)) 
            {

            echo "<option> ".$curso['designacao']."</option>";

            }


            ?>
    </select>
</p>

And I wanted to use the value I chose in this option to open another like this:

    <p> Disciplina:
                            <select name='disciplina' required tabindex="9">
                                <? 
                                $escolha = $_POST['curso'];
                                $sqltentar = "SELECT d.designacao_disciplina 
                                              FROM disciplinas d, disc_curso dc, cursos c 
                                              WHERE c.designacao = '".$escolha."'
                                              AND d.cod_disciplina = dc.cod_disciplina
                                              AND dc.n_curso = c.n_curso ";

                                $respostacurso = mysql_query($sqltentar,$conexao);

                                while ($rowcurso = mysql_fetch_array($respostacurso)) 
                                {

                                    echo "<option> ".$rowcurso['designacao_disciplina']."</option>";

                                }


                                ?>
                            </select>
                        </p>

I just do not know how to pass the value of the first option to the next one. I've already tried as above to go through POST but I think it would only happen after clicking submit. With javascript I just got the id of the element but then how would I pass it to PHP again?

    
asked by anonymous 25.04.2016 / 18:18

1 answer

1

Your answer is AJAX. Test this function:

<script>
$(function(){

    //Toda vez que o curso for selecionado. Nota: a primeira op'cao tem que ser do tipo "Escolha o seu curso" com Id=0 por exemplo
    $(document).on("change", "#aparecercurso", function(){
      var cursoID = $(this).val();
      //alert(spaID);

      if(cursoID>0){
         var dt={ 
                    curso:cursoID
                };
        //FUncao AJAX manda dados dt para a pagina minhaQuery.php e espera receber um JSON de volta
        var request =$.ajax({//http://api.jquery.com/jQuery.ajax/
                    url: "minhaQuery.php",
                    type: "POST",
                    data: dt,
                    dataType: "json"
                    }); 

        //Se tudo se passar bem com a requisicao
            request.done(function(dataset){
                for (var index in dataset){ 
                     var seelctJS=dataset[index].select;
                 }

                 //Insira o select dentro da div
                $( "#selectCourseResp" ).html( seelctJS );
         }); 
        //Se AJAX falhar
            request.fail(function(jqXHR, textStatus) {
                alert("Request failed: " + textStatus);
            }); 

      }//End of if(cursoID>0)     
   }); //End of $(document).on("change", ...     
});//End of $(function(){
</script>    

//No seu HTML crie essa div vazia
<div id="selectCourseResp"></div>

//Do lado PHP minhaQuery.php

<?php
$str=""//Declare a variável. Se PHP estiver funcionando no modo strict vai      //gerar um warnig que pode bloquear o processo. Não é um erro mas um warning
$str .= "<select name='disciplina' required tabindex='9'>";

    $escolha = $_POST['curso'];
    $sqltentar = "SELECT d.designacao_disciplina 
                  FROM disciplinas d, disc_curso dc, cursos c 
                  WHERE c.designacao = '".$escolha."'
                  AND d.cod_disciplina = dc.cod_disciplina
                  AND dc.n_curso = c.n_curso ";

    $respostacurso = mysql_query($sqltentar,$conexao);

    while ($rowcurso = mysql_fetch_array($respostacurso)) 
    {

        $str .= "<option> ".$rowcurso['designacao_disciplina']."</option>";

    }
$str .= "</select>";
?>
$arrToJSON = array(
    "select"=>$str
    );  
return json_encode(array($arrToJSON));
    
25.04.2016 / 19:00