Jump to content
juninhogpe

Envio de array de inputs por e-mail

Recommended Posts

Bom dia pessoal.

 

Tenho um formulário, o qual a adição de inputs é dinâmica conforme o código abaixo:

 

<div>
 	<span><label>Medidas</label></span>
	<span>

		<script>
			$(document).ready(function(){
				$("#add").click(function(){
					$("#inputs").append('<input type="text" name="quantidade[]">');
					$("#inputs").append('<input type="text" name="largura[]">');
                    $("#inputs").append('<input type="text" name="comprimento[]">');
                    $("#inputs").append('<input type="text" name="altura[]">');
					return false;
				});
			});
		</script>
		
		<div id="inputs">
			<input name="quantidade" type="text">
            <input name="largura" type="text">
            <input name="comprimento" type="text">
            <input name="altura" type="text">         
		</div>
		</span><a href="javascript:;" id="add">+</a>
</div>

Até ai consigo ao clicar no "+" adicionar mais inputs.

 

O envio por e-mail sei fazer quando já estou com os dados, mais como fazer para receber por exemplo um "$_POST" com esses dados e exibi-los?

 

Eu gostaria de receber algo como exemplo:

Quantidade: 10
Largura: 2cm
Comprimento: 1cm
Altura: 10cm

Quantidade: 15
Largura: 3cm
Comprimento: 7cm
Altura: 9cm

Quantidade: 20
Largura: 4cm
Comprimento: 5cm
Altura: 2cm

 

Obrigado.

Share this post


Link to post
Share on other sites

@EdCesar, boa tarde.

 

Obrigado pelo retorno.

 

Acho que me expressei mal.

 

Está tudo dentro das tags <form></form> e com method=POST, só queria saber como recebo na página PHP, não sei como receber um array, em uma varíavel. Pois o comum seria:

 

$dados = $_POST['campo'];

Mais e quando se trata desse campos dinâmico que vem de 4 em 4 campos, pois vai depender do usuário ir adicionando ou não mais linhas?

 

Obrigado desde já e me desculpe por não ter me expressado corretamente na minha dúvida.

 

Share this post


Link to post
Share on other sites

@AndersonWS, bom dia.

 

Obrigado pelo retorno.

 

Fiz os testes mais não consegui o resultado.

Fiz assim:

 

<?php

if($_POST) {

echo 'Nome: ' .$nome  = $_POST['nome_remetente'];

for ( $i=0 ; $i<(count($_POST['quantidade'])) ; $i++ ){
echo '<br />Qtd.: ' .$quantidade = $_POST['quantidade'][$i];
}

for ( $i=0 ; $i<(count($_POST['largura'])) ; $i++ ){
echo '<br />Largura: ' .$largura = $_POST['largura'][$i];
}

}
?>



<form method="post" action="meu-teste.php">
  <div>
    <span><label>Nome do Remetente</label></span>
    <span><input name="nome_remetente" type="text" class="textbox" placeholder="Remetente" required ></span>
  </div>

  <div>
    <span><label>Mercadorias</label></span>
    <span>

      <script>
        $(document).ready(function(){
          $("#add").click(function(){
            $("#inputs").append('<div class="clear"></div><input type="text" name="quantidade[]" style="width: 10em !important; float: left; margin-right: 0.5em;" class="textbox" placeholder="Quantidade" />');
            $("#inputs").append('<input type="text" name="largura[]" style="width: 10em !important; float: left;" class="textbox" placeholder="Largura" />');												
            return false;
          });


        });


      </script>

      <div id="inputs">
        <input name="quantidade[]" type="text" style="width: 10em !important; float: left; margin-right: 0.5em;" class="textbox" placeholder="Quantidade" required >

        <input name="largura[]" type="text" style="width: 10em !important; float: left;" class="textbox" placeholder="Largura" required >

      </div>
    </span>  <a href="javascript:;" id="add">+</a>
  </div>											   						

  <div>
    <span><input type="submit" value="Solicitar"></span>
  </div>
</form>

 

Mais quando faço a inserção com mais de uma linha ele só reconhece a primeira.

O que pode ser?

 

Obrigado e agradeço.

Share this post


Link to post
Share on other sites
1 hora atrás, juninhogpe disse:

