Estou com a seguinte dificuldade para inserir no banco 4 array
segue a estrutura para melhor entendimento.
$data_id = 1;
$value = $request->get('value');
$aluno_id = $request->get('user_id');
$count = count($value);
if ($count > 0)
{
for ($i = 0; $i < $count; $i++) {
$frequencia->user_id = auth()->user()->id;
$frequencia->aluno_id = $aluno_id[$i];
$frequencia->data_id = $data_id[$i];
$frequencia->value = $value[$i];
$frequencia->save();
}
}
echo 'gravou';
sendo que $value
é um array
que vem do checkbox
marcado no form, eu quero inserir no banco os dados marcados na checkbox
com form a quantidade, alguém pode me ajudar?
Dragoon
Outubro 19, 2018, 12:48pm
#2
Qual é o seu formulário?
De cara já vi um erro de programação, esse código não tem um debug
com erros?
Esse é o formulario:
{!! Form::open(['route'=>['admin.boletim.frequencias.store']]) !!}
<div class="modal-body">
<div class="row">
<div class="form-group">
<div class="col-md-6">
<label for="">Data</label>
<input type="date" class="form-control" name="data">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-md-12">
<label for="">Descrição</label>
<textarea class="form-control" name="desc"
style="height: 70px;">
</textarea>
</div>
</div>
</div>
<br>
<div class="row">
<div class="form-group">
<div class="col-md-12">
<table class="table table-bordered">
<tbody>
<tr>
<th>Nome aluno</th>
<th style="width: 50px">Presente</th>
</tr>
@forelse($users as $us)
<tr>
<td>{{$us->user->name}}</td>
<input type="hidden" name="aluno_id[]"
value="{{$us->user->id}}">
<td>
<input type="checkbox" name="value[]" value="1">
</td>
</tr>
@empty
<td colspan="2">
<span>Nenhum aluno matriculado!</span>
</td>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left"
data-dismiss="modal">Fechar
</button>
<button type="submit" class="btn btn-primary">Salvar</button>
</div>
{!! Form::close() !!}
Qual erro você identificou?
Ele passa pelo for e grava apenas um row, eu quero q ele grave varias rows na tabela conforme a quantidade de checkbox marcados!
Dragoon
Outubro 19, 2018, 12:53pm
#5
$data_id = 1;
é um inteiro
ai você fez um for $frequencia->data_id = $data_id[$i];
ou seja, ai te um erro
Realmente tava retornando um erro , eu arrumei e agora está gravando no banco apenas um registro! sendo que marco vários checkbox
, era pra gravar varias rows
certo!
$data_id = $id->id;
$value = $request->get('value');
$aluno_id = $request->get('user_id');
$count = count($value);
//
if ($count > 0) {
for ($i = 0; $i < $count; $i++) {
$frequencia->user_id = auth()->user()->id;
$frequencia->aluno_id = $aluno_id[$i];
$frequencia->data_id = $data_id;
$frequencia->value = $value[$i];
$frequencia->save();
}
}
echo 'gravou';
Dragoon
Outubro 19, 2018, 1:03pm
#7
A ideia é certa, mas, o código diz outra coisa:
Código HTML:
<input type="checkbox" name="value[]" value="1">
Quando você manda esse item com o mesmo value
ele considera apenas um valor, então no lugar de value="1"
você precisa iterar outros valores.
Esse value
faz referencia a quem ???
eu to fazendo assim, se o checkbox for marcado ele retorna o valor 1 certo? na tabela a coluna value ta default com o valor 0, então através desses valores eu identifico se for 0 = false e se for 1 = true.
Dragoon
Outubro 19, 2018, 1:30pm
#9
murillo_smit:
eu to fazendo assim, se o checkbox for marcado ele retorna o valor 1 certo? na tabela a coluna value ta default com o valor 0, então através desses valores eu identifico se for 0 = false e se for 1 = true.
eu to fazendo assim, se o checkbox for marcado ele retorna o valor 1 certo
Sim, mas, veja esse checkbox vai indentificar quem? me responde, eu já sei o problema, mas, você vai aprender o que ta errando
Esse checkbox vai identificar a presença de um aluno, se for = 0 vai ser igual a faltou, se for = 1 está presente. Entendeu brother?
Dragoon
Outubro 19, 2018, 1:51pm
#11
Se o checkbox
é referente ao aluno, porque você colocou 1 em vez do código do aluno? acho que estamos chegando lá!
To entendendo, mais depois como vou identificar que o aluno ta presente ou faltou? e depois calcular a quantidade de faltas?
Dragoon
Outubro 19, 2018, 1:59pm
#13
HTML:
<input type="checkbox" name="value[]" value="{{$us->user->id}}">
Código:
if ($count > 0) {
for ($i = 0; $i < $count; $i++) {
$frequencia->user_id = auth()->user()->id;
$frequencia->aluno_id = $aluno_id[$i];
$frequencia->data_id = $data_id;
// busca se o id existe
$frequencia->value = in_array($aluno_id[$i], $value) ? 1 : 0;
$frequencia->save();
}
}
Se não encontrar o id o usuário que está inserido é 0 se encontrar é 1, a lógica melhor é essa
Entendi, realmente é a melhor logica… mais o problema continua ta gravando só um registro!
Dragoon
Outubro 19, 2018, 2:05pm
#15
Não tenho como debugar daqui, faça assim:
return $value = $request->get('value');
verifica o que retornar linha a linha !!!
1 curtida
return $value = $request->get('value');
retorno:
["3","4"]
no caso eu selecionei dois item no checkbox
Dragoon
Outubro 19, 2018, 2:12pm
#17
o código $count = count($value);
está errado também, porque você deve contar as linhas pelo $aluno_id
!
não deveria ser $count = count($aluno_id);
?
Alterei para
$count = count($aluno_id);
mais ainda continua gravando apenas um registro, sendo q eu marcos varios no checkbox, uma pergunta o valor default da coluna value eu posso remover ne?
Dragoon
Outubro 19, 2018, 2:28pm
#19
sabe esse teste: return $value = $request->get(‘value’);
é para você fazer em todos e passar aqui!
$data_id = $id->id;
$value = $request->get('value');
$aluno_id = $request->get('user_id');
Dragoon
Outubro 19, 2018, 2:30pm
#20
murillo_smit:
aluno_id
outro erro na tela html tá aluno_id
no código tá user_id
, verifique isso