Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilson R. Degressi Míccoli

[Resolvido] Como posso separar dados multiplos de checkbox em var

Recommended Posts

Bom dia a todos.

 

Sou novo no fórum. Estou aprendendo PHP, e surgiu uma dúvida. Estou montando um sistema de reserva de bancos de ônibus para excursão. Já tenho alguma coisa desenhada, conforme abaixo:

 

HTML:

 

<form name="reserva_poltrona" method="post" action="mostra_reservados.php">
  <b><p>Selecione as poltronas que deseja reservar:</p></b><br>
	<p><input type="checkbox" name="chk_poltrona[]" value="01"> 01<br>
	<input type="checkbox" name="chk_poltrona[]" value="02"> 02<br>
	<input type="checkbox" name="chk_poltrona[]" value="03"> 03<br>
	<input type="checkbox" name="chk_poltrona[]" value="04"> 04<br>
	<input type="checkbox" name="chk_poltrona[]" value="05"> 05<br>
	<input type="checkbox" name="chk_poltrona[]" value="06"> 06<br>
	<input type="checkbox" name="chk_poltrona[]" value="07"> 07<br>
	<input type="checkbox" name="chk_poltrona[]" value="08"> 08<br>
	<input type="checkbox" name="chk_poltrona[]" value="09"> 09<br>
	<input type="checkbox" name="chk_poltrona[]" value="10"> 10<br>
	<input type="checkbox" name="chk_poltrona[]" value="11"> 11<br>
	<input type="checkbox" name="chk_poltrona[]" value="12"> 12<br>
	<input type="checkbox" name="chk_poltrona[]" value="13"> 13<br>
	<input type="checkbox" name="chk_poltrona[]" value="14"> 14<br>
	<input type="checkbox" name="chk_poltrona[]" value="15"> 15<br>
	<input type="checkbox" name="chk_poltrona[]" value="16"> 16</p>
	<p><input type="submit" value="Enviar" name="btn_enviar">
	<input type="reset" value="Limpar" name="btn_limpar"></p>
</form>

E a seguir o arquivo mostra_reservados.php que processará o retorno da minha solicitação. Ele me informa as poltronas selecionadas, bem como o total de itens que foram selecionados:

 

<?

$total_itens = count($_POST['chk_poltrona']);

if ($total_itens=="0") {
   echo "Não foi selecionado nada. Verifique!";
   echo "<br>";
   }
   else {
   foreach($_POST['chk_poltrona'] as $Valor)
   $texto .= $Valor . "<br>";

   $total_itens = count($_POST['chk_poltrona']);
   
   echo $texto;

}
?>
Total de itens: <?= count($_POST['chk_poltrona']) ?>

Se eu selecionar por exemplo no formulário os assentos 01, 02, 08, 14, 15 e 16, ele me informa corretamente o resultado, e conta a quantidade de Checkboxes que foram marcados:

 

01

02

08

14

15

16

Total de itens: 6

 

Gostaria de saber dos amigos, como posso fazer pra transformar esses valores, cada um deles, numa variável. Usando o exemplo acima, necessitaria que ficasse assim:

 

$variavel1 = "01";

$variavel2 = "02";

$variavel3 = "08";

$variavel4 = "14";

$variavel5 = "15";

$variavel6 = "16";

 

No caso teria que ser $variavel1, $variavel2, e assim por diante, conforme for a quantidade de checkboxes marcados. No caso essa nomenclatura sequencial das variáveis teria que ficar condicionada à quantia de checkboxes marcados... podendo ser mais ou menos que seis como foi usado no exemplo acima. Não sei se estou conseguindo explicar o que desejo...

 

Desde já agradeço se alguém puder me auxiliar.

Se necessário posso tentar explicar de outra maneira.

 

Muito obrigado.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Você não precisa fazer isso, pois os valores já são passados dessa forma, porém você acessa esses valores através de um array, já usou array antes?

 

Você pode fazer assim:

$array_checkbox = $_POST['chk_poltrona'];
echo $array_checkbox[0] . '<br/>';
echo $array_checkbox[1] . '<br/>';
echo $array_checkbox[2] . '<br/>';
echo $array_checkbox[3] . '<br/>';
echo $array_checkbox[4] . '<br/>';

Veja quais valores serão mostrados, qualquer coisa eu sugiro que você dê uma olhada em:

http://php.net/manual/pt_BR/language.types.array.php

http://www.plus2net.com/php_tutorial/array_checkbox.php

 

Flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de você usar:

 

$variavel1

$variavel2

$variavel3

...

 

Use:

 

$variavel[0];

$variavel[1];

$variavel[2];

...

 

Seu checkbox já está retornando arrays para você não há necessidades de criar variáveis auxiliares, podem usar as próprias que já tem.

 

Exemplo:

 

<?php
     $variavel = $_POST['chk_poltrona'];

     $total_itens = count($variavel);


     if ($total_itens == "0")
     {
          echo "Não foi selecionado nada. Verifique!";
          echo "<br>";
     }
     else
     {
          for ($i = 0; $i < $total_itens; $i++)
          {
               echo $variavel[$i] . "<br />";
          }
     }
?>

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos Daniloinf, Paulo Nobrega e Vinicius Borsato,

 

Agradeço muito a gentileza pelas dicas enviadas. Apliquei todas, até pra fins de entendimento, e todas deram certo. Tenho uma nova dúvida, se for aplicável a este tópico...

 

