Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Hijack

[Resolvido] if não funciona como desejado

Mensagens Recomendadas

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.

Editado por Hijack

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Editado por Hijack

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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;
}
?>

Editado por Hijack

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Editado por Hijack

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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:

q0if.png

mas se eu apagar o registo da noticia, é apenas isto que me aparece:

Exemplo 2:

hqpz.png

Quando o que deveria de aparecer era o resultado do exemplo 3:

Exemplo 3:

v7cz.png

Espero que assim ajude.

Obrigado pela vossa atenção.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.