Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thiagosvl

PHP - adicionando "Ler materia completa"

Recommended Posts

Boa tarde!

 

Tenho uma pagina que lista determinados posts que estão presentes em meu banco de dados, mas em algumas situações o conteúdo do post é extenso e acaba tomando muito espaço da página.

Gostaria da ajuda de vocês para estar criando um link com aquele famoso "ler matéria/completo completa(o)".

O que sei até então é que irá criar essa página única através do ID de cada post, mas por ser leigo em PHP, não tenho a mínima noção de como criar tal situação.

 

O código a seguir contem a listagem e também uma paginação simples.

 

Segue o código da página que a listagem acontece:

TEXTOS.PHP

<?php
  $cabecalho_title = "Textos";
include('_includes/topo.php');
?>

            <div id="centraliza"  class="clearfix">
	<section id="container" class="clearfix">	
		<article id="conteudo" class="clearfix">				
		   <h3 class="titulo-container-esquerdo">Textos</h3>
 
<?php
 
$limite_paginacao = 4;
 
$sql_contagem = mysqli_query($conecta, "SELECT * FROM textos") or die (mysql_error());
$sql_resultado = ceil(mysqli_num_rows($sql_contagem) / $limite_paginacao)  or die (mysql_error());
                       
$pg    = (isset($_GET["pg"])) ? (int)$_GET["pg"] : 1  or die (mysql_error()); ;
$start = ($pg - 1) * $limite_paginacao;
 
$strSQL = "SELECT * FROM textos  ORDER BY grupo_id DESC LIMIT $start, $limite_paginacao";
$rs = mysqli_query($conecta,$strSQL);
 
$error = mysqli_error($conecta);
 
if(!$error){
while($row = mysqli_fetch_array($rs)) {

echo '<div id="textos"><div id="titulo-textos">'.$row['titulo'].'</div>';
echo '<div id="texto"><pre>'.$row['texto'].'</pre></div>' . "</div>";
echo '<div id="clear">'.'</div>';}
}else{
 
echo $error;
 
}
 echo '<div id="paginacao">';
 if($sql_resultado > 1 && $pg<=$sql_resultado) {
 
        for($i=1; $i<=$sql_resultado; $i++) {
 
				echo "<a class='a-paginacao' href='?pg=$i'>$i</a>";
        }                     
}
      echo '</div>';  
?>    
		</article>
		
<?php
    include('_includes/rodape.php');
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se fazer o select com limite de caracteres?

Vê ae https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left

 

Up.

Só não especifiquei que isso é pra trazer parte do texto apenas, evitando trazer todo o conteúdo do registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O jeito mais facil é criar uma pagina que visualizaria o post completo. Vc pode criar um link e enviar seu id por metodo get.

Ex:

<a href="ver.php?idnoticias=<?php echo $linha['id'] ?>"></a>

Depois é so receber o get na outra pagina:

$id = $_GET['idnoticias'];

E puxa os dados da base pelo id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço pela atenção de vocês.

 

A minha pagina textos.php lista todos os posts do banco de dados, e utilizando da forma que Marcos Xavier citou (limitar textos), ainda seria preciso criar um link em baixo com a CHAMADA DO POST COMPLETO em uma nova página..

 

essa nova pagina seria o que o Helmesvs citou, mas acabei que me perdendo por completo com o codigo que ele ensinou..

 

Se puderem ser mais claros, porque sou muito leigo em PHP, desculpem minha ignorancia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc vai criar um link na página principal, aquela que contém o resumo das noticias. Esse link vai conter o id da matéria. Ex:

<a href="materiaCompleta.php?id=$idMateria">Leia a Materia Completa</a>

na página materiaCompleta.php vc tem o id passado pela URL (GET), ai vc busca ele e cria um SELECT sem restrição de caracteres:

$id= $_GET['id'];
$sql = "SELECT * FROM minhaTabela WHERE id = $id";
...

 

Feito isso, basta exibir a matéria e formatar do jeito que desejar ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz da seguinte forma:

