Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Problema ao passar variavel js para PHP

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Problema ao passar variavel js para PHP

    Eae galera, estou com um problema que vem tirando meu sono, eu estou desenvolvendo (tentando) um sistema de frete, vou tentar explicar um pouco:

    O usuário escolhe o estado origem, é carregado as cidades desse estado, o mesmo ocorre com o estado destino. Depois disso o usuário clica em procurar, nesse momento é feita uma busca pra ver se existe alguma transportadora que atende a essas duas cidades, se existir aparece o nome da transportadora e suas restrições, junto com as transportadoras aparece o mapa, onde o usuário pode clicar para traçar a rota, até aqui ta funcionando, a rota é traçada normalmente, eu até consigo pegar a distância em metros, agora eu gostaria de pegar esses metros e colocar em uma variável PHP, procurei em vários lugares, li alguns artigos, mas não estou conseguindo.

    Aqui está até onde eu fiz:

    Código PHP:
    echo'

        <input type="button" onclick="revRoute();" class="revRoute"/>
            <div class="left">
                <form onsubmit="calcRoute();return false;" >
                    <label for="inputStart" class="inputStart" ></label> 
                    <input type="text" class="text" value="'
    .htmlentities($corigem).','.htmlentities($eorigem).'" id="inputStart"  />
                    <label for="inputEnd" class="inputEnd"></label> <input type="text" class="text" value="'
    .htmlentities($cdestino).','.htmlentities($edestino).'" id="inputEnd" />
                    <input type="submit" value="Traçar Rota" />
                    <input type="hidden" id="dados" name="dados_enviar" value="" />
                </form>  
            </div>
                                
            <div id="mapa" class="mapa"></div>
            <div id="directionsPanel">'
    ;
                
    $dist $_POST'dados_enviar'];
            echo 
    '</div> 
            <hr />


            <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
                <script type="text/javascript">
                    var directionDisplay;
                    var directionsService = new google.maps.DirectionsService();
                    var route = false;
                    var map;
                    var marker;
                    var geocoder;
                    function initialize() {    
                        directionsDisplay = new google.maps.DirectionsRenderer();
                        geocoder = new google.maps.Geocoder();
                        var myLatlng = new google.maps.LatLng(-23.5489433, -46.6388182);
                        var myOptions = {
                            zoom: 17,
                            center: myLatlng,
                            mapTypeControl: true,
                            mapTypeId: google.maps.MapTypeId.ROADMAP
                        }
                        map = new google.maps.Map(document.getElementById("mapa"), myOptions);
                        directionsDisplay.setMap(map);
                        directionsDisplay.setPanel(document.getElementById("directionsPanel"));
                    }
                    function calcRoute() {
                        if (marker) marker.setMap(null);
                        route = true;
                        var start = document.getElementById("inputStart").value;
                        var end = document.getElementById("inputEnd").value;
                
                        var request = {
                            origin:start, 
                            destination:end,
                            travelMode: google.maps.DirectionsTravelMode.DRIVING
                        };
                        directionsService.route(request, function(response, status) {
                            if (status == google.maps.DirectionsStatus.OK) {
                                directionsDisplay.setDirections(response);
                                var distancia;
                                var objetoDados = document.getElementById("dados");
                                           
                                var rota = response.routes[0]; /* Primeira rota */
                                var etapa = rota.legs[0]; /* única etapa dessa rota */
                                            
                                distancia = etapa.distance.value;
                                objetoDados.value = distancia;
                                alert ("Aproximadamente => " + Math.round(distancia / 1000) + " km.");

                            }
                         });
                    }
                                    
                    function revRoute(){
                        var divStart = document.getElementById("inputStart");
                        var divEnd = document.getElementById("inputEnd");
                        var start = divStart.value;
                        var end = divEnd.value;    
                            divStart.value = end;
                            divEnd.value = start
                        if( route == true){
                            calcRoute();    
                        }
                    }
            </script>
                                    

        </div>'


  • Font Size
    #2
    Se você consegue manusear este dado em uma variável em JavaScript, pode setar um input do tipo hidden:
    Código HTML:
    <input type="hidden" name="distancia" id="distancia" value="0" />
    E então ir setando seu valor com Javascript:
    Código HTML:
    document.getElementById('distancia').value = variavel_de_valor;
    Assim, com o submit do formulário, este dado também é enviado, de forma oculta.
    Este material pode ser compartilhado, desde que os devidos créditos sejam dados.



    Notify-list · Twitter · Blog

    Nova lei: Invadir computadores protegidos é crime.
    Lógica: Se eu invadi, não é protegido. Logo, não é crime :-)

    Comment


    • Font Size
      #3
      Eae 0kal, obigado por responder...
      Eu fiz desse jeito mas fica dando esse erro:
      Notice: Undefined index: distancia

      Eu até ja fiz um if com isset, mas ai nem aparece.

      Comment


      • Font Size
        #4
        Este erro significa que o ítem "distancia" não existe no array procurado ($_POST ou $_GET, por exemplo).
        Tem certeza que o nome do campo está correto? O campo está dentro do formulário?
        Envie o código do formulário que é submetido, para uma análise.
        Este material pode ser compartilhado, desde que os devidos créditos sejam dados.



        Notify-list · Twitter · Blog

        Nova lei: Invadir computadores protegidos é crime.
        Lógica: Se eu invadi, não é protegido. Logo, não é crime :-)

        Comment


        • Font Size
          #5
          Esse é o formulário:

          Código PHP:

            
          echo'

              <input type="button" onclick="revRoute();" class="revRoute"/>
              <div class="left">

              <form onsubmit="calcRoute();return false;" >

                   <label for="inputStart" class="inputStart" ></label> 
                   <input type="text" class="text" value="'
          .htmlentities($corigem).','.htmlentities($eorigem).'" id="inputStart"  />
               <br />
               <label for="inputEnd" class="inputEnd"></label> <input type="text" class="text" value="'
          .htmlentities($cdestino).','.htmlentities($edestino).'" id="inputEnd" />
               <input type="submit" value="Traçar Rota" />
               <input type="hidden" id="distancia" name="distancia" value="0" />

              </form>  
          </div> 

          Comment


          • Font Size
            #6
            Eae galera, consegui resolver meu problema, e fiquei até envergonhado de tão simples que era
            Era só utilizar o método $.post() do jquery.

            Valeu ae 0kal por tentar me ajudar

            Comment

            X
            Working...
            X