Ir para conteúdo
Fórum Script Brasil
  • 0

Single Post - link para página cai em outra


jamiel

Pergunta

Projeto:

Um website com painel administrativo

 

O foi feito até agora no painel:

- As informações estão sendo gravadas corretamente no banco de dados. Inclusive a imagem. O script tem duas partes: inserção e imagem (joga a imagem para uma pasta e grava seu caminho para ser chamado mais na frente).

- Lista dos posts no painel está funcionando normalmente. Porém, não consigo chamar a categoria que está em outra tabela: Na tabela post contém "cat_id" e na tabela categoria também tem um "cat_id". Não sei como chamar o nome da categoria que está na tabela categoria. Ex: Na tabela post uma publicação escolheu a categoria Lentes e ela corresponde ao número 1 (id=2 na tabela post e na tabela categoria). 

- Os posts foram listados na página inicial e na página blog (com paginação funcionando perfeitamente).

O grande problema:

- Quando clico, por exemplo, na notícia que tem id=4 sou direcionado para a single-post (página com a notícia completa). Sendo isso não acontece. Sou direcionado sempre para a última notícia cadastrada. Isso acontece em todas páginas que listam as notícias. No painel, na página inicial e na própria página de blog. Também, quando clico na notícia diretamente que é listada na página Blog.

Ex: 

- Notícia 01 tem id=4

- Notícia 02 tem id=5

