TransWikia.com

Como receber id's no controller/model

Stack Overflow em Português Asked by Gabriel Alcala on December 29, 2020

Estou criando um projeto e esbarrei em um problema.
A ideia é o seguinte: adicionar participantes em um evento específico.
Já criei tudo certinho: controllers, models e views.
A minha dúvida é como que faço para o controller/model receber as id’s de cada participante que selecionei em um multi-select da view adicionar_participante.

Tenho uma tabela (participantes_eventos) cujas colunas são:
id_relação, id_usuario, id_evento.

Assim, para cada participante em um evento tenho uma relação nessa tabela.

Código da VIEW:

<h1>Adicionar participantes</h1>

<form action="adicionar-participante-evento" method="post">
  <select multiple class="form-control" name="id_usuario">
	<?php foreach ($usuarios as $usuario) { ?>
	  <option value="<?= $usuario['id_usuario']; ?>"><?= $usuario['nome_usuario']; ?></option>
	<?php
	}
	?>
	</select>
  <button class="btn btn-default" type="submit">Adicionar</button>
</form>

Código do Controller Eventos:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class EventoController extends CI_Controller {

	public function __construct(){
		parent::__construct();
		$this->load->view('template/cabecalho');
		$this->load->view('template/footer');
	}

	public function index() {
		$eventos = $this->EventosModel->listarTodos();
		$dadosEventos = array('eventos' => $eventos ); 
		$this->load->view('eventos/index', $dadosEventos);
	}

	public function adicionarParticipante(){
		$usuarios = $this->UsuariosModel->listarTodos();
		$dadosUsuarios = array('usuarios' => $usuarios);
		$this->load->view('eventos/adicionar_participante', $dadosUsuarios);
	}

	public function adicionarParticipanteEvento(){
		$id_usuarios_participantes = array(
			'' => '';
		);

	}
}

Código do Model Eventos:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class EventosModel extends CI_Model {

	public function listarTodos(){
		$eventos = $this->db->get('eventos')->result_array();
		return $eventos;
	}
}

One Answer

Então, para que possa ser enviado vários itens selecionados você deve colocar como um array assim:

<select multiple class="form-control" name="id_usuario[]">

Eu imagino que esteja trabalhando com rotas, não da pra saber, mas no seu controller em seu metodo que esta recebendo esses dados, imagino que seja o adicionarParticipanteEvento deve fazer com que receba assim:

public function adicionarParticipanteEvento(){

    $id_usuarios_participantes = $this->input->post('id_usuario');

    // somente para ver se esta vindo certo e depois trabalhar com esses dados
    var_dump($id_usuarios_participantes); 
}

E uma dica que dou e que não acho correto do que esta fazendo é chamar essas views no __construct (não tem nada a ver com o seu problema, mas só uma dica mesmo).

Answered by Marcelo Diniz on December 29, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP