Ir para conteúdo
Fábio BN

[Resolvido] Recebendo várias variáveis via POST de mesmo name, como fazer?

Recommended Posts

Olá Pessoal.

 

Estou com um problema com PHP.
Eu possuo um carrinho de compras que recebe variáveis num  Input Text onde pega a quantidade de itens e também num type=hidden onde pega o código do registro.
Lembrando que os campos Input Text tem o mesmo "name=quantidade" e o "type=hidden" tb possui o mesmo "name=cod_temp"
No meu código em ASP eu recebo os valores separados por vírgula, e no PHP não quer funcionar como deveria.

Exemplo em ASP:

quantidade = request.form("quantidade")
cod_temp =  request.form("cod_temp")
response.write quantidade
response.write "<br>"
response.write cod_temp

O Resultado em ASP em tela.
3, 5, 5 = quantidades 
728038, 728037, 728036 = Código dos produtos

Já no PHP só está passando o valor do último registros, exemplo:

$quantidade = $_POST['quantidade'];
$cod_temp = $_POST['cod_temp'];
echo $quantidade;
echo "<br>";
echo $cod_temp;

Resultado:
5 = quantidades 
728036 = Código do produto

 

Por que será que pelo PHP não pega os valores por completo com todos entre as virgulas?

Assim não consigo atualizar como deveria, pois só aparece o resultado da ultima linha.

 

Se alguém souber, agradeço.

Obrigado!
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está enviando mais de um campo, você precisa definir que ele é um array e recebê-lo como tal no PHP.

 

1 - Primeiro você acrescenta em todos os "name" repetidos do seu formulário isso: "[]". Exemplo:

<input type="hidden" name="quantidade[]" value="5">
<input type="hidden" name="quantidade[]" value="10">

2 - Agora dentro de $_POST[ 'quantidade' ] residirá um array com os valores 5 e 10. Para exibirmos separados por vírgula, podemos fazer assim:

echo implode( ', ', $_POST[ 'quantidade' ] );

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo. Funcionou. Obrigado

Agora preciso gravar no Banco, estou usando PDO no PHP.

Preciso de uma rotina que faça a contagem dos valores separador por virgula e um Loop né?
No ASP fica assim:

'Inicia atualização
 'Pega o valor do cod_temp e separa as virgulas
 cod_temp = split(cod_temp,",")
 'Conta quantos valores foram separados pela virtula
 max = ubound(cod_temp)
       
 'Pega o valor da quantidade e separa pelas virgulas
  nova_quantidade = split(quantidade ,",")
    
 ' Faz um LOOP enquanto o valor de i não for igual a quantidade dos valores separados das virgulas no max
   for i = 0 to max
   'Enquanto o cod_temp for direfrente de branco, ele se atualiza
'if trim(cod_temp(i)) <> "" then
     SQL_new =  "UPDATE loja_virtual SET quantidade_temp = "& trim(nova_quantidade(i)) &" where cod_temp = "& trim(cod_temp(i)) &" "
     db.Execute(SQL_new)
'end if
next

Por acaso você tem algo pronto por ai em PHP?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa fazer algo assim:

foreach ( $_POST[ 'quantidade' ] as $i => $valor ) {
    //logica para UPDATE... $i é a chave do array, $valor é a qtd de cada item iterado
}

 

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a ajuda, deu certo. Segue o resultado.