Associei o mapa do ônibus a um banco de dados, onde através de um SELECT vejo se a poltrona está ocupada ou não. Formatei um mapa de ônibus na horizontal, e coloquei 4 colunas pra definir se as poltronas seriam posicionadas a janela esquerda, corredor esquerdo, janela direita, corredor direito do veículo. Essa tabela é montada com a consulta no banco, através de um WHILE.

 

Ao utilizar os métodos que foram passados, e pedindo pra listar as variáveis, as mesmas são colocadas na ordem em que estão listadas. O problema é que como cada poltrona está numa tabela, elas não estão sendo listadas por ordem alfabética, mas sim pela ordem que aparecem na tabela. Exemplo:

 

3 7 11

4 8 12

 

 

 

 

2 6 10

1 5 9

 

 

Se eu selecionar 3, 4, 9, 10, 11, 12, ele mostra pra mim as selecionadas como sendo 3, 4, 11, 12, 9, 10.

 

Pergunto: existiria alguma maneira de colocar esses dados das variáveis a serem exibidos na tela, em ordem crescente, ficando 3, 4, 9, 10, 11, 12?

 

Abraços e muito obrigado.

Wilson

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que como cada poltrona está numa tabela, elas não estão sendo listadas por ordem alfabética, mas sim pela ordem que aparecem na tabela

poderia explicar novamente esse trecho ?

tabela html ? tabela do banco de dados ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro hinom,

 

Vamos deixar a parte do banco de dados de lado, acho que vou complicar muito pra chegar onde quero me expressar aos amigos... montei um novo HTML, mostrando minha situação com o mapa do ônibus formatado na situação real. Pra ficar um pouco mais real, montei o mapa do ônibus completo, com 46 lugares, vide abaixo:

 

 

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Efetue sua reserva</title>
</head>

<body>
<form name="reserva_poltrona" method="post" action="resultado.php">
 <b><p>Selecione as poltronas que deseja reservar:</p>
	<p> </p>
	<table border="1" width="780">
		<tr>
			<td width="56" rowspan="3"> </td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="03">03</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="07">07</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="11">11</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="15">15</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="19">19</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="23">23</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="27">27</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="31">31</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="35">35</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="39">39</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="43">43</font></td>
			<td width="28" height="56" rowspan="2">
	<p align="center"><b><font size="2" face="Tahoma">WC</font></b></td>
		</tr>
		<tr>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="04">04</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="08">08</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="12">12</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="16">16</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="20">20</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="24">24</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="28">28</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="32">32</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="36">36</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="40">40</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="44">44</font></td>
		</tr>
		<tr>
			<td width="402" height="28" colspan="12">
			<p align="center"><font face="Tahoma" size="2">CORREDOR INTERNO DO
			ÔNIBUS</font></td>
		</tr>
		<tr>
			<td width="56" rowspan="2">
			<p align="center"><b>MOT</b></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="02">02</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="06">06</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="10">10</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="14">14</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="18">18</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="22">22</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="26">26</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="30">30</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="34">34</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="38">38</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="42">42</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="46">46</font></td>
		</tr>
		<tr>
			<td width="28" height="28"><font size="1" face="Tahoma">
 <input type="checkbox" name="chk_poltrona[]" value="01">01</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="05">05</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="09">09</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="13">13</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="17">17</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="21">21</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="25">25</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="29">29</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="33">33</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="37">37</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="41">41</font></td>
			<td width="28" height="28">
	<font size="1" face="Tahoma">
	<input type="checkbox" name="chk_poltrona[]" value="45">45</font></td>
		</tr>
	</table>
	</b>
	<p><input type="submit" value="Enviar" name="btn_enviar">
	<input type="reset" value="Limpar" name="btn_limpar"></p>
</form>
</body>
</html>

Observe o seguinte:

 

MOT = Motorista

WC = Banheiro do Ônibus...

 

Aí já dá pra se situar onde é a frente e a traseira do veículo. Observe que existe uma fileira de bancos na janela do lado esquerdo (o lado do motorista); uma fileira de bancos no lado esquerdo do corredor; uma fileira de bancos na janela direita e outra no lado direito do corredor.

 

Rodando o arquivo HTML nesse formato, e utilizando um PHP vide abaixo (resultado.php), montado com as sugestões dadas pelos outros colegas:

 

<?
 $variavel = $_POST['chk_poltrona'];
 $total_itens = count($variavel);

 if ($total_itens > "5")
 {
 echo "Desculpe mas você só pode reservar 5 poltronas por vez. Verifique!";
 echo "
";
 exit;
 }
 else
 {

 }


 if ($total_itens == "0")
 {
 echo "Não foi selecionado nada. Verifique!";
 echo "
";
 }
 else
 {
 for ($i = 0; $i < $total_itens; $i++)
 {
 echo $variavel[$i] . "
";
 }
 }
?>
Total de itens: <?= count($_POST['chk_poltrona']) ?>





Tenho listadas as poltronas que selecionei. Esse PHP não permite que sejam selecionados mais de 5 itens.

 

PORÉM...aí vem o problema que estou tendo... peço por gentileza, que se for simular o erro, selecione as poltronas 01, 05, 06, 07 e 08.

 

O resultado que o PHP me dá é o seguinte:

 

07

08

06

01

05

Total de itens: 5

 

A pergunta é a seguinte: como faço pra ordenar esses valores em ordem CRESCENTE, antes de separar as strings deles? Teria como regravar as variáveis, colocando os resultados em ordem crescente, de acordo com variavel0, variavel1, variavel2, etc?

 

Queria que o resultado correto ficasse assim:

 

01

05

06

07

08

Total de itens: 5

 

 

Abraços e obrigado.

Wilson

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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