Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Gravar dados de campo multiple no BD

06-06-2018 22:25

Pessoal, boa noite.
Estou iniciando em PHP e pesquisando seu post referente como gravar opções de um campo multiple no BD me deparei com um problema.
Ao selecionar a(s) opção(ões) do campo multiple e envia-las para o BD ele esta gravando a palavra "Array". Como posso resolver este problema?
Segue codigo que estou utilizando.
OBS: Se deixo setado o [] <select name="id_servico[]" multiple="multiple"> ele grava a palavra Array no BD
Se retiro o [] ele grava o codigo selecionado, porem se eu seleciono mais de 1 opção ele grava somente o ultimo registro.
Desde ja obrigado pela atenção.
Gustavo Henrique

<form name="cadfunc" class="form-horizontal" method="POST" action="processa/proc_cad_funcionario.php">
</div> <!--processa/proc_cad_funcionario.php-->

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

<div class="form-group">
<label for="nome">Nome*:</label>
<input type="text" class="form-control" id="nome" name="nome" placeholder="Informe o Nome" autofocus>
</div>

<div class="col-md-2">
<label for="id_servico">Serviços:</label>
<select name="id_servico[]" multiple="multiple">
<option value="1">escova</option>
<option value="2">hidratacao</option>
<option value="3">relaxamento</option>
<option value="4">tintura</option>
<option value="5">PE + MAO</option>
</select>

</div>
<?php
if(isset($_POST['cadastrar'])) {
echo implode(",", $_POST['id_servico']);
}
?>
</div>

<button type="submit" name="cadastrar" value="cadastrar" class="btn btn-success">Cadastar funcionario</button>
<a class="btn btn-primary" href="listar_funcionarios.html" id="toggleNavColor">Listar funcionarios</a>
<button type="reset" class="btn btn-default">Cancelar</button>
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17833
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Gravar dados de campo multiple no BD

08-06-2018 15:53

Seu método está correto. Fica dessa forma:

<select name="id_servico[]" multiple="multiple">

Sendo somente necessário criar a variável que vai ser usada para o INSERT no banco de dados.

$dados = implode(",", $_POST['id_servico']);

Mostra como está fazendo o INSERT.
0
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Re: Gravar dados de campo multiple no BD

10-06-2018 18:24

Boa noite segue codigo do insert no BD:


<?php
session_start();
include_once("../seguranca.php");
include_once("../conexao.php");

$nome = ucwords($_POST["nome"]);
$id_servico = $_POST["id_servico"];

$query = mysqli_query($con,"INSERT INTO funcionarios (`nome`,`id_servico`,`created`) VALUES('$nome', '$id_servico', NOW())") or die(mysqli_error($con));


?>
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17833
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Gravar dados de campo multiple no BD

10-06-2018 19:04

Faltou adicionar o implode no valor do id_servico, para que os valores fiquem salvos separados por vírgula no banco de dados.

$id_servico = implode(",", $_POST['id_servico']);

0
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Re: Gravar dados de campo multiple no BD

10-06-2018 20:48

Boa noite Kleber,

Muito obrigado pela ajuda, gravou corretamente os dados no BD.
Mais uma vez obrigado!
0
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Re: Gravar dados de campo multiple no BD

11-06-2018 09:49

Bom dia Kleber, Obrigado pela ajuda anterior, mas poderia me dar um novo help neste mesmo caso?

Eu consigo usar essa mesma função "implode" para o campo select, ou seja, ao inves de ficar digitando as opções de escolha eu trazer diretamente do BD?
A sintaxe ficaria assim?


<div class="col-md-2">
<label for="status">Serviços Realizados:</label>
<select id="id_servico" class="form-control" name="id_servico" multiple>
<option>Selecione</option>
<?php
$resultado=mysqli_query($con,"SELECT * FROM servicos");
while($dados = mysqli_fetch_assoc($resultado)){
?>
<option value="<?php echo $dados["id_servico"]; ?>">
<?php echo $dados["nome_servico"];?>
</option>
<?php } ?>

<?php
if(isset($_POST['cadastrar'])) {
echo implode(",", $_POST['id_servico']);
}
?>
</select>
</div>
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17833
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Gravar dados de campo multiple no BD

14-06-2018 16:50

Desculpe a demora. Então no caso você já tem as opções no banco de dados, tipo: op1,op2,op3,op4 e quer já jogar no select selecionadas?
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado