Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

diokhan

guardar variavel paginaçao

Mensagens Recomendadas

diokhan    1
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? :hmm:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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']?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
scorch    19
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
scorch    19
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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 :hmm:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
scorch    19
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']."\" />";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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 :hmm:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mAiN_iNfEcTiOn    0
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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mAiN_iNfEcTiOn    0
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" ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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? :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)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mAiN_iNfEcTiOn    0
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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mAiN_iNfEcTiOn    0
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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
diokhan    1
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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade