Formulario com checkbox obtido de array
Boas pessoal,
Estou aqui com um problema que não estou a ver como resolver...
Num trabalho da faculdade (onde só agora começamos a usar o php) foi colocado a seguinte questão que eu acho mal formulada, mas os tutores não dão resposta ao questionamento e assim continuo sem saber se a questão está bem elaborada mas eu não a estou a entender.
Enfim, a questão é a seguinte:
>
Escreva uma página HTML contendo um formulário com 10 checkboxes contendo uma lista de 10 itens e seus respectivos preços (a lista e os respectivos preços devem estar em um array, e serem lidos em tempo de execução e exibidos em uma tabela HTML). Escreva um programa PHP que receba essas informações e exiba uma listagem de todos os itens escolhidos pelo usuário, em ordem alfabética, assim como o preço total destes produtos selecionados. Neste mesmo formulário, mostre em um combo ou com radio, 2 formas de pagamento: “A vista” e “Cartão de Crédito”. Dependendo da escolha do usuário, ao clicar em um botão “Finalizar Compra” o usuário recebe uma mensagem:
a. Se a escolha for “A vista” -> “Pagamento a vista no valor de XXXX”
b. Se a escolha for “Cartão de Crédito” -> listar uma tabela com os valores das parcelas A vista, 2x, 3x, 4x e 8x.
Fazer um formulário HTML e enviar por $_POST ou $_GET para ser recebido num arquivo PHP e aí processar o resto das solicitações, ficava tranquilo, mas construir a tabela de produtos com valores adquiridos num ARRAY, já vasculhei tudo e não consegui entender como fazer.
Então resolvi fazer mesmo um formulário HTML dentro do PHP e montar a lista de produtos da seguinte forma:
<?php
$produtos=array('Arroz' => 5.00, 'Feijao' => 2.80, 'Batata' => 3.50, 'Farinha' => 5.50, 'Ovos' => 2.50, 'Tomate' => 1.90,
'Laranja' => 1.65, 'Banana' => 1.85, 'Leite' => 1.80, 'Maça' => 2.30);
echo "<h2>Tabela de Preços</h2>";
echo "<h3>Escolha os seus produtos</h3>";
echo "<table border='1'>\n";
echo '<tr> <th>Nome</th> <th> Preço</th> <th>Escolha</th></tr>', "\n";
foreach ($produtos as $key => $value) {
echo "<td>$key</td><td>$value</td><td><input type='checkbox' name='checkbox[]' value='produto'></td></tr>\n";
}
echo '</table>';
echo "<input type='submit' name='botao_confirma' value='Confirmar'>";
?>
Até aqui tranquilo, ele monta a tabela perfeitamente com os valores do ARRAY.
Agora vou necessitar de outro aquivo PHP (confirma.php) onde irei colocar algo como:
<?php
$chgeckboxes = $_POST['checkbox'];
?>
Para receber os valores enviados através do formulário do arquivo PHP anterior... o meu problema é como faço nesse arquivo para dar a instrução de envio $_POST para o arquivo CONFIRMA.PHP ???
Se o formulário fosse feito normalmente num arquivo HTML, colocaria :
<form name="pedido" method="POST" action=”confirma.php”>;
Mas neste caso, como fazer para enviar os dados do formulário e receber num ARRAY os dados selecionados no formulário de origem?
Se alguém poder dar uma luz... agradeço !!
Entretanto estudei um pouco melhor as possibilidades e alterei o primeiro código e já estou a conseguir enviar os valores
<?php
$produtos=array('Arroz' => 5.00, 'Feijao' => 2.80, 'Batata' => 3.50, 'Farinha' => 5.50, 'Ovos' => 2.50, 'Tomate' => 1.90,
'Laranja' => 1.65, 'Banana' => 1.85, 'Leite' => 1.80, 'Maça' => 2.30);
echo "<h2>Tabela de Preços</h2>";
echo "<h3>Escolha os seus produtos</h3>";
echo "<table border='1'>\n";
echo '<tr> <th>Nome</th> <th> Preço</th> <th>Escolha</th></tr>', "\n";
foreach ($produtos as $key => $value) {
echo "<form name='checkbox' method='POST' action='confirma.php'><td>$key</td><td>$value</td><td>
<input type='checkbox' name='checkbox[]' value='$key $value'></td></tr>\n";
}
echo '</table>';
echo "<input type='submit' name='botao_confirma' value='Confirmar'></form>";
?>
No arquivo PHP que recebe, tenho o seguinte:
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
$chgeckboxes = $_POST['checkbox'];
echo "<table border='1'>\n";
echo '<tr> <th>Nome</th> <th> Preço</th> </tr>', "\n";
foreach ($chgeckboxes as $key => $value) {
echo "<td>$key</td><td>$value</td></tr>\n";
}
echo '</table>';
?>
Estou a receber tudo, o problema é que só consegui enviar o nome do produto e o valor juntos, ficando ambos como value... o problema agora está a ser separar esses valores...
Discussão (11)
Carregando comentários...