Jump to content
dutopfave

Calcular valor do Frete

Recommended Posts

Boa tarde, estou desenvolvendo um site de um restaurante (Delivery) aonde vai ter a area do cliente, e nessa area o cliente poderá pedir pedido online, Porém como a cidade é grande, e o jeito que eles trabalha é o seguinte, se de acordo com o CEP que o cliente coloca, é um valor de frete, entao cada CEP é um valor, lembrando que isso so se for cep da cidade, se for um cep de outra cidade, ai da uma mensagem que nao dá algo assim, no caso eu teria q usa IF?

Share this post


Link to post
Share on other sites

Primeiro você precisa de uma base de dados com todos os CEPs dessa cidade. Aí é só colocar tudo num array e verificar se o valor existe lá ou não:

$meuArrayComCEPs = array("28950000", "28930000");

if(!in_array($cepDoCliente, $meuArrayComCEPs)){
   echo "Fazemos entregas somente para dentro da cidade.";
}else{
   //Executa o script todo e calcula o Frete
}
  • +1 1

Share this post


Link to post
Share on other sites

Pode fazer de outras formas também, mas essa é a mais simples, aí depende da sua necessidade. Se for só isso mesmo, então serve desse jeito.

  • +1 1

Share this post


Link to post
Share on other sites

Trabalhe com faixas de cep e use BETWEEN para pecorrer o DB, da forma acima é um grande problema!

 

Por exemplo para o Estado de São paulo as Faixas são de 01000-000 a 19999-999


Capital

São Paulo 01000-001 a 05999-999 e 08000-000 a 08499-999

Com BETWEEN, é só verificar se esta dentro das faixas, depois é só ver qual bairro/cidade pertence, junto ao site dos correios.

Ou cadastrar manualmente os bairros que atende!

 

Com cURL você faz isso automaticamente também.

  • +1 1

Share this post


Link to post
Share on other sites

Diego, fiz conforme flw

 