Elas estão listadas na página inicial, quando clico na notícia 01 (http://localhost/cftv/single-post.php?id=4) sou direcionado para a notícia 02. Na verdade, isso acontece se eu clicar em qualquer notícia. Aparece o link com o id correto no navegador. Mas, a notícia é sempre a última cadastrada.

Ex: 

Código da página Blog, onde as notícias são listadas:

  <?php

                  $sql = "select * from post p, categoria c where p.cat_id = c.cat_id ORDER BY post_id DESC LIMIT $inicio,$lpp";
                  $qry = @mysqli_query($conexao, $sql);
                  while ($linha = @mysqli_fetch_array($qry)) {

                ?>

               <a href="single-post.php?id=<?php echo $linha["post_id"] ?>"><h2><?php echo $linha["post_title"] ?></h2></a>
               <br>
               <img src='<?php echo $linha["post_img"];?>' class="img-responsive" style="height: 200px;" > 
               <br>

               <p>
               <?php $text = $linha["post_msg"]; echo substr($text, 0, 300) . '...'; ?>
               </p>

               <p>
               <span class="fa fa-clock-o" style="color: #0098da;"></span><strong> <?php echo $linha["post_data"] ?></strong> <br>
               <span class="fa fa-file-text-o" style="color: #0098da;"></span><strong> <?php echo $linha["post_tags"] ?></strong> <br>
               <span class="fa fa-list-ul" style="color: #0098da;"></span><strong> <?php echo $linha["cat_nome"] ?></strong> 
               </p>

               <p><a href="single-post.php?id=<?php echo $linha["post_id"] ?>" class="btn btn-default default-custom">LER MAIS</a></p>

               <br>

                <?php } ?>
                
               
                    <?php echo $paginacao; ?>

 

Código da página single-post:

 

<div class="container-fluid" style="background: rgba(0, 0, 0, 0.5); min-height: 150px;">
    <div class="container">
        <div class="row">
            <div class="col-md-12">

             <?php

                  $sql   = "select * from post p, categoria c where p.cat_id = c.cat_id ORDER BY post_id DESC";
                  $qry   = @mysqli_query($conexao, $sql);
                  $linha = @mysqli_fetch_array($qry);

             ?>
                 <h2 style="color: #0098da; text-align: center;"><?php echo $linha["post_title"] ?></h2>  
            </div>
        </div>
    </div>
</div>


<div class="container-fluid single-post-row2">
    <div class="container">
        <div class="row">

            <div class="col-md-8 single-post-colleft">

               <h2 style="color: #0098da;"><?php echo $linha["post_title"] ?></h2>    
                <img src='<?php echo $linha["post_img"];?>' class="img-responsive" style="width: 100%;" > 
                <br>
               <span style="color: #f8f8f8;"><?php echo $linha["post_msg"] ?></span>
       
               <p>

               <span class="fa fa-clock-o" style="color: #0098da;"></span><strong> <span style="color: #f8f8f8;"><?php echo $linha["post_data"] ?></span></strong>
                <br>
               <span class="fa fa-file-text-o" style="color: #0098da;"></span><strong><span style="color: #f8f8f8;"> <?php echo $linha["post_tags"] ?></span></strong>
               <br>
                <span class="fa fa-list-ul" style="color: #0098da;"></span><strong><span style="color: #f8f8f8;"> <?php echo $linha["cat_nome"] ?></span></strong> 

               </p>

               <br>


               <div class="fb-comments" data-href="https://facebook.com/infrainfo" data-numposts="5"></div>

                
            </div>

 

Agradeço desde já qualquer ajuda.


      

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Olá Jamiel!

Tá faltando avisar pra sua query de busca, que é pra buscar somente o post que tem determinada id:

Segue sugestão para o Código da página single-post:

<?php
            // pega a id da url:
            if (isset($_GET['id'])) {
               $id = intval($_GET['id']);
               // avisa pra query de busca que é pra buscar somente o post com aquele $id
               $sql = "select * from post p, categoria c where p.cat_id = c.cat_id AND post.id=$id LIMIT 1";
               $qry = mysqli_query($sql);
               $linha = mysqli_fetch_array($qry);
            } else {
               die('<p class="error">Tá faltando a id, chefe!</p>');
            }
            ?>

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, wash disse:

Olá Jamiel!

Tá faltando avisar pra sua query de busca, que é pra buscar somente o post que tem determinada id:

Segue sugestão para o Código da página single-post:


<?php
            // pega a id da url:
            if (isset($_GET['id'])) {
               $id = intval($_GET['id']);
               // avisa pra query de busca que é pra buscar somente o post com aquele $id
               $sql = "select * from post p, categoria c where p.cat_id = c.cat_id AND post.id=$id LIMIT 1";
               $qry = mysqli_query($sql);
               $linha = mysqli_fetch_array($qry);
            } else {
               die('<p class="error">Tá faltando a id, chefe!</p>');
            }
            ?>

 

Opa! Obrigado.. Assim que criei o post consigo resolver. REE rerer O problema era esse mesmo. Na single-post,:

<?php
                     
                  @$post_id=$_GET["post_id"];// echo "$id_noticias";   
                  $sql   = "select * from post p, categoria c where p.cat_id = c.cat_id ORDER BY post_id='$post_id' DESC";
                  $qry   = @mysqli_query($conexao, $sql);
                  $linha = @mysqli_fetch_array($qry);

             ?>

 

E nas páginas que redirecionam:

Título da postagem listada no página blog :

<a href='single-post.php?post_id=<?php echo $linha["post_id"] ?>'><h2><?php echo $linha["post_title"] ?></h2></a>

 

O problema agora é que o formulário de busca acima da listagem não está funcionando:

?>
<?php 

@$cat        = $_GET["cat"];
@$title      = $_GET["title"];


if ( ($cat !="") && ($title !="") ) {
   $where = "AND p.cat_id = '$cat' AND post_title like '%$title%' "; 
} else if ($id_categoria !="") {
   $where = "AND p.cat_id = '$cat'"; 
} else if ($busca_title !="") {
   $where = "AND post_title like '%$title%' "; 
} else { 
   $where = "";
}

?>
 

<form action="" method="GET">
                
                <select name="cat" id="" class="form-control">
                    <option value="">Buscar pela categoria</option>
                    <?php 
                       $sql = "SELECT * FROM categoria";
                       $qry = mysqli_query($conexao, $sql);
                       while($linha = mysqli_fetch_array($qry)) {

                         if($linha["cat_id"] == $cat)
                             $selecao = "selected";
                         else 
                              $selecao = "";

                              echo "<option value=$linha[cat_id] $selecao > $linha[cat_nome] </option>";
                       }                        
                    ?>

                </select>
                
                   <br>
                <div class="input-group margin-bottom-sm">
                  <span class="input-group-addon"><i class="fa fa-list fa-fw"></i></span>
                  <input class="form-control" type="text" value='<?php echo @$title?>' placeholder="Buscar pela Título" name="title">
                </div>
                <br>

                <input type="submit" value="Pesquisar" class="btn btn-default">
     </form>

Acabei errando. O certo é esse aqui:

 

<?php 

@$cat        = $_GET["cat"];
@$title      = $_GET["title"];


if ( ($cat !="") && ($title !="") ) {
   $where = "AND p.cat_id = '$cat' AND post_title like '%$title%' "; 
} else if ($cat !="") {
   $where = "AND p.cat_id = '$cat'"; 
} else if ($title !="") {
   $where = "AND post_title like '%$title%' "; 
} else { 
   $where = "";
}

?>

 

        <form action="" method="GET">
                
                <select name="cat" id="" class="form-control">
                    <option value="">Buscar pela categoria</option>
                    <?php 
                       $sql = "SELECT * FROM categoria";
                       $qry = mysqli_query($conexao, $sql);
                       while($linha = mysqli_fetch_array($qry)) {

                         if($linha["cat_id"] == @$cat)
                             $selecao = "selected";
                         else 
                              $selecao = "";

                              echo "<option value=$linha[cat_id] $selecao > $linha[cat_nome] </option>";
                       }                        
                    ?>

                </select>
                
                   <br>
                <div class="input-group margin-bottom-sm">
                  <span class="input-group-addon"><i class="fa fa-list fa-fw"></i></span>
                  <input class="form-control" type="text" value='<?php echo @$title?>' placeholder="Buscar pela Título" name="title">
                </div>
                <br>

                <input type="submit" value="Pesquisar" class="btn btn-default">
            </form>

Link para o comentário
Compartilhar em outros sites

  • 0

No trecho acima, não vi onde é usada a variável $where.

Prezado Jamiel.

O sr. está fazendo uso exagerado e desnecessário do @

Habilite o error_reporting(E_ALL) e remova todos esses arrobas aí

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, wash disse:

No trecho acima, não vi onde é usada a variável $where.

Prezado Jamiel.

O sr. está fazendo uso exagerado e desnecessário do @

Habilite o error_reporting(E_ALL) e remova todos esses arrobas aí

<?php 

@$cat        = $_GET["cat"];
@$title      = $_GET["title"];


if ( ($cat !="") && ($title !="") ) {
   $where = "AND p.cat_id = '$cat' AND post_title like '%$title%' "; 
} else if ($cat !="") {
   $where = "AND p.cat_id = '$cat'"; 
} else if ($title !="") {
   $where = "AND post_title like '%$title%' "; 
} else { 
   $where = "";
}

?>

 

        <form action="" method="GET">
                
                <select name="cat" id="" class="form-control">
                    <option value="">Buscar pela categoria</option>
                    <?php 
                       $sql = "SELECT * FROM categoria";
                       $qry = mysqli_query($conexao, $sql);
                       while($linha = mysqli_fetch_array($qry)) {

                         if($linha["cat_id"] == @$cat)
                             $selecao = "selected";
                         else 
                              $selecao = "";

                              echo "<option value=$linha[cat_id] $selecao > $linha[cat_nome] </option>";
                       }                        
                    ?>

                </select>
                
                   <br>
                <div class="input-group margin-bottom-sm">
                  <span class="input-group-addon"><i class="fa fa-list fa-fw"></i></span>
                  <input class="form-control" type="text" value='<?php echo @$title?>' placeholder="Buscar pela Título" name="title">
                </div>
                <br>

                <input type="submit" value="Pesquisar" class="btn btn-default">
            </form>

<?php
              
             
              $sql = "select * from post p, categoria c where p.cat_id = c.cat_id ORDER BY post_id DESC $where";
              $qry = mysqli_query($conexao, $sql);
              while ($linha = mysqli_fetch_array($qry)) {

              ?>
 

Link para o comentário
Compartilhar em outros sites

  • 0

Veja recomendação do phptherightway:

 

arroba.JPG

Hummm...
tente colocar seu $where aqui:

$sql = "select * from post p, categoria c where p.cat_id = c.cat_id $where ORDER BY post_id DESC";

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...