Mais quando faço a inserção com mais de uma linha ele só reconhece a primeira.

O que pode ser?

Fiz o teste aqui e retornou todas as linhas, olha seu script de "adicionar + campos", pode ser ali.

<?php
if($_POST) {
		echo 'Nome: ' .$nome  = $_POST['nome_remetente'];
	for ( $i=0 ; $i<(count($_POST['quantidade'])) ; $i++ ){
		echo '<br />Qtd.: ' .$quantidade = $_POST['quantidade'][$i];
	}
	for ( $i=0 ; $i<(count($_POST['largura'])) ; $i++ ){
	echo '<br />Largura: ' .$largura = $_POST['largura'][$i];
	}
}
?>
<form method="post" action="">
  <div>
    <span><label>Nome do Remetente</label></span>
    <span><input name="nome_remetente" type="text" class="textbox" placeholder="Remetente" required ></span>
  </div>
  <div>
    <span><label>Mercadorias</label></span>
    <span>
      <div id="inputs">
        <input name="quantidade[]" type="text" style="width: 10em !important; float: left; margin-right: 0.5em;" class="textbox" placeholder="Quantidade" required >
        <input name="largura[]" type="text" style="width: 10em !important; float: left;" class="textbox" placeholder="Largura" required >
		<input name="quantidade[]" type="text" style="width: 10em !important; float: left; margin-right: 0.5em;" class="textbox" placeholder="Quantidade" required >
        <input name="largura[]" type="text" style="width: 10em !important; float: left;" class="textbox" placeholder="Largura" required >
      </div>
    </span>
  </div>
  <div>
    <span><input type="submit" value="Solicitar"></span>
  </div>
</form>

