Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

PHP - Passar array via POST

Olá ... tenho uma página PHP que contém um formulário. Dentro dele, tenho dois cursores que preenchem os dados da tela. Após selecionar os combos desejados, quero enviar isso por um array para uma outra página de controller para então persistir no banco. Mas estou com dúvida em como passar um array via método POST. Como faço para enviar um array no método POST, recebê-lo na página designacao-logica-adiciona.php e trabalhar o conteúdo dele?

<?php 

    require_once("cabecalho.php");
    require_once("designacao-dao.php");
    $data = $_GET['data'];
    $designacao = array();

//verificaUsuario();

//Buscar apostilas  
$apostila = selecionaApostilaOrador($conexao, $data);

?>

<div id="list" class="row">

<form action="designacao-logica-adiciona.php" method = "post">    

    <div class="table-responsive col-md-12">

        <h4 class="btn-danger" align="left"><img src="img/orador.jpg" alt="orador" height="50" width="50"> Programação de Oradores Para a Reunião de: <?= $data ?> </h4>

            <table class="table table-hover" cellspacing="0" cellpadding="0" >
                <thead>
                    <tr>
                        <th>Sessão</th>
                        <th>Tema</th>
                        <th>Tempo</th>
                        <th>Orador</th>
                     </tr>
                </thead>

            <?php foreach ($apostila as $apostila): 

                $codApostila = $apostila['id'];
                $sessaoReuniao = $apostila['reuniao'];
                $tema = $apostila['tema'];
                $tempo = $apostila['tempo'];

                array_push($designacao, $codApostila);
                array_push($designacao, $sessaoReuniao);
                array_push($designacao, $tema);
                array_push($designacao, $tempo);


                // **********************************************************
                // Tratamento dos participantes de acordo com a reunião...
                // **********************************************************

                $participante = selecionaParticipante($conexao, $sessaoReuniao, $tempo);
                //$leitorEbc = selecionaLeitorEbc($conexao);

            ?>
                <tbody>
                    <tr>
                        <td><?= $sessaoReuniao ?></td>
                        <td><?= $tema ?></td>
                        <td><?= str_pad($tempo, 2 , "0", STR_PAD_LEFT)." (min)" ?></td>


                        <td>
                            <select name="participante" class="form-control">

                                <?php foreach ($participante as $participante): 
                                    $participanteId = $participante['id'];
                                    $participanteNome = $participante['nome'];

                                    array_push($designacao, $participanteId);


                                ?>
                                    <option value="<?= $participanteId ?>"><?= $participanteNome ?></option>

                                <?php endforeach ?>

                            </select>     
                        </td>
                </tbody>
             <?php endforeach ?>    

            <tr>
                <td><input type="submit"  class="btn btn-primary" value="Confirmar" /></td>
            </tr>    

        </table>

     </div>


    </form>

 </div> 


<?php include("rodape.php"); ?>
3 respostas

Oi Paulo, tudo bem? Sua dúvida me parece um pouco estranha, mas vamos discutila pra ver se entendi direito.

Bom, o primeiro passo é perceber que a superglobal $_POST já é um array. Beleza?

Segundo passo é notar que não é possivel você criar um array com os dados do formulário antes do POST ser executado, inclusive se a montagem desse array for executado na mesma página.

O que você pode fazer é... Submeter seu formulário para um intermediario, que vai capturar todos os dados, fazer os tratamentos necessários pra só depois passar esses dados pro seu controller. Ou...

Enviar todos os seus dados para o seu controller e lá criar esse novo array o qual você usará para persistir os dados.

Não sei se é isso realmente que deseja fazer, desculpe, não entendi muito bem.

Espero ter ajudado, bons estudos. Qualquer dúvida, pode chamar :)

solução!

Para enviar um array por post, defina o nome dos seus campos no html como qualquerNome[]. Dessa forma isso será enviado como um array $_POST['qualquerNome'].

Não sei se era realmente essa sua dúvida, mas espero ter ajudado.

Acho que não me expliquei bem...vou tentar novamente. Eu tenho um formulário com dois loops encadeados: O primeiro lista as sessões de uma reunião; O segundo, preenche os combos para seleção de cada orador elegível da reunião. Exemplo: Reunião 1 - Combo List com 3 oradores Reunião 2 - Combo List com 4 oradores Reunião 3 - Combo List com 'N' oradores

E assim vai...o usuário vai selecionar para cada reunião um orador e ao final do formulário vai enviar ... o formulário precisa enviar a lista de reuniões com os oradores selecionados para um controller que vai gravar isso tudo no banco.

Quando passo por variável não rola, manda apenas o último...queria preencher um array no form e enviá-lo via POST...essa é a minha dúvida.