Jump to content
Hijack

ANSWERED [Resolvido] if não funciona como desejado

Recommended Posts

Hijack

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 by Hijack

Share this post


Link to post
Share on other sites
Hijack

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 by Hijack

Share this post


Link to post
Share on other sites
Hijack

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 by Hijack

Share this post


Link to post
Share on other sites
brunoais

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%.

Share this post


Link to post
Share on other sites
Hijack

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 by Hijack

Share this post


Link to post
Share on other sites
Hijack

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.

Share this post


Link to post
Share on other sites
HappyHippyHippo
$total = mysql_num_rows($consulta) /*or die(mysql_error())*/;


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Hijack

$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.

Share this post


Link to post
Share on other sites
Hijack

Boa tarde pessoal.

HappyHippyHippo muito obrigado pela ajuda. Está resolvido :) .

Uma vez mais, obrigado a todos :)

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.