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

diokhan

guardar variavel paginaçao

24 mensagens neste tópico

boas,

preciso de uma ajuda, eu tenho a paginação feita, e por exemplo, eu tenho um botão que activa ou desactiva um utilizador, e ao clicar num botão na pagina 2 ele volta para a pagina 1, mas queria que continuasse na pagina 2, pensei em guardar numa variável o numero da pagina em que estou e "obrigar" a passar no url a variável, é possível? ou há outra forma mais eficaz de resolver este problema? :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que percebi, fazes assim: O link será:

nome_da_pagina.php?page=2

ou

nome_da_pagina.php?p=2

Depois obtens o p assim:

$_GET["p"];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tipo..a variavel que esta definida para a paginaçao é page, é isto que aparece no link, se fizer assim posso apanhar esta variavel? ou é preciso fazer algo do tipo $pag = $_GET['page']?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tao e por exemplo? e se eu tiver na pagina 3 ou 4? se eu fizr $_GET['page'] no link vou precisar dizr q p=$variavel certo? e esta $variavel seria a pagina que eu ia apanhar do $_GET['page'], pelo menos é este o meu raciocinio. espero estar certo :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É assim. Tens um link HTML:

index.php?p=2

Queres dizer que página é:

echo $_GET["p"];

A variável $_GET é como as outras, para a usares.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que ja percebi a ideia. tao so preciso declarar $_GET['page'] e dizer no link page=2? e no url atribuir p=$_GET['page'] certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não precisas de declarar nada, essa é uma variável superGlobal, já vem declarada e com certos valores.

e no url atribuir p=$_GET['page'] certo?

Não percebi.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tipo..eu sei que tenho algo do genero assim href=restrito.php?opcao=admin&op=users&ot=change

e preciso colocar aqui tambem o $_GET['page'] certo?

para ficar algo do genero

href=restrito.php?opcao=admin&op=users&ot=change&pag=$_GET['page']

digo eu :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende. Se queres obter o valor de page actual, é assim:

echo "<a href=\"href=restrito.php?opcao=admin&op=users&ot=change&page=".$_GET['page']."\" />";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

já testei e funciona. obrigado pela ajuda B)

PS: para não abrir um novo tópico, coloco aqui uma duvida que vai dar seguimento ao problema deste tópico.

em relação a pagina já mantém na mesma, agora é assim, eu tenho como eliminar um registo, clico no botão e elimina na base de dados tudo muito bem, mas o registo ainda aparece na tabela em que tenho para mostrar os dados, e queria fazer um refresh a pagina, porque se eu clicar novamente no eliminar registo o registo desaparece, já procurei no fórum e não encontrei nada que vá de encontro a minha duvida. espero ter-me feito perceber :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Diokhan, tu eliminas o registo por ajax ou mudas de página para eliminar e voltas à mesma depois?

Se for por ajax, após receberes a resposta do pedido (ou seja no caso do JQuery, na função callback) fazes um window.location = ''.

E ele volta à mesma página. Acho que existe também o window.refresh(); ou window.location.refresh(); ... mas caso tenhas um # no endereço, não sei se ele funciona B).

É o caso de testares :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu envio para uma pagina e ele regressa depois de eliminar para a mesma, se não eliminar mando para o index, para diferenciar as situações

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E como é que mandas para a mesma... com o 'history.go(-1)' (Javascript?) ou com o header('location : /(...)') (PHP) ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uso o header. indico o caminho para a pagina, no editar funciona bem, só no apagar que da barraca e fica tipo um "registo fantasma" B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pôxa... então estás a dizer que eliminas e que ele fica lá até fazeres refresh? Ahm... estás a dizer algo como "Ah eu elimino, ele volta à página, mas como é lento a eliminar tenho que fazer refresh para ver a alteração" ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

basicamente sim é isso, na base de dados elimina logo que já confirmei, mas no site o registo ainda fica la ate fazer um refresh ou seleccionar outra parte da pagina, ele apaga o registo mas enquanto não fizer refresh ou tiver noutra parte do site o registo fica la

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poderá ser a cache :| ... Hum... já experimentaste desactivar a cache do teu browser para ver se é disso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já desactivei a cache mas nada, continua a aparecer o registo mesmo depois de estar eliminado ate fazer o refresh.

não há forma de no php fazer um refresh? alguma função ou assim? :hmm:

PS: já resolvi o meu problema

eu tinha o código para eliminar assim:

<?php
$dsn = 'mysql:dbname=***;host=localhost';
	$user = '***';
	$password = '***';

	try {
	    $dbh = new PDO($dsn, $user, $password);
	    
	} catch (PDOException $e) {
	    echo 'Connection failed: ' . $e->getMessage();
	}

	try{
		$stmt = $dbh->exec("DELETE FROM user WHERE ID_USER = $_GET[id]");
		if( $stmt >= 1 )
		{ 
			return $stmt; 
		} else { 
			return 0; 
				}
		}catch 
		( PDOException $e ){ 
			echo "Erro: ".$e->getMessage(); }

header('Location: ../BioCantProject/restrito.php?opcao=admin&op=users');
?>

e agora esta assim:

<?php
$dsn = 'mysql:dbname=***;host=localhost';
	$user = '***';
	$password = '***';

	try {
	    $dbh = new PDO($dsn, $user, $password);
	    
	} catch (PDOException $e) {
	    echo 'Connection failed: ' . $e->getMessage();
	}

	try{
		$stmt = $dbh->exec("DELETE FROM user WHERE ID_USER = $_GET[id]");

		}catch ( PDOException $e )
		{ 
			echo "Erro: ".$e->getMessage(); 
		}

header('Location: ../BioCantProject/restrito.php?opcao=admin&op=users');
?>

e ficou a funcionar como queria, só tive que tirar estas linhas:

if( $stmt >= 1 )
		{ 
			return $stmt; 
		} else { 
			return 0; 
				}

mas obrigado pela ajuda B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eh pah... não. O que podes fazer é passar uma variável por sessão a dizer:

$_SESSION['refresh'] = TRUE
[/code=php]

E depois, no lado do script da listagem
[code=php]
if(isset($_SESSION['refresh']) && ($_SESSION['refresh']===TRUE))
    echo 'window.location=""';

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ponto 1, mandas eliminar.... vai para um script de eliminação, certo?

Ao entrar no script de eliminação, vais definir logo ao inicio uma variável de sessão chamada refresh com o valor TRUE.

Depois fazes o header para o script/url da listagem....

Depois no script da listagem tens que verificar se essa variável de sessão existe e se tem o valor TRUE... Se assim for, mandas um comando javascript para recarregar a página.

Ah deixa-me fazer uma adenda ao código da listagem:

if(isset($_SESSION['refresh']) && ($_SESSION['refresh']===TRUE))
{
    echo '<script language="javascript">window.location = "";</script>';
    unset($_SESSION['refresh']);
}

Mas sinceramente isto é estúpido, eu acho que isso é problema de cache e não de eliminação...

A não ser que seja algo tão lento de eliminar, o que eu duvido, que obrigue a ter um delay. Mas pronto...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu vou testar a tua solução, eu limpei a cache, desactivei a cache, testei no google chrome e tudo, e havia sempre isto, ficava o registo "fantasma" ate eu fazer um refresh

resolvi o problema como disse a pouco mas vou tentar a tua solução e já digo algo B)

PS: funciona como disseste, já não aparece mais o registo depois de eliminar. obrigado pela ajuda :P

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