Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde!
Possuo uma pagina que é um select de informações de uma tabela do meu banco de dados, junto as informações eu adicionei 4 checkbox com o nome check e os valores (1,2,3,4).
Quando eu faço o submit dessas informações para outra pagina somente o ultimo valor é cadastrado para todas as linhas do array, como posso fazer com que cada valor possa ser enviado corretamente como selecionado???
Codigo abaixo :
Pagina 1 :
<form accept-charset="utf-8" method="POST" action="addfrequencia.php">
<tr>
<td align="center"><?php echo $row['cod_aluno'] ?></td>
<td><?php echo $row['nome'] ?></$presenca = $_POST['presenca'];
var_dump($presenca);td>
<td><?php echo $row['email'] ?></td>
<td align="center"><?php echo $row['presencas'] ?></td>
<td align="center"><?php echo $row['faltas'] ?></td>
<td>
1<input type="checkbox" name="presenca" value="1">
2<input type="checkbox" name="presenca" value="2">
3<input type="checkbox" name="presenca" value="3">
4<input type="checkbox" name="presenca" value="4">
</td>
</tr>
Pagina 2 :
$presenca = $_POST['presenca'];
var_dump($presenca);
Resultado :
string '1' (length=1)
string '1' (length=1)
por exemplo.
Como posso resolver este problema????
Me ajudou a receber, porém tenho mais um problema :
while ($row = mysqli_fetch_assoc($resultado)) {
$cod_aluno = $row['cod_aluno'];
foreach($_POST['presenca'] as $row ){
echo $cod_aluno;
}
}
Estou usando este codigo para receber essas informações porém recebo o resultado com o tanto de linhas que tem na tabela ( x 10 por exemplo).
e se eu fechar o while antes do foreach eu recebo apenas o ultimo resultado do while,
o Seu laço está correto.
O que está incorreto é o "$cod_aluno"
Você deveria utilizar o $row.
while ($row = mysqli_fetch_assoc($resultado)) {
$cod_aluno = $row['cod_aluno'];
foreach($_POST['presenca'] as $row ){
echo $row;
}
}
Um exemplo mais simples de arrays:
<?php
$numeros = array(1,2,3);
$letras = array('a', 'b', 'c');
foreach($numeros as $numero){
echo $numero . '<br />';
}
echo '<hr />';
foreach($letras as $letra){
echo $letra . '<br />';
}
echo '<hr />';
foreach($letras as $letra){
echo $letra . '<br />'; //Imprime o a...
foreach($numeros as $numero){
echo $letra . '<br />'; //Imprime novamente o a (só que 3x que é equivalente a qtd dos numeros)...
}
}
echo '<hr />';
foreach($letras as $letra){
echo $letra . '<br />'; //Imprime o a...
foreach($numeros as $numero){
echo $numero . '<br />'; //Agora sim imprime, 1.2.3 ...
}
}>
o Seu laço está correto.
O que está incorreto é o "$cod_aluno"
Você deveria utilizar o $row.
while ($row = mysqli_fetch_assoc($resultado)) {
$cod_aluno = $row['cod_aluno'];
foreach($_POST['presenca'] as $row ){
echo $row;
}
}
Um exemplo mais simples de arrays:
<?php
$numeros = array(1,2,3);
$letras = array('a', 'b', 'c');
foreach($numeros as $numero){
echo $numero . '<br />';
}
echo '<hr />';
foreach($letras as $letra){
echo $letra . '<br />';
}
echo '<hr />';
foreach($letras as $letra){
echo $letra . '<br />'; //Imprime o a...
foreach($numeros as $numero){
echo $letra . '<br />'; //Imprime novamente o a (só que 3x que é equivalente a qtd dos numeros)...
}
}
echo '<hr />';
foreach($letras as $letra){
echo $letra . '<br />'; //Imprime o a...
foreach($numeros as $numero){
echo $numero . '<br />'; //Agora sim imprime, 1.2.3 ...
}
}
Com este codigo eu recebi o resultado triplicado novamente.
Altera:
1<input type="checkbox" name="presenca" value="1">
para:
1<input type="checkbox" name="presenca[]" value="1">
Ai na sua pagina 'addfrequencia.php':
Explicação:
O check neste caso vira um array já cada name do html deveria ser único, assim como o ID.
Assim ele se agrupa.