Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera, tenho uma lista de alunos que exibe os dados corretamente só que gostaram de saber como faço pra mostrar todas as aulas que ele se inscreveu na tabela pois usei foreach e while e não deu certo...
$query = mysql_query("SELECT * FROM alunos LEFT JOIN aulas_aluno ON (aulas_aluno.id_aluno=alunos.id_aluno)");
while($row = mysql_fetch_array($query)) {
$alreadyAulas = false;
$aulas= unserialize($alreadyAulas);foreach($aulas $aulas) {
}
}
<tr>
<td>Mostrar aulas aqui</td>
</tr>
Agradeço a todos desde já!!!
Olá Rick, no caso se uso o código que me sugeriu, quando o aluno tem mais de uma aula ele mostra da seguinte forma
aluno 1 > aula x
aluno 1 > aula y
aluno 2 > aula b
repetindo o mesmo aluno para cada aula diferente, e preciso que mostre
aluno 1> aula x, aula y
Ok, vamos lá, como é o resultado que te retorna ? você tem as aulas desses alunos em uma tabela separada ? poste aqui o array retornado.
Essas são as tabelas
alunos
id_aluno
nome_aluno
aulas
id_aula
nome_aula
aulas_aluno
id_aula
id_aluno
SELECT * FROM alunos LEFT JOIN aulas_aluno ON (aulas_aluno.id_aluno=alunos.id_aluno)
<tr>
<td>'.$row['nome_aluno'].'<br />'.$row['id_aula'].' </td>
</tr>
Desse modo ele retorna (repetindo) os nomes de alunos para cada aula que ele possui e preciso que retorne o id_aula assim:
aluno 1 > aula a, aula b, aula x
aluno 2 > aula x
aluno 3 > aula b, aula y
Nesse caso, é melhor você executar duas queries separadas e trabalhar com os arrays separadamente. Não tem como banco te retornar em uma única linha de registro todo o relacionamento 1 -> n.
Com o código abaixo eu consigo fazer pegar o id das aulas só que faz com que a query pare de ser executada no primeiro resultado de aluno
do {
?>
<li>
<?php echo $row['id_aula']; ?>
</li>
<?php
$row = mysql_fetch_assoc($query);
} while ($row);Faz assim:
$first = mysql_fetch_array($query);
$id = $first['NOME DO CAMPO ID'];
?>
<tr>
<?php
while($row = mysql_fetch_array($query)) {
$curr_id = $row['NOME DO CAMPO ID'];
if($curr_id != $id){
?>
</tr>
<tr>
<td><?php echo $row['NOME DO CAMPO DO NOME DO ALUNO'];?></td>
<td>
<?php
}
?>
<?php echo $row['NOME DO CAMPO DA MATÉRIA']. ', ' ?>
if($curr_id != $id){
?>
</td>
<?php
$id = $curr_id;
}?>
</tr>Olá Rick, usei o código que me passou e tá quase funcionando, dei uma "enxugada" e ficou assim
<?php
$first = mysql_fetch_array($query);
$id = $first['id_aluno'];
?>
<tr>
<?php
while($row = mysql_fetch_array($query)) {
$curr_id = $row['id_aluno'];
if($curr_id != $id){
?>
</tr>
<tr>
<td><br /><?php echo $row['aluno'];?> </td>
<td>
<?php
}
?>
<?php echo $row['aula'] ?>
</td>
<?php
}?>
</tr>
O único problema é que se o aluno possuir mais de 1 aula não é mostrado o nome antes das aulas
(vazio) > aula a, aula b
aluno 2 > aula c
Que que é isso? :o
É assim:
while($row = mysql_fetch_array($query)) {