Mas se já resolveu, blz!

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 Marcos PP
      Tenho uma tabela onde pego todos pedidos realizados no dia, porem mostro todos em uma tabela, ate ai tudo bem, mas o cliente precisa que seja agrupado por quem pediu, vou dar um exemplo,

      Na minha tabela tenho 

      ID_PEDIDO  |  ID_USER_PEDIDO |  PEDIDO
      1                   |   20                           |   524
      5                   |   52                           |   258
      2                   |   35                           |   525
      6                   |   52                           |   253
      3                   |   20                           |   658
      4                   |   20                           |   358

      No resultado me aparece conforme consulta e me mostra todos os pedidos em ordem de pedido
      SELECT * FROM pedidos  ORDER BY ID_PEDIDO ASC
       
      Se eu colocar um GROUP BY ID_USER_PEDIDO vai agrupar os pedidos de acordo com o usuário e mo mostrar apenas 1


      Eu preciso que seja mostrado todos eles porem agrupados na mesma linha da tabela
       
      <table id="datatable1" class="table display responsive "> <thead> <tr> <th class="">ID</th> <th class="">ID do usuario</th> <th class="">Pedido</th> </tr> </thead> <tbody> <?php $sql = "SELECT * FROM pedidos  ORDER BY ID_PEDIDO ASC"; $result = $conn->query($sql); while($row = $result->fetch_assoc()) { ?> <tr> <td><?php echo $row["ID_PEDIDO"];?></td> <td><?php echo $row["ID_USER_PEDIDO"];?></td> <td><?php echo $row["PEDIDO"];?></td> </tr> <?php } ?> </tbody> </table> E que seja exibido conforme esta imagem
       

    • By gersonab
      Bom dia, tenho 2 tabelas editáveis em uma div, estas funcionam normalmente, o problema é que o loop não acontece , só carrega sobre 1 item, sendo que este eu posso ter mais itens.
       na página principal tenho:
      <div class="carregadados"></div> function fetch_data() { $.ajax({ url:"../lista/finan.php", method:"POST", success:function(data){ $('.carregadados').html(data); } }); } fetch_data(); a página a ser carregada esta assim:
      <?php session_start(); require_once('config.php'); $output = ''; $idc1=$_SESSION['idc']; $sql01 = "SELECT * FROM porcent WHERE idfcli='$idc1'"; $result = mysqli_query($con, $sql01); while($user41 = mysqli_fetch_array($result)){ // primeiro while onde seleciono os itens da pessoa podendo ter vários $output .= ' <div class="table-responsive mb-4 mt-4"> Aqui vem os dados da pessoa '; $id1= $user41["idproc"]; $sqladv = "SELECT * FROM poradv WHERE procav='$id1'"; $resulta = mysqli_query($con, $sqladv); $output .= ' <table class="table table-bordered table-hover table-striped" style="width:100%"> <thead> <tr> </tr> </thead> <tbody>'; if(mysqli_num_rows($resulta) > 0) { while($usera = mysqli_fetch_array($resulta)){ //segundo while onde tenho os dados de venda em uma tabela editavel $output .= ' <tr> </tr>'; } $output .= ' <tr> // insiro linhas caso precise </tr> '; } else { $output .= '<tr> // caso não tenha nada inserido, posso fazer por aqui </tr> '; } $output .= '</tbody> </table>'; $id2= $user41["idproc"]; $sql = "SELECT * FROM parcelas WHERE procid='$id2' ORDER BY datapar, idpar ASC"; $result = mysqli_query($con, $sql); $output .= ' <table class="table table-bordered table-hover table-striped" style="width:100%"> <thead> <tr> // tabela de pagamentos editavel </tr> </thead> <tbody>'; if(mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_array($result)) { //terceiro while , tabela referente a pagamentos $output .= ' <tr> // tabela pagamentos </tr>'; } $output .= ' <tr> // insiro linhas caso precise </tr> '; } else { $output .= '<tr> // caso não tenha nada inserido, posso fazer por aqui </tr> '; } $output .= '</tbody> </table> </div> '; } echo $output; ?> só esta carregando uma vez , tudo dentro da parte editável esta funcionando, porém no primeiro while só faz 1 loop, os demais estão funcionando perfeitamente.
      desde já agradeço qualquer ajuda.
    • By diagphp
      Olá amigos, sou muito novo no assunto de consultar APIs em PHP, então gostaria por gentileza de uma ajuda.
       
      Tem uma api externa que devemos consultar, mas está retornando o erro: PHP Fatal error: Uncaught Error: Class 'GuzzleHttp\Client' not found in /home1/

      A hospedagem é Hostgator.
       
       
      A consulta é simples:
       
      <?php
      $client = new \GuzzleHttp\Client();
      $response = $client->get("https://api.centraldofrete.com/v1/cargo-type", [
          'headers' => [
                  'Authorization' => '{token do cliente}',
              ],
      ]);
      $body = $response->getBody();
      print_r(json_decode((string) $body));
      ?>
       
      Alguém poderia me ajudar a fazer este tipo de consulta e obter o retorno da API? Tem algum arquivo a mais que tenho que colocar no servidor?
       
      Agradeço a  ajuda!
    • By Camilavip
      Oi, como consigo fazer uma página de erro ou redirecionamento ou aviso, caso alguém clique em um cadastro que já não existe ou não tenha?
      localhost/clientes/12/ricardo No exemplo acima eu clico no cliente com esse id 12 e abre os dados dele, mas se eu o excluir mas estiver com o link e colocar no navegador, ele abre a página, sem os dados dele, mas abre. Eu queria se caso não tivesse mais o id cadastrado, abrisse algo como nenhum cadastro encontrado ou existente.
    • By mamotinho
      Olá, gostaria de sabe como posso fazer uma contagem regressiva apartir de um registro em meu banco de dados eu tentei montar um código da seguinte forma:

       
      <? $DateGET = date('m/d/Y H:i A', strtotime($result->DateDiscount)); ?> <script> var valueDate = <?=$DateGET?>; var end = new Date(valueDate); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; function showRemaining() { var now = new Date(); var distance = end - now; if (distance < 0) { clearInterval(timer); document.getElementById("countdown").innerHTML = "EXPIRED!"; return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second); document.getElementById("countdown").innerHTML = "<span class='n_date day' id='days'>" + days + "</span><span class='date'>일</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time hour' id='hrs'>" + hours + "</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time minute' id='minus'>" + minutes + "</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time second' id='secs'>" + seconds + "</span>"; } timer = setInterval(showRemaining, 1000); </script> Mais infelizmente não passou a data registrada no banco de dados, alguém teria ideia de como posso ta fazendo.
×

Important Information

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