Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eder Cuer

Enviar um forma automático a partir de outro.

Recommended Posts

Eae rapaziada esbarrei em um problema que to tentando resolver e pesquisando à hooooooras.

Eu tenho um formulário onde o usuário escolhe estados/cidades origens e destinos, assim que o usuário clica em pesquisar aparece os resultados e um mapa do google maps, mas ai aparece um outro formulário para traçar a rota.

Teria como eu fazer esse formulário já ser executado assim quando ele carrega?

 

obs: A parte que carrega é feita em php

 

Fiz umas imagens, acho que da pra entender melhor

 

img2en.jpg

 

img3.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu coloquei na tag spoiler porque o código ta um pouco grande.

Rafael eu já tentei fazer isso mas não envia.

 

 

 

 

<?php
session_start();
include("include/connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="css/css.css">
<title>Administrativo</title>

<style type="text/css">
<style>

label.inputStart,label.inputEnd,.revRoute{ background-image:url(images/sprite.png); background-repeat:no-repeat; }
#mapa { width:680px; height: 300px; }  
input.text {font-size:12px;margin-bottom:5px;outline:medium none;padding:5px;text-indent:5px;width:300px;}  
.revRoute{margin:18px 5px 0 0;width:18px;height:18px;float: left;border:0;background-position:0 -32px; cursor :pointer ;}
label{float:left;display:block;width:16px;height:16px; margin:5px 5px 0 0;}
.inputStart{background-position:0 0;}
.inputEnd{background-position:0 -16px;}
.left{float:left; clear:both; margin-top: 20px;} 
</style>

   <script src="script/jquery.js" type="text/javascript"></script>
	<script src="script/jquery.validate.js" type="text/javascript"></script>
   <script src="script/metadata.js" type="text/javascript"></script>
   <script src="script/maskedinput-1.3.js" type="text/javascript"></script>
   <script src="script/validacpf.js" type="text/javascript"></script>

<script type="text/javascript">

$(document).ready(function(){

	$("select[name=estadoOrigem]").change(function(){

		$("select[name=cidadeOrigem]").html('<option value="0">Carregando...</option>');

		$.post("cidades.php",
			   {estado:$(this).val()},
			   function(valor){

			   		$("select[name=cidadeOrigem]").html(valor);

			     }
			   )

	})

})

</script>


<script type="text/javascript">

$(document).ready(function(){

	$("select[name=estadoDestino]").change(function(){

		$("select[name=cidadeDestino]").html('<option value="0">Carregando...</option>');

		$.post("cidades.php",
			   {estado:$(this).val()},
			   function(valor){

			   		$("select[name=cidadeDestino]").html(valor);

			     }
			   )

	})

})

</script>

<script type="text/javascript">

$(function(){
	//Função que ao clicar no botão, irá fazer.
	$("#tracar").click(function(){
	//Irá esconder a div do formulario que é o formularioEmail, com efeito em slow.

		var distancia = $("#distancia").val();

		//Enviando as variáveis com os valores para a página envia_formulario.php e criando uma nova função para pegar o retorno da página envia_formulario.php
		$.post("calcula.php", { distancia:distancia }, function(get_retorno) {
		//Depois que foi completado o cadastro e tem a mensagem de retorno, esconde a div carregando_form que tem a barra de carregamento.

		$("#preco").show("slow").text(get_retorno);

		});
	});
});

</script>

</head>

<body onload="initialize();">

<?php

//Iniciando a sessão
if($_SESSION['logado'] == 1){
$sql = "SELECT * FROM usuario WHERE cod_user = ".$_SESSION['id_user'];
$rs = mysql_query($sql);
if(mysql_num_rows($rs)) {
	$user = mysql_fetch_array($rs);
	echo'
	<div id="geral">';

			include ("include/topo.php");
			include ("include/menu.php");

	echo'
		<div id="conteudo">
			<div id="conteudo_int">
				<div style="border: 1px solid; margin-right: 10px; margin-top: 10px; width: 680px; float: right;">
					<table border="0" width="100%">
						<tr>';

				if($_SERVER['REQUEST_METHOD']=="POST") {

					$cidorigem  = $_POST['cidadeOrigem'];
					$ciddestino = $_POST['cidadeDestino'];
					$estorigem  = $_POST['estadoOrigem'];
					$estdestino = $_POST['estadoDestino'];


					$sql = "SELECT t2.cod_transp,
      t2.nome
FROM   (SELECT t1.cod_transp,
              t1.nome
       FROM   transportadora t1
              INNER JOIN mrh_transportadora mt1
                ON mt1.cod_transp = t1.cod_transp
              INNER JOIN mrh_cidade mc1
                ON mc1.cod_mrh = mt1.cod_mrh
       WHERE  mc1.cod_cid = $cidorigem) t2
      INNER JOIN mrh_transportadora mt2
        ON mt2.cod_transp = t2.cod_transp
      INNER JOIN mrh_cidade mc2
        ON mc2.cod_mrh = mt2.cod_mrh
WHERE  mc2.cod_cid = $ciddestino";


					$sqlco = "SELECT * FROM cidade WHERE cod_cid=".$cidorigem;
					$sqlcd = "SELECT * FROM cidade WHERE cod_cid=".$ciddestino;
					$sqleo = "SELECT * FROM estado WHERE cod_estado=".$estorigem;
					$sqled = "SELECT * FROM estado WHERE cod_estado=".$estdestino;

					$resulto = mysql_query($sqlco);
					$origem = mysql_fetch_array($resulto);
					$corigem = $origem['nome'];


					$resultd = mysql_query($sqlcd);
					$destino = mysql_fetch_array($resultd);
					$cdestino = $destino['nome'];

					$resulteo = mysql_query($sqleo);
					$esorigem = mysql_fetch_array($resulteo);
					$eorigem = $esorigem['nome'];


					$resulted = mysql_query($sqled);
					$esdestino = mysql_fetch_array($resulted);
					$edestino = $esdestino['nome'];

					$result = mysql_query($sql);

					echo '<h2 align="center">Transportadoras X Cidade</h2>';

					for ( $i = 0 ; $i < mysql_num_rows($result); $i++ ) {
						$nome        = mysql_result($result, $i, 'nome');
						$cod      = mysql_result($result, $i, 'cod_transp');


						echo'<div style="border: 1px solid #000000; float:left; margin-left: 15px; margin-top: 5px;">
								<div><img src="img/scania.jpg" width="130" height="88" /></div>
								<div>Codigo: '.$cod.' </div>
								<div>Preço: <div id="preco" style="float:right; width: 60px; padding-right:10px; "></div> </div>
								<div style="clear:both"><a target="blank" href="verrest.php?cod='.$cod.'">Ver Restrições</a></div>
							 </div>';

					}

						echo'

							<input type="button" onclick="revRoute();" class="revRoute"/>
								<div class="left">
									<form id="formulario" name="formulario" onsubmit="calcRoute();return false;" >
										<label for="inputStart" class="inputStart" ></label> 
										<input type="text" readonly="readonly" class="text" value="'.htmlentities($corigem).','.htmlentities($eorigem).'" id="inputStart"  />
										<br />
										<label for="inputEnd" class="inputEnd"></label> <input type="text" readonly="readonly" class="text" value="'.htmlentities($cdestino).','.htmlentities($edestino).'" id="inputEnd" />
										<input type="submit" id="tracar" value="Traçar Rota" />
										<input type="text" id="distancia" name="distancia" />
									</form> 

								</div>

							<div id="mapa" class="mapa">
							</div>

							<div id="directionsPanel">
							</div> 

							<hr />




							<br /><br />
							<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 rota = response.routes[0]; /* Primeira rota */
									var etapa = rota.legs[0]; /* única etapa dessa rota */

									distancia = etapa.distance.value;


									document.getElementById("distancia").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>


						';


				}

				if(isset($_POST['distancia']))
				   echo $_POST['distancia'];

				echo'
						</tr>
					</table>
				</div>
					<form name="filtro" action="orcamento.php" method="post" >
						<div style="float: left; border: 1px solid; height: 150px; clear: left; margin-top: 10px; margin-left:10px;"><center>Origem</center><br>
							<div>
								<select name="estadoOrigem" id="estado">
									<option align="center" value="0">Escolha o Estado</option>';

											//Consulta com a tabela
											//Selecione tudo de nomedatabela em ordem crescente pelo nome 
											$consulta=mysql_query("SELECT *FROM estado order by nome ASC"); 


											//Fazendo o looping para exibição de todos registros que contiverem em nomedatabela
											while ($dados = mysql_fetch_array($consulta)) {
											echo("<option value='".$dados['cod_estado']."'>".htmlentities($dados['nome'])."</option>");
											}
			echo '
								</select>
							</div>
							<div style="margin-top: 10px;">
								<select name="cidadeOrigem" id="cidadeOrigem">
									<option value="0">Escolha a cidade</option>
								</select>
							</div>
						</div>

						<div style="float: left; border: 1px solid; clear: left; margin-top: 30px; height: 150px; margin-left:10px;"><center>Destino</center><br>
							<div>
								<select name="estadoDestino" id="estado">
									<option value="0">Escolha o Estado</option>';

											//Consulta com a tabela
											//Selecione tudo de nomedatabela em ordem crescente pelo nome 
											$consulta=mysql_query("SELECT *FROM estado order by nome ASC"); 


											//Fazendo o looping para exibição de todos registros que contiverem em nomedatabela
											while ($dados = mysql_fetch_array($consulta)) {
											echo("<option value='".$dados['cod_estado']."'>".htmlentities($dados['nome'])."</option>");
											}
			echo '
								</select>
							</div>
							<div style="margin-top: 10px;">
								<select name="cidadeDestino" id="cidadeDestino">
									<option value="0">Escolha a cidade</option>
								</select>
							</div>
						</div>
						<input style="clear: left; float:left; margin-left: 45px; margin-top: 10px;" type="submit" value="Procurar" id="procurar">
					</form> 

				</div>
			</div>
		</div>';
		include ("include/rodape.php"); 
	echo'
	</div>

</body>
</html>';


}
}else {
echo "Você não está logado!";
}
?>

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O form é aquele que esta no if(isset)?

Se for isso, você quer mandar ele? Cara, para fazer isso eu não conheço, pensei que voce estava falando de carregar, agora voce pode enviar sem sair da página usando ajax. veja esse exemplo:

<html>  
<head>  
   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>  
   <script type="text/javascript">  
   jQuery(document).ready(function(){  
       jQuery('#ajax_form').submit(function(){  
           var dados = jQuery( this ).serialize();  

           jQuery.ajax({  
               type: "POST",  
               url: "loadcarro2.php",  
               data: dados,  
               success: function( data )  
               {  
                   alert( data );  
               }  
           });  

           return false;  
       });  
   });  
   </script>  
</head>  
<body>  
   <form method="post" action="" id="ajax_form">  
       <label><input type="hidden" name="id" value="" /></label>  
       <label>Nome: <input type="text" name="nome" value="1" /></label>  
       <label>Email: <input type="text" name="email" value="2" /></label>  


       <label><input type="submit" name="enviar" value="Enviar" /></label>  
   </form>  
</body>  
</html> 

assim que apertar o enter ele envia para outra página

 

loadcarro2.php

<?
$id = $_POST["nome"];
$email = $_POST["email"];

echo $id,"--",$email;
?>

 

ele faz um alerta sozinho e continua na pagina, mas tem que apertar enter.

 

Espero ter te trazido alguma ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae ProgJunior, na verdade eu já tirei aquele if(isset).

Eu queria que o formulário do google maps fosse enviado assim que eu clicasse no primeiro procurar, quando escolhe os estados e cidades.

 

Vou tentar explicar melhor...

Quando eu escolho os estados e cidades ele carrega (em php) as transportadoras e o mapa, para pegar os metros de uma cidade para outra eu uso o $.post() do jquery, mas pra isso eu preciso dar 2 cliques, no primeiro clique como o campo "distancia" ta sem valor ele não retorna nada na query, então quando clico a segunda vez ele retorna o valor dos metros. Queria que ele enviasse assim que clicasse no primeiro "procurar" porque eu só precisaria clicar uma vez, como se eu já fosse calcular o preço do frete.

 

Não sei se você entendeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não pode fazer assim, voce ta fazendo o php e depois o jquery, por isso que voce tem que apertar 2 vezes, voce tem que fazer tudo de 1 vez, escolhendo por qual voce quer, o unico que dá para fazer isso é ajax, mesmo assim o ajax faz junto com o jquery, parecendo que foi 1 vez. O php é compilado atraves de um servidor(apache, web) e jquery,javascript,ajax são os mesmo que são compilados pelo browser, entendeu? Voce vai te que escolher somente 1 para fazer o carregamento. Se eu fosse voce faria por jquery ou ajax, porque eles são melhores para esse tipo de coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, porque o php irá funcionar depois o jquery, no seu caso aconteceu de ficar com 2 cliques dependendo do que voce fizesse, ele nem executaria o jquery. Faz o carregamento do mapa em jquery e o do form tambem, ae voce pode dar o submit do form no jquery.

 

Voce coloca assim:

 

$('#pesquisar').click(function(){
   $('#mapa').load();
   $('#form').submit;
 });

 

isso seria quando ele clicar no pesquisar ele carrega o mapa e depois da um submit no form.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na função "$("#tracar").click(function()" que eu to usando, não teria como eu já dar um submit? Assim quando o usuário clicasse a primeira vez ele automaticamente daria um submit, eu tentei desse jeito, mas sem sucesso.

 


<script type="text/javascript">

$(function(){
//Função que ao clicar no botão, irá fazer.
$("#tracar").click(function(){
//Irá esconder a div do formulario que é o formularioEmail, com efeito em slow.

	var distancia = $("#distancia").val();

	//Enviando as variáveis com os valores para a página envia_formulario.php e criando uma nova função para pegar o retorno da página envia_formulario.php
	$.post("calcula.php", { distancia:distancia}, function(get_retorno) {
		//Depois que foi completado o cadastro e tem a mensagem de retorno, esconde a div carregando_form que tem a barra de carregamento.';
		for ( $i = 0 ; $i < mysql_num_rows($result); $i++ )
		{

		$arrayRetorno = $cod;
		echo '$("#preco'.json_decode($arrayRetorno).'").show("slow").text(get_retorno)'; 
		echo "\n";
		$cod = mysql_result($result, $i, 'cod_transp');

		}

		echo '	
		});

		$("#formulario").submit;									
	});
});

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver, e Daniel, te agradeço novamente ^^

 

Eu tirei a parte do $("#tracar").click(function() e coloquei dentro da função calcRoute, assim quando chama a função no onsubmit ele ja executa, sendo assim ja traça a rota e calcula o frete:

 

 


							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 rota = response.routes[0]; 
									var etapa = rota.legs[0]; 

									distancia = etapa.distance.value;


									document.getElementById("distancia").value = distancia;



									//alert ("Aproximadamente => " + Math.round(distancia / 1000) + " km.");

								 }



									//Irá esconder a div do formulario que é o formularioEmail, com efeito em slow.

										var distancia = $("#distancia").val();

										//Enviando as variáveis com os valores para a página envia_formulario.php e criando uma nova função para pegar o retorno da página envia_formulario.php
										$.post("calcula.php", { distancia:distancia}, function(get_retorno) {
										//Depois que foi completado o cadastro e tem a mensagem de retorno, esconde a div carregando_form que tem a barra de carregamento.';
										for ( $i = 0 ; $i < mysql_num_rows($result); $i++ )
										{

											$arrayRetorno = $cod;
											echo '$("#preco'.json_decode($arrayRetorno).'").show("slow").text(get_retorno)'; 
											echo "\n";
											$cod = mysql_result($result, $i, 'cod_transp');

										}

									echo '	
										});

									});

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.