Hijack Posted August 16, 2013 at 06:08 PM Report #521884 Posted August 16, 2013 at 06:08 PM (edited) Boa tarde pessoal. Estou a enfrentar um problema que não estou a conseguir solucionar. O que pretendo é que ao fazer a consulta me seja exibido os registos armazenados na tabela, caso não haja nenhum registo ele imprima a a mensagem "Não existem noticias publicadas". Quando insiro uma nova notícia, ela aparece e até aí tudo bem, mas quando eu elimino todos os registos da tabela, a mensagem "Não existem noticias publicadas" simplesmente não aparece. Alguém me pode ajudar neste sentido? Aqui está o código: <?php require('sistema/banco.php'); if (!isset($_SESSION)) session_start(); $nivel_necessario = 1; $nivel_modo = 1; // Verifica se não há a variável da sessão que identifica o usuário if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario) OR ($_SESSION['UsuarioModo']) < $nivel_modo) { // Destrói a sessão por segurança session_destroy(); // Redireciona para o login header("Location: ../login.php"); exit; } ?> <article class="module width_full"> <header><h3 class="tabs_involved">Gestor de Conteúdos</h3> <ul class="tabs"> <li><a href="#tab1">Noticias Publicadas</a></li> <li><a href="#tab2">Rascunhos</a></li> </ul> </header> <div class="tab_container"> <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($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=\"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=\"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 #tab2 --> </div><!-- Fim do conteudo da tab --> </article><!-- Fim do gestor de conteudo --> Francamente não estou a conseguir perceber onde para o erro. Obrigado por tudo. Edited August 17, 2013 at 11:05 AM by Hijack
yoda Posted August 16, 2013 at 06:10 PM Report #521885 Posted August 16, 2013 at 06:10 PM Tens de apagar e fazer a query de seguida para obter a nova lista. before you post, what have you tried? - http://filipematias.info sense, purpose, direction
Hijack Posted August 16, 2013 at 06:13 PM Author Report #521886 Posted August 16, 2013 at 06:13 PM (edited) Tens de apagar e fazer a query de seguida para obter a nova lista. Boa tarde yoda, obrigado por ter respondido. não estou a entender... Se poder ser mais especifico, é que não estou mesmo a perceber. Edited August 16, 2013 at 06:38 PM by Hijack
yoda Posted August 16, 2013 at 07:31 PM Report #521888 Posted August 16, 2013 at 07:31 PM Não mostraste o resto do código, não há muito que possa dizer que não isso .. se o registo apaga mas nao aparece a mensagem, ou tens mal feito o if (e eu nao consigo ver porque nao aparece nesse código) ou não estás a ir buscar a lista novamente depois de apagar o registo. before you post, what have you tried? - http://filipematias.info sense, purpose, direction
Hijack Posted August 16, 2013 at 08:08 PM Author Report #521894 Posted August 16, 2013 at 08:08 PM (edited) Mas o código está todo aí! Aqui faço a consulta e caso haja registos na tabela tbl_noticias, exibe os registos numa tabela. <?php require('sistema/banco.php'); if (!isset($_SESSION)) session_start(); $nivel_necessario = 1; $nivel_modo = 1; // Verifica se não há a variável da sessão que identifica o usuário if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario) OR ($_SESSION['UsuarioModo']) < $nivel_modo) { // Destrói a sessão por segurança session_destroy(); // Redireciona o visitante de volta pro login header("Location: ../login.php"); exit; } if (($_SESSION['UsuarioNivel'] == 2) AND ($_SESSION['UsuarioModo'] == 1) OR ($_SESSION['UsuarioNivel'] == 1) AND ($_SESSION['UsuarioModo'] == 1)){ ?> <article class="module width_full"> <header><h3 class="tabs_involved">Gestor de Conteúdos</h3> <ul class="tabs"> <li><a href="#tab1">Noticias Publicadas</a></li> <li><a href="#tab2">Rascunhos</a></li> </ul> </header> <div class="tab_container"> <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($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>"; } //Fim do while } //Fim do if a parte da mensagem que é suposto aparecer caso não haja nenhum registo na tabela é este bloco de codigo : <?php 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 --> </div><!-- Fim do conteudo da tab --> </article><!-- Fim do gestor de conteudo --> <?php } else{ // Redireciona para o login header("Location: ../login.php"); exit; } ?> Edited August 16, 2013 at 09:35 PM by Hijack
brunoais Posted August 16, 2013 at 08:42 PM Report #521898 Posted August 16, 2013 at 08:42 PM A indentação é complicada de se perceber e tb n entendo aonde está o problema. Tem que haver algo que estás a esconder ou está a fazer mal. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
Hijack Posted August 16, 2013 at 09:38 PM Author Report #521903 Posted August 16, 2013 at 09:38 PM (edited) A indentação é complicada de se perceber e tb n entendo aonde está o problema. Tem que haver algo que estás a esconder ou está a fazer mal. Boa tarde brunoais, origado por ter respondido. E agora percebe-se melhor? Muito sinceramente não estou a perceber nada. É que todo este código está numa página e é apenas este código que tem, nada mais. Esta página é chamada através de um include, mas já a executei individualmente e o problema é o mesmo. Edited August 17, 2013 at 11:09 AM by Hijack
yoda Posted August 16, 2013 at 10:23 PM Report #521910 Posted August 16, 2013 at 10:23 PM (edited) Aposto que o problema está na query. Se queres dados de duas ou mais tabelas diferentes usa a instrução JOIN. http://dev.mysql.com/doc/refman/5.0/en/join.html Edited August 16, 2013 at 10:23 PM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
HappyHippyHippo Posted August 16, 2013 at 11:47 PM Report #521921 Posted August 16, 2013 at 11:47 PM se não aparece a mensagem, o que aparece ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Hijack Posted August 17, 2013 at 01:00 AM Author Report #521923 Posted August 17, 2013 at 01:00 AM Boa noite HappyHippyHippo, obrigado por ter respondido. Não aparece nada, vou postar imagem. Não estou a conseguir explicar. Isto é o que me aparece se houver registos na tabela: Exemplo 1: http://imageshack.us/photo/my-images/268/q0if.png mas se eu apagar o registo da noticia, é apenas isto que me aparece: Exemplo 2: http://imageshack.us/photo/my-images/6/hqpz.png Quando o que deveria de aparecer era o resultado do exemplo 3: Exemplo 3: http://imageshack.us/photo/my-images/405/v7cz.png Espero que assim ajude. Obrigado pela vossa atenção.
Solution HappyHippyHippo Posted August 17, 2013 at 08:30 AM Solution Report #521930 Posted August 17, 2013 at 08:30 AM $total = mysql_num_rows($consulta) /*or die(mysql_error())*/; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Hijack Posted August 17, 2013 at 09:12 AM Author Report #521931 Posted August 17, 2013 at 09:12 AM $total = mysql_num_rows($consulta) /*or die(mysql_error())*/; Bom dia, pessoal. Obrigado pela resposta HappyHippyHippo. Quando chegar a casa testo e depois digo algo.
Hijack Posted August 17, 2013 at 03:14 PM Author Report #521949 Posted August 17, 2013 at 03:14 PM Boa tarde pessoal. HappyHippyHippo muito obrigado pela ajuda. Está resolvido 🙂 . Uma vez mais, obrigado a todos 🙂
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now