Hijack 1 Denunciar post Postado Agosto 16, 2013 Boa noite, após examinar o código umas "centenas" de vezes não estou a conseguir perceber o que estou a fazer errado. A ideia é caso exista registos, eles sejam exibidos neste bloco de código: <?php $sql = "SELECT id_noticia, data, titulo, categoria, tbl_noticias.*, tbl_categorias_noticias.* FROM tbl_noticias, tbl_categorias_noticias WHERE tbl_noticias.id_categoria_noticia = tbl_categorias_noticias.id_categoria_noticia AND tbl_noticias.status = 1 ORDER BY data DESC LIMIT 5;"; $consulta = mysql_query($sql) or die(mysql_error()); $total = mysql_num_rows($consulta) or die(mysql_error()); if($consulta){ echo "<table class=\"tablesorter\" cellspacing=\"0\">"; echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Nome</th>"; echo "<th>Categoria</th>"; echo "<th>Data de Publicação</th>"; echo "<th>Ações</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; while($mostrar = mysql_fetch_array($consulta)){ $idartigo = $mostrar['id_noticia']; $categoria = $mostrar['categoria']; $titulo = $mostrar['titulo']; $data = $mostrar['data']; echo "<tr>"; echo "<td><input type=\"checkbox\"></td>"; echo "<td>". $titulo ."</td>"; echo "<td>". $categoria ."</td>"; echo "<td>". $data ."</td>"; echo "<td> <a href=\"editarartigo.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/icn_edit.png\" name=\"alterar\" title=\"Alterar\" value=\"Editar\"></a> <a href=\"sistema/excluirartigo.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/icn_trash.png\" title=\"Excluir\"></a> <a href=\"previsualizar.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/eye.png\" title=\"Visualizar\"></a></td>"; echo "</tr>"; } } caso contrario, exibe a mensagem contida neste bloco de código: else{ echo "<table class=\"tablesorter\" cellspacing=\"0\">"; echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Nome</th>"; echo "<th>Categoria</th>"; echo "<th>Data de Publicação</th>"; echo "<th>Ações</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; echo "<tr>"; echo "<td></td>"; echo "<td>Não existem noticias publicadas</td>"; echo "<td></td>"; echo "<td></td>"; echo "<td></td>"; echo "<tr>"; echo "</tbody>"; echo "</table>"; } a questão é que, quando não existe registos, não exibe o bloco de código dentro do else. Alguém me pode ajudar? Aqui está o código completo: <div id="tab1" class="tab_content"> <?php $sql = "SELECT id_noticia, data, titulo, categoria, tbl_noticias.*, tbl_categorias_noticias.* FROM tbl_noticias, tbl_categorias_noticias WHERE tbl_noticias.id_categoria_noticia = tbl_categorias_noticias.id_categoria_noticia AND tbl_noticias.status = 1 ORDER BY data DESC LIMIT 5;"; $consulta = mysql_query($sql) or die(mysql_error()); $total = mysql_num_rows($consulta) or die(mysql_error()); if($consulta){ echo "<table class=\"tablesorter\" cellspacing=\"0\">"; echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Nome</th>"; echo "<th>Categoria</th>"; echo "<th>Data de Publicação</th>"; echo "<th>Ações</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; while($mostrar = mysql_fetch_array($consulta)){ $idartigo = $mostrar['id_noticia']; $categoria = $mostrar['categoria']; $titulo = $mostrar['titulo']; $data = $mostrar['data']; echo "<tr>"; echo "<td><input type=\"checkbox\"></td>"; echo "<td>". $titulo ."</td>"; echo "<td>". $categoria ."</td>"; echo "<td>". $data ."</td>"; echo "<td> <a href=\"editarartigo.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/icn_edit.png\" name=\"alterar\" title=\"Alterar\" value=\"Editar\"></a> <a href=\"sistema/excluirartigo.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/icn_trash.png\" title=\"Excluir\"></a> <a href=\"previsualizar.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/eye.png\" title=\"Visualizar\"></a></td>"; echo "</tr>"; } } else{ echo "<table class=\"tablesorter\" cellspacing=\"0\">"; echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Nome</th>"; echo "<th>Categoria</th>"; echo "<th>Data de Publicação</th>"; echo "<th>Ações</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; echo "<tr>"; echo "<td></td>"; echo "<td>Não existem noticias publicadas</td>"; echo "<td></td>"; echo "<td></td>"; echo "<td></td>"; echo "<tr>"; echo "</tbody>"; echo "</table>"; } mysql_free_result($consulta); ?> </tbody> </table> </div><!-- Fim do separador #tab1 --> <div id="tab2" class="tab_content"> <?php $sql = "SELECT id_noticia, data, titulo, categoria, tbl_noticias.*, tbl_categorias_noticias.* FROM tbl_noticias, tbl_categorias_noticias WHERE tbl_noticias.id_categoria_noticia = tbl_categorias_noticias.id_categoria_noticia AND tbl_noticias.status != 1 ORDER BY data DESC LIMIT 5;"; $consulta = mysql_query($sql) or die(mysql_error()); $total = mysql_num_rows($consulta) or die(mysql_error()); if(($total)>0){ echo "<table class=\"tablesorter\" cellspacing=\"0\">"; echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Nome</th>"; echo "<th>Categoria</th>"; echo "<th>Data de Publicação</th>"; echo "<th>Ações</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; while($mostrar = mysql_fetch_array($consulta)){ $idartigo = $mostrar['id_noticia']; $categoria = $mostrar['categoria']; $titulo = $mostrar['titulo']; $data = $mostrar['data']; echo "<tr>"; echo "<td><input type=\"checkbox\"></td>"; echo "<td>". $titulo ."</td>"; echo "<td>". $categoria ."</td>"; echo "<td>". $data ."</td>"; echo "<td> <a href=\"editarartigo.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/icn_edit.png\" name=\"alterar\" title=\"Editar\" value=\"alterar\"></a> <a href=\"sistema/excluirartigo.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/icn_trash.png\" title=\"Excluir\"></a> <a href=\"previsualizar.php?id_noticia=$idartigo\"><input type=\"image\" src=\"images/eye.png\" title=\"Visualizar\"></a></td>"; echo "</tr>"; } }else{ echo "<table class=\"tablesorter\" cellspacing=\"0\">"; echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Nome</th>"; echo "<th>Categoria</th>"; echo "<th>Data de Publicação</th>"; echo "<th>Ações</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; echo "<tr>"; echo "<td></td>"; echo "<td>Não existem noticias publicadas</td>"; echo "<td></td>"; echo "<td></td>"; echo "<td></td>"; echo "<tr>"; echo "</tbody>"; echo "</table>"; } ?> </tbody> </table> </div><!-- Fim do separador #tab2 --> Se alguém me puder ajudar, fico grato. Obrigado a todos Compartilhar este post Link para o post Compartilhar em outros sites
rockrgo 138 Denunciar post Postado Agosto 16, 2013 já que vc tbm seleciona o numero de linhas da consulta faz assim if($total > 0){ ... } Compartilhar este post Link para o post Compartilhar em outros sites
Hijack 1 Denunciar post Postado Agosto 16, 2013 já que vc tbm seleciona o numero de linhas da consulta faz assim if($total > 0){ ... } Obrigado por ter respondido ao meu post rockrgo. Pois, também já experimentei e não resulta, não percebo. Compartilhar este post Link para o post Compartilhar em outros sites
Cristianoferr 32 Denunciar post Postado Agosto 16, 2013 Cara, posso te dar uma dica? Separa os blocos de código em métodos/funções, como aqui: $consulta = mysql_query($sql) or die(mysql_error()); $total = mysql_num_rows($consulta) or die(mysql_error()); if($consulta){ cabecalho(); while($mostrar = mysql_fetch_array($consulta)){ escreveRegistro($mostrar); } } else { escreveInfoSemRegistros(); } Fica bem mais fácil separar a parte lógica da parte visual, inclusive visualizar eventuais erros. Ainda não é orientação a objetos, mas já é algo na direção. O importante é não duplicar código, coisa que teu código faz. Compartilhar este post Link para o post Compartilhar em outros sites
rockrgo 138 Denunciar post Postado Agosto 17, 2013 Obrigado por ter respondido ao meu post rockrgo. Pois, também já experimentei e não resulta, não percebo. Cara seu problema deve estar na query então. Faz a consulta direto no mysql (phpmyadmin) para ver se retorna alguma coisa ou está dando erro na consulta. Compartilhar este post Link para o post Compartilhar em outros sites