foreach (array_combine($quantidade, $cod_temp) as $value1 => $value2 ) {
$atualiza_carrinho=$pdo->prepare("UPDATE loja_virtual SET quantidade_temp=:nova_quantidade where cod_temp=:cod_temp");
$atualiza_carrinho->bindValue(":nova_quantidade",$value1);
$atualiza_carrinho->bindValue(":cod_temp",$value2);
$atualiza_carrinho->execute();
}

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Jefferson andre
      Ola,
       
      Criei uma rotina que eh chamada dentro do html, esta rotina abre um banco de dados e pega os valores de algumas variaveis contendo caminhos para video aulas e entao fecha o banco de dados, ao retornar ao html eu quero usar estas variaveis para abrir videos que estarao sendo demonstrados em forma de links.
       
      A mesma situacao foi resolvida dentro do php com imagens para uma outra situacao mas nao consigo fazer isso para videos, se eu conseguir nao preciso puxar as variaveis para o html.
      <?php
      // fazendo uma conexão com o banco de dados
      include("conexao.php");
      //pesquisa
      $resultado = $arquivo->query("SELECT * FROM divulgacao WHERE ativo = 'S' AND tipo = 'IM'");
      if (false === $resultado) {
          echo mysqli_error();
      }
      $linha=mysqli_fetch_array($resultado);
      $caminho_divulgacao = $linha["caminho"];
       
      //echo "<font face='Arial'><span class='style14'>$caminho_divulgacao</span></font>";
      $exibir = "<img src=".$caminho_divulgacao." /><br />";
      echo $exibir ;
       
      mysqli_close($arquivo);
      ?>
       
      Alguma dica ?
    • Por Andersonografia
      Gostaria de agradecer o topico do Tonga (topic/436039-resolvido refresh/) pois me esclareceu a criar um método prático para certificar se o form vem do botão ou do F5.
      Vou esclarecer também que só tenho essa necessidade quando o primeiro form do documento é um input, porque na maioria dos meus casos sempre é um search.  
       
      No Value do botão eu coloco o time:
      <button type="submit" name="carga" class="button" value="<?PHP echo $time;?>"> Coloco a condição se estiver setado e se for diferente da sessão:
      if(isset($_POST['carga'])) { $compara = ($_POST['carga']); if($compara != $_SESSION['compara']) { E depois do insert, ainda dentro da condição eu gravo a variável na sessão:
      $_SESSION['compara'] = $compara; Obrigado mais uma vez ao Tonga e ao Forum. Se alguém souber de um método mais prático, por gentileza será muito útil divulgar!!!!
    • Por MAKAVELIQUE
      Saudações, criei meu perfil hoje, sou iniciante neste mundo da programação, alguém poderia me ajudar a compreender isso? é um código em javascript que eu estou escrevendo,    variáveis b1, b2, b3 e c1, c2 e c3 recebem valores parecidos com estes, contudo,   parece que os if´s não estão fazendo as devidas verificações pra abrir o document.write de acordo com cada condição...
      <script> function teste() {     img1.src = "foto.png";                b1="J";// esses valores podem variar...     c1="C";// esses valores podem variar...     b2="J";// esses valores podem variar...     c2="C";// esses valores podem variar...     b3="J";// esses valores podem variar...     c3="C";// esses valores podem variar...     if(b1 == c1 && b1 == b3){//daqui pra baixo parece que não funciona...     if(c1==c2 && c2==c3){                 document.write ("1");     }         if(c1!=c2 && c2 != c3 && c1!= c3){     document.write ("2"); }          if(c1== c2 && c1 != c3 or c2 == c3 && c2 != c1 or c1== c3 && c2 != c1 ){       document.write ("3"); } } } </script> <a href="#" onClick="teste();"><img style="position:absolute; left:20px; top:275px; " src="imagem.gif" name="img1"/></a>  
      <script> //Observação: assim funciona:  function teste() { img1.src = "foto.png";  } </script> <a href="#" onClick="teste();"><img style="position:absolute; left:20px; top:275px; " src="imagem.gif" name="img1"/></a>  
    • Por marciosena2
      Ola pessoal, alguém me ajuda nisso, com um exemplo em código.
      Apos preencher os dados em um outro domínio enviados com _post quero receber o valor gerado em de um  parâmetro, no meu site 
    • Por raphaelgs
      Preciso de uma ajuda para fazer três campos Metabox(array) diferente efetuar a soma e no quarto metabox mostre o total dos três campos segue abaixo o código.
      array(
      ‘id’ => ‘renda1’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
      array(
      ‘id’ => ‘renda3’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
      array(
      ‘id’ => ‘renda3’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
      array(
      ‘id’ => ‘total’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
×

Informação importante

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