Ir para conteúdo

Arquivado

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

Rasp

Usuário Único e Paginação

Recommended Posts

Fala galera tudo certinho?

Bem... venho a algum tempo utilizando um script de paginação baseado neste do wolfphw... o problema... é que tanto este quanto qualquer outro script que tenha encontrado inicia a paginação no 0... com isso a pagina 1 torna-se 0 na listagem, 2 (1) e assim vai... gostaria de colocar as numeração corretamente... iniciando na página 1, porém já fiz inumeras modificações... que alcançaram a listagem correta, porém ao iniciar na página 1, eu perdia uma página da listagem (no caso a 0) que ficava sem ser exibida.

 

Segue o script:

 

 

pagina.php

<?php
//######### INICIO Paginação
	$numreg = 40; // Quantos registros por página vai ser mostrado
	if (!isset($pg)) {
		$pg = 0;
	}
	$inicial = $pg * $numreg;
	
//######### FIM dados Paginação
	
	// Faz o Select pegando o registro inicial até a quantidade de registros para página
	$sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg");

	// Serve para contar quantos registros você tem na seua tabela para fazer a paginação
	$sql_conta = mysql_query("SELECT * FROM tabela");
	
	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
	
	include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
	
	echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo
	
	while ($aux = mysql_fetch_array($sql)) {
		/* Ai o resto é com voces em montar como deve parecer o conteúdo */
	}
?>

paginacao.php

<?php
	$quant_pg = ceil($quantreg/$numreg);
	$quant_pg++;
	
	// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
	if ( $pg > 0) {
		echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";
	} else {
		echo "<font color=#CCCCCC>« anterior</font>";
	}
	
	// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {
		// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
		if ($pg == ($i_pg-1)) {
			echo " <span class=pgoff>[$i_pg]</span> ";
		} else {
			$i_pg2 = $i_pg-1;
			echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
		}
	}
	
	// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
	if (($pg+2) < $quant_pg) {
		echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo »</b></a>";
	} else {
		echo "<font color=#CCCCCC>próximo »</font>";
	}
?>

 

 

 

Minha outra dúvida no caso sobre Usuários Unicos em um sistema...

criei em minha tabela de usuarios um campo chamado logado, o mesmo trabalha com enum 0, 1... por padrão todos os usuários ficam 0 e ao logar o script de validação faz um update na tabela colocando 1 no usuário, e caso alguem tente logar não consegue...

Quando o usuário clica no botão sair é feito novamente um update na tabela colocando 0 no usuário e assim liberando para que possa logar novamente...

a questão é a seguinte... e quando o browser é fechado sem clicar em sair? ou o navegador fecha por algum erro? o que eu posso fazer para deslogar? pois os usuários ficam presos... inclusive já li e fiz uma função em JS para ao fechar o navegador rodar a pagina de sair, porém, no firefox, opera e google chrome a mesma não funciona corretamente.

 

Se alguem puder me dar uma luz, agradeço!

Absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (!isset($pg) || empty($pg)) {

$pg = 1;

}

 

Usa essa equação:

 

$inicial = ($pg*$numreg)-$numreg;

 

exemplo:

$p=1;

$numreg = 10;

 

ficando :

1*10-10 = 0;

2*10-10 = 10;

3*10-10 = 20;

 

 

 

e sobre os usuarios... use javascript.

unload()

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Uélio,

Valeu pela atenção ai brother... mais continuo com ambos os problemas... tipo:

 

a paginação... utilizando este exemplo que você me deu... coloca pra iniciar no nº1... que é a pág: 2... e com isso faz o mesmo problema de antes... eu fico com a pág1 morta, pois não lista dados....

 

Quanto ao JS para fazer o logout caso o navegador fechar fiz assim, mais não funcionou também... acho que fiz a função de forma errada :S

 

function sair() {
	window.location = 'logout.php';
}
window.unload = sair;

Vlww, Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta morta porque voce mudou so o que eu disse.... voce tem que ir atualizando o resto.!

 

e a consulta sql é assim:

 

limit 10 começando de 0

e não 0 começando de 10

 

Sua consulta esta assim:

$sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg");

 

altere para:

$sql = mysql_query("SELECT * FROM tabela LIMIT , $numreg, $inicial");

 

Você tem que chamar a função em java script assim; sair();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Uélio...

Brother... resolvi o problema da paginação... ficou assim o script final:

 

pagina.php

$limite = 10;
$pg = isset($_GET["pg"]) ? $_GET["pg"] : 1;
$inicio = ($pg * $limite) - $limite;
...

paginacao.php

<?php
$total_pg = ceil($total_registros/$limite);
$total_pg++;

// Verifica página atual, caso não seja 1º libera link para anterior.
if($pg > 1) {
	echo "<span><a href=\"?pg=".($pg -1)."\">«</a></span>\n";
}

// Faz controle das páginas que irá mostrar na paginação.
if(($pg - 4) < 1) {
	$anterior = 1;
} else {
	$anterior = $pg - 4;
}
if(($pg + 6) > $total_pg) {
	$proximo = $total_pg;
} else {
	$proximo = $pg + 6;
}

// Crio os números das páginas entre Anterior e Próximo.
for($i_pg = $anterior; $i_pg < $proximo; $i_pg++) {
	if($pg == ($i_pg)) {
		echo "<span>$i_pg</span>\n";
	} else {
		$i_pg2 = $i_pg;
		echo "<span><a href=\"?pg=".$i_pg2."\">$i_pg</a></span>\n";
	}
}
if(($pg +2) < $total_pg) { echo "<span><a href=\"?pg=".($pg +1)."\">»</a></span>\n"; }
?>

Agora a questão do javascript mesmo modificando do jeito que você falou... no Google Chrome não funciona e no Firefox em qualquer link do sistema que eu clique ele desloga :S

 

ficou assim:

function sair() {
	window.location = 'logout.php';
}
window.unload = sair();

Valeu ai pela ajuda até agora cara!!

absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

function sair() {
	window.location = 'logout.php';
}
window.unload = sair();

pq automaticamente ao sair da pagina você manda ir para a pagina de logout, veja a traducao de sua funcao

 

janela.aodesacarregar = sair();

 

tente usar uma funcao do php chamada, call-func-user, ten tutos aki dela pra usar com js....

Compartilhar este post


Link para o post
Compartilhar em outros sites

e a consulta sql é assim:

 

limit 10 começando de 0

e não 0 começando de 10

 

Sua consulta esta assim:

$sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg");

 

altere para:

$sql = mysql_query("SELECT * FROM tabela LIMIT , $numreg, $inicial");

Fiz essa alteração agora... e simplismente parou de listar meus dados... mais a paginação está correta... tenho que alterar mais alguma coisa agora para listagemm certo?

 

 

 

IGOR, valeu... desconfiei que fosse isso... então na verdade o IEca interpreta o script de forma incorreta (pra variar)... vou dar uma busca sobre essa função ;D vlww

Compartilhar este post


Link para o post
Compartilhar em outros sites

IGOR, cara se não for abusar... você teria algum link de exemplo? pois não achei ou não procurei certo... se puder claro!

Abss cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Galera!

Alguem por acaso teria um exemplo desta função citada pelo IGOR (call-func-user) em conjunto com javascript???

 

Obrigado.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho uma classe de paginacao simples aqui.

Ainda está interessado?

Se quiser posso te mandar por email.

Abraços!

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.