echo '<div id="textos"><div id="titulo-textos">'.$row['titulo'].'</div>';
echo '<div id="id-textos">'.$row['id'].'</div>';
echo '<div id="texto"><pre>'.$row['texto'].'</pre></div>';
echo '<a href="materiaCompleta.php?id='.$row['id'].'">Ler materia completa</a></div>';
echo '<div id="clear">'.'</div>';}

O link ficou da seguinte forma:

http://localhost/site/materiaCompleta.php?id=120

e a pagina materiaCompleta.php

    <?php 
    $id= $_GET[$row['id']];
$sql = "SELECT * FROM textos WHERE id = $id";
            ?>

Recebi o seguinte erro na página materiaCompleta.php:

Notice: Undefined index: in C:\wamp\www\terreiro\materiaCompleta.php on line 12

 

Segue a linha 12:

$id= $_GET[$row['id']];

Tentei fazer o codigo acima apenas utilizando

$id= $_GET['id'];

Com esse código a página fica em branco..

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
//PAGINA 1
        include "conexao.php"; // CONEXÃO COM O BANCO DE DADOS
		$quantidade = 12;
		$pagina     = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1;
		$inicio     = ($quantidade * $pagina) - $quantidade;
		
	  $sql = "SELECT id, datahora, Day(datahora), foto1, titulo, introducao, visualizacao, tipo, categoria FROM `publicacoes` WHERE tipo=1 ORDER BY datahora DESC LIMIT $inicio, $quantidade";
				$query = $mysqli->query($sql);

                while ($linha = $query->fetch_assoc() ) {?>
			
    <li class="col-md-4 col-sm-6">
<div class="cp-post">
<a href="ver.php?idnoticias=<?php echo $linha['id'] ?>&categ=1"><div class="cp-thumb"><img alt="" src="../adm-news/<?php echo $linha['foto1'] ?>"></a></div>
<div class="cp-post-content">
<h3><!-- ENVIA POR METODO GET A VARIAVEL idnoticias e categ --><a href="ver.php?idnoticias=<?php echo $linha['id'] ?>&categ=1"><?php echo $linha['titulo']?></a></h3>
<ul class="cp-post-tools">
<li><i class="fa fa-user"></i> Roy Miller</li>

</ul>
</div>
</div>
</li>

<?php  }
        ?>
		
<?php
//PAGINA 2

$id = $_GET['idnoticias']; // RECEBE AS VARIAVEIS
$categ = $_GET['categ'];



    
            $con = new mysqli('localhost', 'root', '', 'news'); // CONEXÃO COM O BANCO DE DADOS
            $sql = ("select id, Day(datahora), datahora, foto1, visualizacao, foto2, foto3, titulo, introducao, corpo, tipo, categoria, share from publicacoes WHERE id = '$id'");
            $query = $mysqli->query($sql);


                while ($linha = $query->fetch_assoc() ) {?>
 
<div class="cp-thumb"><img src="../adm-news/<?php echo $linha['foto1'] ?>" alt=""></div>
<div class="cp-post-content">
<h1><em><span style="font-family: 'Source Sans Pro', sans-serif;"><?php echo utf8_encode($linha['titulo']) ?></span></em></h1>
<ul class="cp-post-tools">

<li><i class="fa fa-user"></i> Helmes Vieira</li>
<li style="text-transform: uppercase;"><i class="fa fa-clock-o"></i> <?php setlocale(LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
date_default_timezone_set('America/Sao_Paulo');
echo strftime('%d %b %Y - %HH %M', strtotime($linha['datahora']));
											
											
									 ?> </li>
</ul>


<p><span style="font-family:lucida sans unicode,lucida grande,sans-serif;"><span style="color:#808080;"><em><span style="font-size:20px;"><?php echo utf8_encode($linha['introducao']) ?></span></em></span></span></p>
<p><span style="font-family:Roboto,helvetica,sans-serif;"><?php echo utf8_encode($linha['corpo']); ?></span></p>
<br><br>

</div>
 
 <?php }?>



Tirei do meu proprio codigo pra você, se precisar explico o que cada linha faz

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual é a linha 12?

 

o correto é:

$id= $_GET['id'];

Se a URL está recebendo corretamente o id (nesse caso o 120), então é outro erro...

 

Esse é o nome da pagina que vc criou mesmo? materiaCompleta.php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.