Jump to content
CarinhaQueMoraLogoaLI

PEGAR VALOR DO JavaScript E PASSAR PARA O PHP

Recommended Posts

Boa noite, estou tendo dificuldade para passar o valor da variavel cep do javascript para o php, onde irá ser trocado pelo valor do cep (01001000)

 

Código;

 

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://viacep.com.br/ws/01001000/json'); //trocar o valor 01001000 pela variavel do cep
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
$end = curl_exec($ch);
$json = $end;
$obj = json_decode($json);
$txtcep_endereço = $obj->{'logradouro'};
$txtcep_bairro = $obj->{'bairro'};
$txtcep_cidade = $obj->{'localidade'};
$txtcep_estado = $obj->{'uf'};
curl_close($ch);


?>

<html><head>
  <title>Passar Variável PHP para Javascript</title></head><body>

  <script type="text/javascript">

function consultar(){

  <?php
  $msg = "Seja bem vindo ao site!";
  $variavelphp = "<script>document.write(w)</script>";?>
  var cep = document.getElementById('txt_cep').value

   var mensagem1 = "<?php echo $txtcep_endereço;?>";
   var mensagem2 = "<?php echo $txtcep_bairro;?>";
   var mensagem3 = "<?php echo $txtcep_cidade;?>";
   var mensagem4 = "<?php echo $txtcep_estado;?>";



document.getElementById('txt_endereço').value = mensagem1;
document.getElementById('txt_bairro').value = mensagem2;
document.getElementById('txt_cidade').value = mensagem3;
document.getElementById('txt_estado').value = mensagem4;
}
  </script>


<?php
 $variavelphp = "<script>document.write(variaveljs)</script>";
 echo $variavelphp;
?>

<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">CEP</label>
    <div class="col-sm-9">
      <input id="txt_cep" name="txt_cep" required="" minlength="8" class="form-control" value="55" placeholder="00000-000"/>
      <BR>
      <button onclick="consultar(this)"class="btn btn-primary btn-sm">Puxar CEP</button>
    </div>
  </div>
</div>
</div>
<div class="row">
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Endereço</label>
    <div class="col-sm-9">
      <input id="txt_endereço" name="txt_endereço" type="text" class="form-control card-title" />
    </div>
  </div>
</div>
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Bairro</label>
    <div class="col-sm-9">
      <input id="txt_bairro" name="txt_bairro" type="text" class="form-control card-title" />
    </div>
  </div>
</div>
</div>
<div class="row">
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Cidade</label>
    <div class="col-sm-9">
      <input id="txt_cidade" name="txt_cidade" type="text" class="form-control card-title" />
    </div>
  </div>
</div>
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Estado</label>
    <div class="col-sm-9">
      <input id="txt_estado" name="txt_estado" type="text" class="form-control card-title" />
    </div>
  </div>
</div></body>
</html>

 

Share this post


Link to post
Share on other sites

Salve newzenk. Você não explicou exatamente qual é a dificuldade, mas acho que está acontecendo o seguinte, você está querendo usar php depois que a página já foi carregada, o PHP é executado no servidor, que só te retorna uma página html, então, não dá pra você passar uma variável de js para um script php em uma página que já foi renderizada, mesmo pq não tem mais nada de php, só html e javascript quando a página esta carregada.

O que você pode fazer para contornar isso, é "mandar a variável" para a própria página, passando como parâmetro na URL, e ai ler a variável no seu php, mais ou menos assim (isso vale pra ceps no formato XXXXX-XXX).

 

<?php
if (isset($_GET['cep'])) {
  $cep = array();
  preg_match('/(\d{5})-(\d{3})/', $_GET['cep'], $cep);
  if (count($cep) != 3) {
    $msg_erro = "Formato do CEP inválido"; //Você pode usar essa mensagem pra colar na tela se passarem um cep inválido
  } else {
    $num_cep = $cep[1].$cep[2];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://viacep.com.br/ws/$num_cep/json"); //TROCAR ' POR " - texto com aspas simples não interpretam variáveis.
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FILETIME, true);
    $end = curl_exec($ch);
    $json = $end;
    $obj = json_decode($json);
    $txtcep_endereço = $obj->{'logradouro'};
    $txtcep_bairro = $obj->{'bairro'};
    $txtcep_cidade = $obj->{'localidade'};
    $txtcep_estado = $obj->{'uf'};
    curl_close($ch);    
  }
}
?>

 