$meuArrayComCEPs = array("13355-000", "13350000");
if(!in_array($cep, $meuArrayComCEPs)){
echo "Fazemos entregas somente para dentro da cidade.";

se colocar o cep certo ai vai para a parte de cria a conta, caso o cep q a pessoa colocar não bater com os cep q eu coloquei em $meuArrayComCEPs, ai vai ir a mensagem, mais como q eu faço para fazer o seguinte,

 

cada cep tem q ter um valor, esse valor eu vou pegar como taxa de entrega, então cada cep tem seu valor,

nesse caso faz outro if ?,

 

Share this post


Link to post
Share on other sites

É mais viável você utilizar um BD para isto...

Share this post


Link to post
Share on other sites

Interessante, postamos a melhor forma, e os caras resolve ir pela mais fácil.

Share this post


Link to post
Share on other sites

Bom Não expliquei direito, é um sistema de restaurante, q faz Delivery, e na cidade dele tem X de CEP, acho q 5 se não me engano, então não precisa de BD, e para cada CEP ele cobra um valor de entrega.

 

agora ta mais explicado.

 

Porém eu ja consegui resolver

Share this post


Link to post
Share on other sites

Cara, a melhor resposta sem dúvidas é a do amigo Williams Duarte.

 

Aqui na agência nós já desenvolvemos alguns sistemas semelhantes e realmente esta forma é bem simples..

 

Trabalhe com faixas de cep e use BETWEEN para pecorrer o DB, da forma acima é um grande problema!

 

Por exemplo para o Estado de São paulo as Faixas são de 01000-000 a 19999-999


Capital

São Paulo 01000-001 a 05999-999 e 08000-000 a 08499-999

Com BETWEEN, é só verificar se esta dentro das faixas, depois é só ver qual bairro/cidade pertence, junto ao site dos correios.

Ou cadastrar manualmente os bairros que atende!

 

Com cURL você faz isso automaticamente também.

 

 

Claro que na realidade, quando se trata de um sistema de Delivery, você deve usar algo mais complexo, porém mais seguro, como por exemplo: Utilizar o que o amigo Williams comentou + a opção de distância, ou seja, você pega a distância que o cliente está e o estabelecimento (pizzaria por exemplo) e faz o cálculo por metros e dá um valor a cada 50 metros entendeu?

 

Esta é a melhor forma, com isso você terá 1 valor do frete para você e um outro valor de frete para o cara que mora ao final da sua esquina (vamos supor que seja a avenida principal e que tenha mais de 5 Km de avenida, como ocorre em grandes cidades).

 

Mas fica a dica, nem sempre o mais fácil lhe trará melhores resultados, uma vez que você possa vir a refazer tudo, o que tornaria o trampo mais doloroso.

  • +1 1

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 Vibraphera
      Oi gente eu recentemente comecei a aprender php e fui atras de desafios legais e me deparei com um que até hoje não consigo resolver.
      Preciso mostrar a maior e a menor palavra de uma frase ou texto. Eu tentei transformar em um array mas não sei se seria o adequado.
      Resumindo apenas me retorna corretamente a maior palavra mas a menor não me retorna nada. ALGUÉM ME DA UM HELP kk
      OBS: quando não tem ponto final parece que não retorna nada e quando tem ponto final ele retorna o 'ou' da frase mas não deveria retornar a letra 'é' ou a letra 'a'?
       
      <?php
      $texto = 'Como faço para saber qual é a menor e a maior de uma frase ou grandes textos';
      $arr = explode(" ", $texto);
      $maior="";
      $menor="";
      for ($i=0; $i <count($arr) ; $i++) { 
          $atual = $arr[$i];
          if (strlen($atual) > strlen($maior)) {
              $maior = $atual;
          } else if (strlen($atual) < strlen($maior)) {
              $menor = $atual;
          }
      }
      echo "<br>";
      echo $maior;
      echo "<br>";
      echo $menor;
    • By danteblatt
      Olá Srs,
      Não tenho muito conhecimento em PHP e estou com um formulário onde o usuário tem alguns campos para preencher e gravar no banco de dados SQL, sendo que um campo deste form será dinâmico onde o usuário poderá adicionar quantos campos forem necessários a partir de um botão "+".
      Nome do campo dinâmico: chavenf
      Segue abaixo o código do formulário:
      <form method="POST" action="../includes/mf-processa.php"> <div class="form-group"> <div class="form-row"> <div class="form-group col-md-4"> <input type="hidden" name="usuario[]" value="<?php echo $_SESSION['usuarioNome']; ?>" /> <select class="form-control" id="tipo" name="tipo[]"> <option selected>Tipo</option> <option>1</option> <option>2</option> </select> </div> <div class="form-group col-md-4"> <select class="form-control" id="prioridade" name="prioridade[]"> <option selected>Prioridade</option> <option>Alta</option> <option>Padrão</option> </select> </div> <div class="form-group col-md-4"> <input class="form-control" type="text" name="fornecedor[]" placeholder="Fornecedor" id="fornecedor"> </div> </div> <div style="display:none;" class="form-row" id="chavecte"> <div class="form-group col-md-12"> <label>Chave </label> <input class="form-control" type="text" name="chavecte[]"> </div> </div> <div class="form-row" id="row-nota"> <div class="form-group col-md-12"> <label>Chave da NF </label> <input class="form-control" type="text" name="chavenf[]" id="chavenf"> </div> </div> <div style="display:none;" class="form-row" id="add-field-nf"> <div class="form-group col-md-2"> <button type="button" class="btn btn-primary" id="add"> + </button> </div> </div> <div class="form-row"> <div class="form-group col-md-2"> <input type="submit" class="btn btn-primary" value="Cadastrar"> </div> </div> </div> </form> <script> $( "#add" ).click(function() { $( "#row-nota" ).append('<div class="form-group col-md-12"><input class="form-control" type="text" name="chavenf[]" id="chavenf"></div>'); }); </script> Abaixo o arquivo que conecta e insere no BD, "mf-processa.php"
      <?php session_start(); include_once("conexao.php"); $prioridade = filter_input(INPUT_POST, 'prioridade', FILTER_SANITIZE_STRING); $usuarioentrada = filter_input(INPUT_POST, 'usuario', FILTER_SANITIZE_STRING); $tipofrete = filter_input(INPUT_POST, 'tipofrete', FILTER_SANITIZE_STRING); $fornecedor = filter_input(INPUT_POST, 'fornecedor', FILTER_SANITIZE_STRING); $chavenf = preg_replace("/\s+/", "", filter_input(INPUT_POST, 'chavenf', FILTER_SANITIZE_STRING)); $chavecte = preg_replace("/\s+/", "", filter_input(INPUT_POST, 'chavecte', FILTER_SANITIZE_STRING)); $nNF = substr($chavenf, 25, 9); $timenow = date('d-m-Y'); $timenow .= ' '.date('H:i:s'); $qtnotas = count($chavenf)-1; for ($f = 0; $f <= $qtnotas; $f++) { $sql = "INSERT INTO base (data, usuarioentrada, prioridade, tipofrete, nf, fornecedor, chavenf, chavecte, acao, dataretorno, usuariofiscal) VALUES ( '.$timenow[$f].', '.$usuarioentrada[$f].', '.$prioridade[$f].', '.$tipofrete[$f].', '.$nNF[$f].', '.$fornecedor[$f].', '.$chavenf[$f].', '.$chavecte[$f].', '', '', '' )" or die ("<center>Erro: " . mysqli_error() . "</center>"); $insert = mysqli_query($conn, $sql); if(mysqli_insert_id($conn)){ $_SESSION['msgrec'] = "<p style='color:green;'>Nota cadastrada com sucesso!</p>"; header("Location: ../recebimento/recebimento.php"); }else{ $_SESSION['msgrec'] = "<p style='color:red;'>Nota não cadastrada com sucesso!</p>"; header("Location: ../recebimento/recebimento.php"); }  
       
      Veja o erro retornado na página.. Já tentei alterar o código e mesmo assim não consegui efetuar a inserção dos dados no BD.
       
      ( ! ) Warning: count(): Parameter must be an array or an object that implements Countable in D:\Wamp\www\RecebimentoAdm\includes\mf-processarecebimento.php on line 31 Call Stack # Time Memory Function Location 1 0.0001 411528 {main}( ) ...\mf-processarecebimento.php:0  
      ( ! ) Notice: Uninitialized string offset: 0 in D:\Wamp\www\RecebimentoAdm\includes\mf-processarecebimento.php on line 41 Call Stack # Time Memory Function Location 1 0.0001 411528 {main}( ) ...\mf-processarecebimento.php:0  
      ( ! ) Notice: Uninitialized string offset: 0 in D:\Wamp\www\RecebimentoAdm\includes\mf-processarecebimento.php on line 42 Call Stack # Time Memory Function Location 1 0.0001 411528 {main}( ) ...\mf-processarecebimento.php:0
    • By lordstarlight
      Olá, 
       
      Como posso bloquear todos ips, menos o meu para acesso ao meu site?
      preciso fazer isto para poder fazer manutenção.
       
      obrigado!
    • By lordstarlight
      Olá pessoal,
       
      Tenho uma base de dados onde há um campo decimal que guarda um valor tipo (10.20).
      Quanto tento retornar o valor multiplicado por quantidade (10.2 * 2) retorna apenas 20,00
       
      $subTotal = $qtdeItem * $precoProduto;
      echo  'R$ '.number_format($subTotal,2,",",".");?><br>
       
      Como faço para retornar 20,40 ?
    • By groudon900
      Estou cursando aula pra aprender php e eu estava montando uma pagina de login, está tudo certo, mas não consegue conectar de jeito nenhum vou mandar o código pra vocês darem uma olhada
      banco de dados "aula"
      tabela "usuarios"
       
      contem, usuarios, senha, email e ID
       
       
      <?php require_once"config.php" ?> <?php if ( isset($_POST["usuario"])) { $usuario = $_POST["usuario"]; $senha = $_POST["senha"]; $login = "SELECT * "; $login .= "FROM usuarios "; $login .= "WHERE usuario = '{$usuario}' and senha = '{$senha}' "; $acesso = mysqli_query($conecta, $login); if ( !$acesso) { die("Falha na consulta ao banco!"); } $informacao = mysqli_fetch_assoc($acesso); if ( empty($infomacao)) { $mensagem = "login sem sucesso"; } else { header("location:listagem.php"); } } ?>  
×

Important Information

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