Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Variavel PHP


'ary

Pergunta

Olá pessoal.. Tudo bem?

Bom, eu to com um probleminha básico e doido.. rs

Seguinte, tenho 368 inputs que tem nomes padroes:

produto1

valor1

quantidade1

// verifique em: http://www.biscoitoscaipirao.com.br/vendas/index.php

os próximos seriam, 2, 3.. ate 156, totalizando assim, 368!

Bom, como eu não to afim de chamar 1 um por um no PHP:

$produto_1=$_POST['produto1'];
 $valor_1=$_POST['valor1 '];
 $quantidade_1=$_POST['quantidade1'];
pensei em fazer via FOR, assim:
for($cont=1;$cont<157;$cont++){

 $produto_$cont=$_POST['produto$cont'];
 $valor_$cont=$_POST['valor$cont '];
 $quantidade_$cont=$_POST['quantidade$cont'];

}
Repare que, o contador chamado $cont, recebe valores numericos que vai de 1 ao 156! assim, dinamicamente, iria realizar o que preciso. Porém, o PHP diz que da um erro de sintaxe de variavel. Bem, imagino porque devo estar fazendo merda mesmo na hora de criar as variaveis.. Mas existe alguma forma deu fazer isso? Uma coisa que achei bem estranha é que, se eu mandar somente imprimir na tela o valor de $produto1, por exemplo, sem chamar ela pelo metodo post, ela imprime.. sem precisar de fazer isso: $produto1=$_POST['produto1']; e so fazer isso: echo $produto1; o valor exibe, certinho;.... rs estranho, não?! então, para aproveitar isso, eu fiz o seguinte: um for novamente:
for($cont=1;$cont<157;$cont++){

 echo $produto$cont;  //adivinha: claro que não deu.. rs

}

Bom, minha dúvida é essa.. como eu faço para que, eu crie isso? uma variavel que receba no seu nome um valor de outra váriavel?

obrigada pela atenção

Abraços

'ary

Editado por 'ary
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Veja bem a varriavel produto1 exibe porque

$produto_1=$_POST['produto1'];

se você quer exibir todos os campos você tem que fazer o laço no super global $_post e não na varriavel

for($cont=1;$cont<157;$cont++){

echo $_POST['produto'.$cont]; //adivinha: claro que não deu.. rs

}

Link para o comentário
Compartilhar em outros sites

  • 0

Você pode mudar o nome de todos esses inputs pra somente produto[], valor[] e quantidade[], assim eles serão enviados para o PHP como array e você não precisará ficar numerando.

Aí pra recuperar é só fazer:

$i = 0;
$Produtos = $_POST["produto"];
foreach($Produtos as $Produto){
echo "$Produto[$i] - $Valor[$1] - $Quantidade[$i]<br />";
$i++;
}

Testa aí, vai te quebrar um galhão.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Norivan e MLeandro..

deu certinho aqui.. ^^ Muito obrigada pela ajuda de vocês..

Mas olha.. ainda não entendi o porque, as variáveis, não se multiplicam: confira no site, adicione valor de quantidade e confirme o pedido..

Nome do Produto: Quantid: Valor: Total a Pagar:

Amanteigado leite 10 2,35 20,00

o certo seria 23,50!!!

por algum motivo, não multiplica o valor depois da virgula.. alguma explicação?

Desculpem-me, esqueci de anexar o código:

<table width="700" border="0">
 <tr>
    <td>Nome do Produto:</td>
    <td>Quantidade:</td>
    <td>Valor: </td>
    <td>Total a Pagar:</td>
  </tr> 

  <?
   for($cont=1;$cont<157;$cont++){
    $produto=$_POST['produto'.$cont];
    $valor=$_POST['valor_prod'.$cont];
    $quantidade= $_POST['quantidade'.$cont];
    $total=$valor*10; 

      if($quantidade<>0)      
      { ?>
<tr>
    <td><?=$produto;?></td>
    <td><?=$quantidade;?></td>
    <td><?=$valor;?></td>
    <td><?=number_format($total, 2, ',', ' ');?></td>
  </tr>
      
    <?  
     }  }?>
</table>

Link para o comentário
Compartilhar em outros sites

  • 0

O PHP entende que o que separa as casas decimais é o ponto ( . ) e não a vírgula ( , ) como estamos acostumados.

Por isso você precisará trabalhar sempre com ponto, e não com vírgula, e ajustar o valor quando for mostá-lo com number_format().

Existe uma outra maneira de se resolver, que é colocando o set_locale(LC_ALL, 'pt_BR') no topo da página, mas eu particularmente não gosto de trabalhar dessa forma porque depois dá diferença na integração com o MySQL.

Link para o comentário
Compartilhar em outros sites

  • 0

Substituindo:

srt_replace(".",",$valor);
No entanto usando a number_format() seria melhor
// Formatação para número em reais com decimal 00 a direita
$number = "222934699";
echo "R$" .number_format($number, 2, ',', '.');
// resultado R$222.934.699,00

Link para o comentário
Compartilhar em outros sites

  • 0

Para substituir e salvar os valores com ponto você pode utilizar a função str_replace().

str_replace(",",".",$Valor);
Depois disso, na hora que você for exibir os resultados, para ficar mais amigável para os usuários você pode utilizar a number_format(), assim:
echo number_format($Valor, 2, ",", ".");

O que significa isso?

A variável $Valor vem do valor do produto, com o . para os decimais.

O "," é o caractere que separará os valores decimais.

O "." é o caractere que separará os milhares.

Da forma que está aí, se na variável $Valor você tiver o valor 1234.56, ele será exibido na tela assim: 1.234,56 .

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...