• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rippp

paginacao problema

8 mensagens neste tópico

boas.. tenho andado a tentar por a paginação a dar numa pagina e vou ai

 
<?php 
		require('sqlconect.php');
		$pagiselect=("SELECT * FROM noticias ORDER BY data LIMIT '".$idi."','".$idf."'");
		$pagiselect2 = mysql_query($pagiselect);
		$ttlsql = mysql_query('SELECT * FROM noticias');
		$ttltr = mysql_num_rows($ttlsql);
		$ttlpag=ceil('$ttltr/20'); //para saber quantos links possiveis
		if ($ttlpag = 0){
			$ttlpag== 1;   
		}
		$numnot = 20; // noticias por pagina
		$pag = $_GET['pag'];  //numero da pagina
		if (!isset($_SESSION['$pag'])){
			$pag=1;    //dar a primeira pagina de dados o numero 1
		}
		$idi = ('($pag * 20)-($pag - 1) * 20)');
		$idf = ('$pag * 20');
		$numero_links = 5; // numero de links visiveis
		$pagant= ('$pag - 1');
		$pagseg = ('$pag + 1');
		echo ("pagina $pag de $ttlpag no total de $ttltr");
		while ($dados = mysql_fetch_array($pagiselect2)) {
			$titul = $dados['titulo'];
			$corp = $dados['corpo'];
			echo (" $corp - $titul ");
		?>
		<?php 
		// criar variaveis para os links
		$linkant == $pag; // link anterior
		if ($linkant == 1) {
			$linkant == 1;
		}
		else {
			$linkant == ($pag - 1);
		}
		$linkprox == $pag;   // link prox
		if ($linkprox >=$ttlpag){
			$linkprox == $pag; }
		else {
			$linkprox == ($pag + 1);
		}
		?>
		<?php }?>

ja não consigo sair daqui. falta-me a parte dos links centrais, o fetch array nao fuciona. Ajuda era porreiro :D

PS: ja passei isso pelo Geshi mas nada.. ja ponho bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem, para alem de teres o codigo muito desorganizado e nao estares a fazer da melhor forma, qual é a tua duvida?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função ceil que usas lá em cima, funciona?

ceil('$ttltr/20')

Quando muito, acho que devia estar entre aspas e não entre plicas (não tenho como testar daí a minha pergunta, e até pode ser uma causa de erro). Repara se o valor devolvido é o que pretendes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já ha uns tempos deixei aqui um snippet de código para fazer isso... Procura no armazém de código (que acho que ainda existe).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a uns tempos vi um sistema de paginação aqui no forum, já nao me lembro de quem era mas funciona perfietamente so tens de o adaptar ao que pretendes:

<?php
include "connections/mysqlconnect.php";

mysql_select_db ("$database_TestConnect") or die ("Impossivel ligar a base de dados");

if (!isset($_GET['pag'])){ //--------Se a página actual não estiver definida
        $pag = 1; //---------Passa a estar, e é apresentada como sendo a 1ª.
}else{ //-------Se já estiver definida.
        $pag = $_GET['pag']; //-------Usa-se a página que é.
}

$linhas_por_pag = 8; //-------Estamos a dizer quantos registos serão apresentados por página.

/*Definimos um principio para a busca na Base de Dados.
Que será a página($pag) X a quantidade de registo por página($linhas_por_pag) menos a mesma quantidade($linhas_por_página)*/
$inicio = (($pag*$linhas_por_pag) - $linhas_por_pag);

$sql = mysql_query("SELECT * FROM tabela LIMIT $inicio, $linhas_por_pag") or die (mysql_error());


?>

 <?php

//Vamos buscar os dados à base de dados e adicionamos à tabela criada

while($row = mysql_fetch_array($sql)){

?>
Aqui listas os dados como pretendes
<?php
}
?>

<?php
$sqlt = "SELECT COUNT(*) as Num FROM automoveis WHERE `user`='$user' AND `tipo`='$tipo'";

$total_res = mysql_result(mysql_query($sqlt), 0);
// Vamos saber o total de registos que existem na base de dados
//$total_res = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM automoveis"), 0);

// Vamos saber quantas páginas é que o total de registos dá e arredonda-se o total para cima(com ceil()), pra o resultado não seja 1.4 ou 2.32
$total_pag = ceil($total_res/$linhas_por_pag);

// Vamos criar um link para as páginas anteriores à actual
if ($pag > 1){
        $anterior = ($pag-1);
        echo "<a class='normal' href=\"".$_SERVER['PHP_SELF']."?pag=$anterior\">Anterior  </a>";
}

for($i=1; $i <= $total_pag; $i++){
        if(($pag) == $i){
                echo "<font class='normal'><strong>$i</strong> </font>"; //-----O <strong> aplicado a $i dá ênfase à página que se visualiza.
        }else{
                echo "<a class='normal' href=\"".$_SERVER['PHP_SELF']."?pag=$i\">$i </a>";
        }
}

// Vamos criar um link para as páginas seguintes à actual
if($pag < $total_pag){
        $proximo=($pag+1);
        echo "<a class='normal' href=\"".$_SERVER['PHP_SELF']."?pag=$proximo\">  Próximo</a>";
}

?>

espero que ajude

APARTE: Usa o Geshi, fica mais apresentável. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o ceil funciona.. a minha duvida é como por os links a funcionar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o ceil funciona.. a minha duvida é como por os links a funcionar...

o exemplo que te deixei em cima tens os links a funcionar, basei-te nele e adapta... entretanto, como ja tinha dito este sistema não é meu mas reparei que este sistema lista todas as páginas independentemente da quantidade de paginas a apresentar, no caso de teres 500 páginas vais ter 500 paginas apresentdas mais o anterior e o proximo, entretanto, por isso mesmo e porque a minha aplicação iria ter constantemente resultados com numeros elevados de páginas, alterei a aplicação para que, no caso de a consulta apresentar mais de 20 páginas apresentar apenas as duas primeiras, as duas ultimas, a actual e as 5 anteriores e posteriores... se estiveres interessado diz kk coisa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando tiver tempo deixo na wiki do p@p um artigo sobre paginação em php

0

Partilhar esta mensagem


Link 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