Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal to com o seguinte problema.
Possuo dois arrays.
$tamanho[]
$quantidade[]
Mas eu gostaria de pegar o valor apenas quando os 2 fossem preenchidos.
ex:
O usuario necessita escolher o tamanho da pizza via checkbox:
Tamanho | Quantidade
Pequena [x] | Quantidade[2]
Media [ ] | Quantidade[10]
Grande [x] | Quantidade[]
Big [x] | Quantidade[1]
Nececasso eu gostaria de pegar apenas os valores do tamanho Pequeno e quantidade selecionada que é 2 e a Big quantidade 1.
Como os outros campos não foram selecionados corretamente eu não pego o valores daquele array;
arquivo que faz o loop e mostra os valores;
while ($linhas = mysql_fetch_array($sql)) {
$tamanhosid = $linhas['idtamanhos'];
$tamanho = $linhas['tamanho'];
$valor = $linhas['valor'];
?>
<td align="left">
<input name="tamanho[]" value="<?php echo$tamanhosid?>" type="checkbox">
<?php echo "<b>$tamanho:</b> R$:$valor"; ?>
Quantidade:
<select name="quantidade[]"/>
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<select/>
</td>
<?php } ?>
</tr>
To peguando os valores desse jeito
if($_POST['cadastrar']) {
extract($_POST);
foreach(array($tamanho) as $tamanho)
foreach(array($quantidade) as $quantidade)
for($i = 0; $i < count($tamanho); $i++) {
echo"<td align='left'COLSPAN='9'>";
echo"<b>O Tamanho selecionado foi:<input type='hidden' value='$tamanho[$i]'/>";
echo"</b><br>";
echo "<b>A quantidade selecionada foi:<input type='hidden' value='$quantidade[$i]' />$quantidade[$i]</b>";
echo'</td>';
}
}
}
Agradeço a qualquer ajuda!
Eu ja haviapostado o arquivo html :)
while ($linhas = mysql_fetch_array($sql)) {
$tamanhosid = $linhas['idtamanhos'];
$tamanho = $linhas['tamanho'];
$valor = $linhas['valor'];
?>
<td align="left">
array Tamanho-> <input name="tamanho[]" value="<?php echo$tamanhosid?>" type="checkbox">
<?php echo "<b>$tamanho:</b> R$:$valor"; ?>
Quantidade:
array quantidade-> <select name="quantidade[]"/>
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<select/>
</td>
<?php } ?>
</tr>Nossa, que vacilo, passei reto por ele. :yay:
Do jeito que está já funcionaria como eu disse, mas você precisaria criar algumas verificações para o caso de o checkbox estar marcado e o valor for zero, para não bagunçar a ordem.
Mas, tem um jeito mais fácil: Trocando o checkbox do tamanho por um <label> simples, já que ele é mais representativo, e adicionando uma nova dimensão ao <select> da quantidade contendo o ID do tamanho:
<label><?php echo "<b>$tamanho:</b> R$:$valor"; ?></label>
Quantidade: <select name="quantidade[ <?php echo$tamanhosid?> ][]"/></select>
OPTIONS suprimidos :thumbsup:
Isso vai fazer você receber um array multidimensional que, ao invés de estar numerado crescente e automaticamente como um array normal (0, 1,2,3...) vai ser pelos IDs dos seus tamanhos.
Daí é só trabalhar com os dados.
Hum..
Interessante..
Vou testar aqui!
Obrigado pela ajuda Bruno.
Tava olhando aqui.
Bom não sei se me perdi no teu raciocinio mas pelo que eu vi, eu não vou conseguir colocar os tamanhos para o cliente
selecionar.
<label><?php echo "<b>$tamanho:</b> R$:$valor"; ?></label>
Quantidade: <select name="quantidade[ <?php echo$tamanhosid?> ][]"/></select>
assim:
<label><?php echo "<b>$tamanho:</b> R$:$valor"; ?></label> Quantidade: <select name="quantidade[ <?php echo$tamanhosid?> ][]"/>1</select>
<label><?php echo "<b>$tamanho:</b> R$:$valor"; ?></label> Quantidade: <select name="quantidade[ <?php echo$tamanhosid?> ][]"/>2</select>
<label><?php echo "<b>$tamanho:</b> R$:$valor"; ?></label> Quantidade: <select name="quantidade[ <?php echo$tamanhosid?> ][]"/>4</select>Acho melhor eu testar antes de falar...
Estava pensando em algo como:
<form method="post">
<label>
Pequeno
<select name="pequeno[1]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</label>
<label>
Médio
<select name="medio[1]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</label>
<label>
Grande
<select name="grande[1]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</label>
<input type="submit" value="Vai" />
</form>hum...
ai terei 4 arrys..certo.
eu cheguei a fazer isso, mas tive com problemas para pegar os dados, nao consigo..
vou testar aqui, qualquer coisa eu volto.
a encomodar;
Como posso pegar esses 5 arrays ?
Oras, [inline]$_POST['pequeno'][/inline], [inline]$_POST['medio'][/inline], [inline]$_POST['grande'][/inline]
Se quiser facilitar ainda mais você pode modificar o HTML para que todos os <select> tenham o mesmo nome e a "descrição" seja outra dimensão:
<select name="tamanhos['grande'][1]">Assim, [inline]$_POST['tamanhos'][/inline] teria toda a estrutura prontinha.
Só que aí você já está fugindo um pouco da razão do HTML.
Bruno Augusto Cara muito obrigado pela ajuda!
Vou testar aqui.
Desculpa pela demora, mas não aguentava mais ver o codigo na minha frente!
Posta o seu HTML para vermos se está construído da melhor maneira pois, se estiver, basta remover os índices vazios que os índices serão sempre iguais, isto é, o índice 2, por exemplo, vai ser o terceiro elemento tanto da tamanho quanto da quantidade, pois ambos os arrays terão seus comprimentos igualados.