12 horas atrás, newzenk disse:

<?php $variavelphp = "<script>document.write(variaveljs)</script>"; echo $variavelphp; ?>

 

Novamente, você não consegue executar métodos de javascript "de dentro" de um script php.

O que você pode fazer agora, é recarregar a página passando o valor do campo cep para o GET.

 

 

 

Share this post


Link to post
Share on other sites

Consegui resolver o problema, optei por usar o js, com o seguinte código;

 

 

<script src="https://code.jquery.com/jquery-3.4.1.min.js"
				integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
				crossorigin="anonymous"></script>
<script type="text/javascript" >

		$(document).ready(function() {

				function limpa_formulário_cep() {
						// Limpa valores do formulário de cep.
						$("#txt_endereço").val("");
						$("#txt_bairro").val("");
						$("#txt_cidade").val("");
						$("#txt_estado").val("");
				}

				//Quando o campo cep perde o foco.
				$("#txt_cep").blur(function() {

						//Nova variável "cep" somente com dígitos.
						var cep = $(this).val().replace(/\D/g, '');

						//Verifica se campo cep possui valor informado.
						if (cep != "") {

								//Expressão regular para validar o CEP.
								var validacep = /^[0-9]{8}$/;

								//Valida o formato do CEP.
								if(validacep.test(cep)) {

										//Preenche os campos com "..." enquanto consulta webservice.
										$("#txt_endereço").val("...");
										$("#txt_bairro").val("...");
										$("#txt_cidade").val("...");
										$("#txt_estado").val("...");

										//Consulta o webservice viacep.com.br/
										$.getJSON("https://viacep.com.br/ws/"+ cep +"/json/?callback=?", function(dados) {

												if (!("erro" in dados)) {
														//Atualiza os campos com os valores da consulta.
														$("#txt_endereço").val(dados.logradouro);
														$("#txt_bairro").val(dados.bairro);
														$("#txt_cidade").val(dados.localidade);
														$("#txt_estado").val(dados.uf);
												} //end if.
												else {
														//CEP pesquisado não foi encontrado.
														limpa_formulário_cep();
														alert("CEP não encontrado.");
												}
										});
								} //end if.
								else {
										//cep é inválido.
										limpa_formulário_cep();
										alert("Formato de CEP inválido.");
								}
						} //end if.
						else {
								//cep sem valor, limpa formulário.
								limpa_formulário_cep();
						}
				});
		});

