rowspan dinamico
Boa tarde.
Estou tentando fazer um programinha que leia uma tabela em mysql e dinamicamente crie uma tabela usando <table>.
Sendo que, desejo que quando dois registro tiverem o mesmo valor, utilize o rowspan.
exemplo: (no caso "Brasil: Uma Biografia", "Historia" e "900" devem aparecer uma vez só, enquanto os autores Heloisa e Lilia devem
aparecer na mesma celula, uma embaixo da outra:
-----------------------------------------------------------------------------
| Titulo | Autor | Genero | Paginas |
-----------------------------------------------------------------------------
| Brasil: Uma Biografia | Heloisa Murgel Starling | Historia | 900 |
| Lilia Moritz Schwarcz | | |
-----------------------------------------------------------------------------
| O Iluminado | Stephen King | Suspense | 500 |
-----------------------------------------------------------------------------
Desenvolvi o codigo abaixo, mas não fica desta maneira do exemplo.
<?php
$link = mysqli_connect("127.0.0.1","root","","arruda")
or die('Não foi possível conectar: '.mysqli_error());
$sql = mysqli_query($link, "select l.titulo as Titulo,
concat(a.prenome,' ',a.nome) as Autor,
g.nome as Genero,
l.paginas as Paginas,
( select count(*)from autor_livro au inner join livro li on au.id_livro = li.id
where li.titulo = l.titulo) as contador
FROM autor a
inner join autor_livro al on a.id = al.id_autor
inner join livro l on al.id_livro = l.id
inner join generos g on l.id_genero = g.id
order by 1,2");
$x = 1;
echo '<table cellpadding="5 " border="1">';
echo '<tr><th>'.htmlentities('Título').'</th><th>Autor</th><th>'.htmlentities('Gênero').'</th><th>'.htmlentities('Páginas').'</th></tr>';
while($row = mysqli_fetch_array($sql))
{
echo '<tr>';
if($x <= 1){
echo '<td rowspan="'.$row['contador'].'">'.$row['Titulo'].'</td>';
$x = $row['contador'];
}else
{
$x = $x - 1;
}
echo '<td>'.$row['Autor'].'</td>';
echo '<td>'.$row['Genero'].'</td>';
echo '<td>'.$row['Paginas'].'</td>';
echo '</tr>';
}
echo '</table>';
mysqli_close($link);
Alguém pode me ajudar?
Desde já agradeço.
Discussão (2)
Carregando comentários...