guardar variavel paginaçao - PHP - Portugal-a-Programar
guardar variavel paginaçao
By diokhan, December 16, 2009 in PHP
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? 🤔
Pelo que percebi, fazes assim: O link será:
nome_da_pagina.php?page=2
nome_da_pagina.php?p=2
Depois obtens o p assim:
$_GET["p"];
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']?
Podes usar a variável $_GET['page'] como uma variável normal.
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
É assim. Tens um link HTML:
Queres dizer que página é:
A variável $_GET é como as outras, para a usares.
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?
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?
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 🤔
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']."\" />";
amanha ja vou testar e digo algo
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 🤔
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
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
E como é que mandas para a mesma... com o 'history.go(-1)' (Javascript?) ou com o header('location : /(...)') (PHP) ?
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)
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" ?
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
Poderá ser a cache :| ... Hum... já experimentaste desactivar a cache do teu browser para ver se é disso?
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:
$dsn = 'mysql:dbname=***;host=localhost';
$stmt = $dbh->exec("DELETE FROM user WHERE ID_USER = $_GET[id]");
if( $stmt >= 1 )
( PDOException $e ){
echo "Erro: ".$e->getMessage(); }
header('Location: ../BioCantProject/restrito.php?opcao=admin&op=users');
}catch ( PDOException $e )
echo "Erro: ".$e->getMessage();
e ficou a funcionar como queria, só tive que tirar estas linhas:
mas obrigado pela ajuda B)
Eh pah... não. O que podes fazer é passar uma variável por sessão a dizer:
$_SESSION['refresh'] = TRUE
E depois, no lado do script da listagem
if(isset($_SESSION['refresh']) && ($_SESSION['refresh']===TRUE))
echo 'window.location=""';
não percebi bem a ideia, podes explicar um pouco melhor pf?
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:
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...
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