</script>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By violin101
      Caros amigos
       
      saudações...
       
      Gostaria de tirar uma dúvida com os amigos, referente uma função em Codeigniter.
       
      Fiz algumas pesquisa, mas não entendi muito bem.
       
      No Codeigniter existe base_url() e site_url(), qual é a diferença entre essas funções ou são a mesma coisa ?
       
      Grato,
       
      Cesar
    • By Kemily
      Estou com dificuldade com este programa.
      Ele da erro e não sei o que posso fazer para ele mostrar na tela o exemplo da venda de carros.
      Neste programa eu preciso conseguir dar opções de carros e formas de pagamento ao usuário para depois armazenar a escolha e assim criar uma tabela com o id do usuário, escolha de carro, quanto será a entrada e quantas parcelas de pagamento.
      Faltam algumas coisas ainda mas eu não sei como inseri-las.
      <?php if ($_POST) { $saldo = $_POST['total'] - $_POST['entrada']; <tr> <td>carro</td> <td>$_post['carro']</td> </tr> <tr> <td>total</td> <td>$_post['carro']</td> </tr> <tr> <td>estrada</td>, <td>$_post['entrada']</td> </tr> <tr> <td>parcelas</td> <td>$_post['parcelas']</td> </tr> <tr> <td>saldo</td> <td>$_POST['total'] - $_POST['entrada']</td> </tr> } ?> <html> <body> <form name='Carros' action='' method='post'> <label for="carros">Qual carro deseja comprar?</label> <br> <br> <select name="carros"> <option value="bmw">BMW M3 Sedã</option> <option value="chevrolet">Chevrolet Volt</option> <option value="dodge">Chrysler/Dodge Journey</option> <option value="citroen">Citroen C4 Lounge</option> <option value="ford">Ford Ka</option> </select> <label for="entrada">$ Entrada</label> <input type="dinheiro" value="0" name="entrada"><br> <label for="parcelas">Quantas parcelas?</label> <select name="parcelas"> <option value="12">12</option> <option value="24">24</option> <option value="36">36</option> <option value="48">48</option> </select><br><br> <label for="total">$ Total</label> <input type="dinheiro" value="0" name="total"><br> <input type="submit" value="Enviar"> </form> </body> </html>  
    • By Kemily
      <? php /* 1 - Faça uma função que recebe 3 numeros e faça a média aritmética desses números e retorne o resultado. */ if (isset ($_POST['enviar'])); $valor1 = $_POST['valor1']; $valor2 = $_POST['valor2']; $valor3 = $_POST['valor3']; $media = ($valor1 + $valor2 + $valor3) / 3; endif; ?> <!DOCTYPE html> <html> <head> <meta charset = "Utf-8"> <title> Cálculo da média aritimética</title> </head> <body> <form method="post" action=""> <br> <label>Primeiro valor: </label> <input name="valor1" type="text"> <br> <label>Segundo valor: </label> <input name="valor2" type="text"> <br> <label> Terceiro valor: </label> <input name="valor3" type="text"> <br> <br> <button type="submit" name="enviar"> Calcular Média </button> <button type="reset"> Limpar </button> <br> <br> Valor da Média <? php echo "A média equivale a:<br>" . $media . " - "; ?> </form> </body> </html> Alguém pode me ajudar?
      Eu estou fazendo este programa para calcular a média aritmética de três número que serão digitados pelo usuário.
      Porém não estou conseguindo fazer o resultado ser apresentado na tela.
      Nem o ultimo "echo" aparece só o " " . $media . " - "; " literalmente é isso que aparece onde deveria mostrar o resultado.
      Sou iniciante na área de php e se puderem ajudar agradeço. 
    • By Marcos PP
      Tenho que retornar os dados desta URL e transformar em variaves em PHP

      Ja tentei alguns exemplos mas so me retorna Null

      http://betontec.fortiddns.com:8082/api/login?usuario=joeliton&senha=123

       
      $data = file_get_contents('http://betontec.fortiddns.com:8082/api/login?usuario=joeliton&senha=123'); $data = json_decode($data,true); var_dump($data);  
    • By gramosiri2
      Ola amigos, estou tentando fazer uma confirmação de cadastro por email, porém não estou tendo êxito. Consigo pegar o usuario, email e senha. Porem quando dou um 'echo' na variavel $id e $md5 para conferir os dados não aparece nada e o INSERT não é feito. Segue o codigo.
       
      <?php $host = "mysql:busca;host=localhost"; $usuario = "root"; $pass = ""; try{ $pdo = new PDO($host, $usuario, $pass); }catch(PDOExecption $e){ echo "Falha: ". $e->getMessage(); } $user = addcslashes($_POST['user'],"F"); $email = addcslashes($_POST['email'],"F"); $senha = md5(addcslashes($_POST['senha'],"F")); $pdo->query("INSERT INTO tabela1 SET user='$user', email='$email', senha='$senha'"); $id = $pdo->lastInsertId(); $md5 = md5($id); $assunto = "Confirme seu cadastro"; $link = "confirma.php?h=".$md5; $mensagem = '<a href="'.$link.'">Clique aqui para confirmar: </a>'; $header = "From: teste"; echo $user.'<br>'; echo $email.'<br>'; echo $senha.'<br>'; echo $id.'<br>'; echo $md5.'<br>'; mail($email, $assunto, $mensagem, $header); ?> TABELA:
      CREATE TABLE `tabela1` ( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `user` varchar(50), `email` varchar(100), `senha` varchar(50), `status` tinyint(4) );  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.