Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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');
?>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
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.
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 ;)
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..
<?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$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
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?
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.