Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Estou desenvolvendo um script de pedidos.
Estou enviando valores via post para uma tela, mas eu quero pegar e imprimir somente os valores onde o campo 'quantidade seja maior do que zero'. O problema é que o id também deve obedecer a esta 'restrição' mas eu nao estou conseguindo faze-la.
Para facilitar o entendimento:
$qtde = $_POST['quantidade'];
foreach($qtde as $quantidade) {
if ($quantidade!='0' && $quantidade!='') {
echo 'Quantidade: '.$quantidade . "<br>\n";
$input = $_POST['codigo'];
foreach($input as $id) {
echo 'Id: '.$id . "<br>\n";
}
}
else { }
}
Alguém tem uma idéia???
Grato.
Parse error: syntax error, unexpected T_ELSE in C:\xampp\htdocs\cosmetica\admin_consultor\pedidos\visualizar_itens_pedido.php on line 28
Apareceu a mensagem de erro.
Tentei alterar o else, mas aí imprime todos os id's, até restringe a quantidade, mas imprime todos os id's.
Acho que tinha um "{" a mais.... tenta ai!!!
$qtde = $_POST['quantidade'];
foreach($qtde as $quantidade) {
if ($quantidade!='0' && $quantidade!='') {
echo 'Quantidade: '.$quantidade . "<br>\n";
$input = $_POST['codigo'];
foreach($input as $id) {
if ($quantidade!='0' && $quantidade!='')
echo 'Id: '.$id . "<br>\n";
}
}
else { }
}Não deu erro, mas restringiu somente a quantidade, os id's continuam sendo impressos.
Quantidade: 10
Id: 46574564
Id: 231564
Id: 545415
Id: 215454
Id: 3465465
Tinha que imprimir assim:
Quantidade: 10
Id: 3465465
Grato.
Posta o form.php, talvez seja possível alterar alguma coisa para facilitar na hora de comparar no ver_itens_pedido.php
Entendi,
Pode me mostrar o que vem na variável $_POST['quantidade'] e $_POST['codigo']?
Estou postando os codigos:
form.php
while ($row = mysql_fetch_assoc($result))
{
$id = $row["id"];
$codigo = $row["codigo"];
$descricao=$row["descricao"];
$valor=number_format($row["valor"],'2',',','.');
echo "
<tr>
<td bgcolor='#E0DFE3' align='center'><input type='text' name='codigo[]' value='$codigo'></td>
<td bgcolor='#E0DFE3' align='left'> $descricao</td>
<td bgcolor='#E0DFE3' align='center'><input type='text' name='quantidade[]' size='2' value='0'></td>
<td bgcolor='#E0DFE3' align='left'> R$ $valor</td>
</tr>";
}
echo '</table>';
echo "<br><br>";
echo "<input type='submit' value=' >> fechar pedido '>";
visualizar_itens_pedido.php
$qtde = $_POST['quantidade'];
foreach($qtde as $quantidade) {
if ($quantidade!='0' && $quantidade!='') {
echo 'Quantidade: '.$quantidade . "<br>\n";
$input = $_POST['codigo'];
foreach($input as $id) {
if ($quantidade!='0' && $quantidade!='')
echo 'Id: '.$id . "<br>\n";
}
}
else { }
}
Grato.
Tentei assim, mas continua nao fazendo o desejado:
$qtde = $_POST['quantidade'];
foreach($qtde as $quantidade) {
if ($quantidade!='0' && $quantidade!='') {
echo 'Quantidade: '.$quantidade . "<br>\n";
$input = $_POST['codigo'];
foreach($input as $id) {
echo 'Id: '.$id . "<br>\n";
}
}
else { }
}
Alguém tem uma idéia?
Coloque um contador e o use para criar um array bi-dimencional, onde cada posição terá codigo, quantidade juntos.
$count = 0;
while ($row = mysql_fetch_assoc($result))
{
$id = $row["id"];
$codigo = $row["codigo"];
$descricao=$row["descricao"];
$valor=number_format($row["valor"],'2',',','.');
echo "
<tr>
<td bgcolor='#E0DFE3' align='center'><input type='text' name='{$count}[codigo]' value='$codigo'></td>
<td bgcolor='#E0DFE3' align='left'> $descricao</td>
<td bgcolor='#E0DFE3' align='center'><input type='text' name='{$count}[quantidade]' size='2' value='0'></td>
<td bgcolor='#E0DFE3' align='left'> R$ $valor</td>
</tr>";
$count++;
}
echo '</table>';
echo "<br><br>";
echo "<input type='submit' value=' >> fechar pedido '>";
Saída:
array
0 =>
array
'codigo' => string '180113-OI11' (length=11)
'quantidade' => string '0021' (length=4)
1 =>
array
'codigo' => string '180115-OI11' (length=11)
'quantidade' => string '0025' (length=4)
2 =>
array
'codigo' => string '180111-OI11' (length=11)
'quantidade' => string '0721' (length=4)
continua...
Desta forma fica mais fácil para você trabalhar em cima. :lol:
Entendi como faz no form, mas e no visualizar_itens_pedido.php, como faz?
Entendi que o valor passado será precedido pelo contador, ex: 001, 002... mas o contador está no 'name'? Pensei que estivesse no value...
não entendi muito bem, pode ajudar?
Grato.
Seria algo mais ou menos assim:
<?php
$values = $_POST;
for($i=0;$i<count($values);$i++)
{
if(!empty($values[$i]['quantidade']) and intval($values[$i]['quantidade']) != 0)
{
echo 'Quantidade: ', $values[$i]['quantidade'], '<br>';
echo 'ID: ', $values[$i]['quantidade'], '<br>';
}
}
?>
Fiz na corrida, dá uma conferida se tá ok :lol:
Deu certo!!! :clap:
Muito obrigado pela força, vlw!
De nada. ^_^
<?php
foreach ($_POST as $valor) {
if ((int)$valor['quantidade'] > 0) {
echo 'Quantidade: ', $valor['quantidade'], '<br />';
echo 'Codigo: ', $valor['codigo'], '<br /><br />';
}
}
Sei que já resolvemos o problema, porém desta forma obtemos o mesmo resultado, porém com maior performance e clareza do script.
[]'s
Já tentou repedir o if do foreach $qtde, no foreach $input.
Ex: