Jump to content
Sign in to follow this  
diokhan

guardar variavel paginaçao

Recommended Posts

diokhan

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? 🤔


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
scorch

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"];


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
diokhan

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']?


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
scorch

Podes usar a variável $_GET['page'] como uma variável normal.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
diokhan

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


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
scorch

É 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.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
diokhan

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?


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
scorch

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.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
diokhan

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 🤔


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
scorch

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']."\" />";


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
diokhan

obrigado pela ajuda :P

amanha ja vou testar e digo algo :thumbsup:


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
diokhan

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 🤔


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

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

Share this post


Link to post
Share on other sites
diokhan

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


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

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

Share this post


Link to post
Share on other sites
diokhan

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)


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

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" ?

Share this post


Link to post
Share on other sites
diokhan

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


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

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

Share this post


Link to post
Share on other sites
diokhan

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? 🤔

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)


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

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

Share this post


Link to post
Share on other sites
diokhan

não percebi bem a ideia, podes explicar um pouco melhor pf?


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

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...

Share this post


Link to post
Share on other sites
diokhan

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


...Join the dark side...and get a free cookie...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.