Ir para conteúdo

POWERED BY:

Arquivado

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

Ricardo Godoi

Paginação Array Com Problema

Recommended Posts

Bom pessoal, tenho um function de paginação, estou mudando as minhas url para ser mais amigaveis, rsrs

ai meu surgiu um problema quando eu faço uma atualização de conteudo ele gera um url tipo essa: meudominio.com/admin/sys/agenda/msg/Atualizado

ai ele volta para paginda onde exibe os resultados, eu queria tirar essa "/msg/Atualizado" da paginação, eu fiz isso com $url = $array[3]; mas ele so funciona para capturar o conteudo da 3ªbarra!

so que uso essa function para todo site, ai na index do meu site quando ele faz uma paginação tipo meudominio.com/fotos

ele não captura a array fotos, fica assim meudominio.com/pg/2

queria que ficassem assim: meudominio.com/fotos/pg/2 e por assim vai, /pg/3 pg/4

o que eu posso fazer para mudar isso?

fazer o $array capturar até a 3ª barra? alguem tem alguma solução?

        if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];        $url = str_replace(array("/pg/".$atual,"/pg/".$atual),"",$url);        $array = explode("/",$url);        $url = $array[3];        #print ($url);  

 

 

alguma solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dê UP em seu(s) tópico(s), muito menos num período tão curto de tempo.

 

Se ninguém ajudou, das duas uma: Ou ninguém sabe a resposta ou você inconscientemente dificultou ao máximo qualquer tipo de entendimento.

 

Reformule sua dúvida porque está MUITO confuso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como o moderador disse acima, a duvida deve estar muito confusa, vo tentar simplificar ao maximo.

Tenho um script de paginação que pagina todo o site que é essa "

 

function paginar($atual,$qt) {

"

dentro dela ela faz as buscas das urls

	# URL
	if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];
	$url = str_replace(array("/pg/".$atual,"/pg/".$atual),"",$url);
	$array = explode("/",$url);
	$url = $array[3];

nessa função acima! o array faz a busca e pega so depois da 3ª barra

meudominio.com/admin/sys/agenda/msg/Atualizado

que seria a /agenda/

 

 

eu queria saber se é possível fazer a busca até essa 3ª barra,

ex: meudominio.com/fotos

meudominio.com/fotos/categoria

meudominio.com/fotos/categoria/2013/

 

ai ao final da url colocar a paginação, /pg/2 ...

 

alguem sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Evandro,

eu fiz aqui e pelo que eu vi, e do jeito que eu quero!

imagem.JPG

olha como a paginação fico, apareceu a palavra Array no lugar de onde era para aparecer agenda

fico do mesmo jeito na pagina de fotos

imagem2.JPG

o script fico assim,

# URL
	if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];
	$url = str_replace(array("/pg/".$atual,"/pg/".$atual),"",$url);
	$array = explode("/",$url);
	$url = array_slice($array, 0, 4);
	
	print_r ($url);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bomm, eu fiz, deu certo, mas agora as url menores que 3 array ficão com 3 ///

ex: /fotos///pg/2

 

alguem sabe como tirar isso sem afetar o resto das url, pq no admin ta do geito que eu quero

ele pega a url: admin/sys/agenda/msg/Atualizado

e me retorna so /admin/sys/agenda/ correto para paginação.

 

segue abaixo o script inteiro.

function paginar($atual,$qt) {

	# URL
	if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];
	$url = str_replace(array("pg/".$atual,"pg/".$atual),"",$url);
	$array = explode("/",$url);
	$url = array_slice($array, 0, 4);
	$url = implode("/", $url);
	
	#print_r ($url);	

	# Inicio - Fim
	$inicio = 1;
	$fim = $qt;
	if ($qt > 10) {
		$inicio=$atual - 4;
		$fim = $atual + 5;
		if ($inicio < 1) {
			$fim=$fim - $inicio +1;
			$inicio = 1;
		}
		if ($fim > $qt) {
			$fim = $qt;
			$inicio = $fim - 9; 
		}
	}

	# Botão -Anterior-
	$saida .= '<a ';
	if ($atual>1) $saida .= ' href="'.$url.'/pg/'.($atual-1).'" ';
	$saida .= ' class="pg-naveg-ante">Anterior</a>';

	# Paginação
	for ($i=$inicio;$i<=$fim;$i++) {
		$saida .= '<a href="'.$url.'/pg/'.$i.'"';
		if ($i==$atual) $saida .= ' class="atual" ';
		$saida .= ' class="num" >'.$i.'</a>';
	}

	# Botão -Próxima-
	$saida .= '<a ';
	if ($atual<$qt) $saida .= ' href="'.$url.'/pg/'.($atual+1).'" ';
	$saida .= ' class="pg-naveg-prox">Próxima</a>';



	return $saida;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tirei as / do

'.$url.'/pg/'.

para ver, na parte fotos fica blz a paginação, ja na r/admin/sys/agenda fica assim r/admin/sys/agendapg/2

eu eu coloc a antes do pg fica 2 barra na paginação da fotos

 

e como eu usaria a

preg_replace("!/{2,}!", "", $url);

assim no script?

	if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];
	$url = str_replace(array("/pg/".$atual,"/pg/".$atual),"",$url);
	$array = explode("/",$url);
	$url = array_slice($array, 0, 4);
	$url = implode("/", $url);
		echo preg_replace("!/{2,}!", "", $url);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitua todos as linhas similares a [inline]$saida .= ' href="'.$url.'/pg/'.($atual-1).'" '[/inline] por [inline]$saida .= ' href="'.$url.'pg/'.($atual-1).'" '[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pequena correção no exemplo de preg_replace() é substituir por uma barra ao invés de substituir por "vazio":

<?php
 
$url = '/fotos///pg/2';
 
var_dump( preg_replace( "!/{2,}!", "/", $url ) ); // string(11) "/fotos/pg/2"
 
var_dump( preg_replace( "!/{2,}!", "", $url ) ); // string(10) "/fotospg/2"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno, olha como ta o script agora,

function paginar($atual,$qt) {

	# URL
	if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];
	$url = str_replace(array("/pg/".$atual,"/pg/".$atual),"",$url);
	$array = explode("/",$url);
	$url = array_slice($array, 0, 4);
	$url = implode("/", $url);
		 preg_replace( "!/{2,}!", "/", $url ); // string(11) "/fotos/pg/2"
		

	
	#print_r ($url);	

	# Inicio - Fim
	$inicio = 1;
	$fim = $qt;
	if ($qt > 10) {
		$inicio=$atual - 4;
		$fim = $atual + 5;
		if ($inicio < 1) {
			$fim=$fim - $inicio +1;
			$inicio = 1;
		}
		if ($fim > $qt) {
			$fim = $qt;
			$inicio = $fim - 9; 
		}
	}

	# Botão -Anterior-
	$saida .= '<a ';
	if ($atual>1) $saida .= ' href="'.$url.'/pg/'.($atual-1).'" ';
	$saida .= ' class="pg-naveg-ante">Anterior</a>';

	# Paginação
	for ($i=$inicio;$i<=$fim;$i++) {
		$saida .= '<a href="'.$url.'/pg/'.$i.'"';
		if ($i==$atual) $saida .= ' class="atual" ';
		$saida .= ' class="num" >'.$i.'</a>';
	}

	# Botão -Próxima-
	$saida .= '<a ';
	if ($atual<$qt) $saida .= ' href="'.$url.'/pg/'.($atual+1).'" ';
	$saida .= ' class="pg-naveg-prox">Próxima</a>';



	return $saida;
}

eu coloquei a barra no

.$url.'/pg/'

para resolver o problema da paginação no admin, mas quando eu volto para a paginação das fotos, fica com 2 barra ex: //pg/2

http://www.informacast.com.br/fotos

eu fiz a alteração que voce falo!! mas nao deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hm.... Experimenta antes ou depois desse preg_replace() limpar as barras das pontas da string:

 

 

$url = trim( $url, '/' );

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, coloquei antes de depois, e fico assim

 

http://www.meudominio.com.br/admin/sys/admin/sys/agenda/pg/1

agora o url repete tudo que vem depois do.br/

e agora? tem outra solução sem ser o trim?

 

----

eu uso isso no começo do código do html

<base href="http://www.informacast.com.br/admin/sys/"/>

para mostrar o caminho do css e js do script.

pq em algumas paginas eu uso

../../sys/

e por ai vai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trim() só serve pra limpar as barras, não tem relação aparente com essa duplicidade mas, já que ao usá-lo ela apareceu, pelo menos te "forçou" a prestar mais essa informação.

 

Até onde eu sei o <base> é pendurado no começo de tudo quanto for URL (css, js, links...), sendo assim, ou você não usa ele ou, pelo que estou vendo do andar da carruagem, você modifica seu array_slice().

 

Tomando como exemplo a URL meudominio.com/admin/sys/agenda/msg/Atualizado, explodir produz:

 

 

array(6) {

  [0]=>
  string(14) "meudominio.com"
  [1]=>
  string(5) "admin"
  [2]=>
  string(3) "sys"
  [3]=>
  string(6) "agenda"
  [4]=>
  string(3) "msg"
  [5]=>
  string(10) "Atualizado"
}

E quando você faz:


$url = array_slice($array, 0, 4);

Você está pegando as quatro primeira entradas do array. Porém, as três primeiras, quando implodidas são iguais ao valor do teu <base>, daí a duplicidade.

 

Nesse cenário, ao invés de zero, teu array slice deveria ter 4:

 

 

$rl = array_slice( $url, 4, 4 );

 

Pegando, assim, do msg pra frente.

 

Ah! E de repente, o segundo quatro pode ser removido, assim array slice inicia no quatro elemento e vai até o último.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom no momento que eu coloco isso

$url = array_slice($array, 4, 4);

ele some com a url todo, da paginação da foto, ficando meudominio.com/pg/2

e no admin fica assim

http://www.informacast.com.br/admin/sys/msg/Atualizado//pg/1

 

o script ta assim agora:

 

# URL
if (!strpos($_SERVER ['REQUEST_URI'],"/")) $url = "".utf8_decode($dadosconfig['url'])."".$_SERVER ['REQUEST_URI']."/"; else $url = $_SERVER ['REQUEST_URI'];
$url = str_replace(array("/pg/".$atual,"/pg/".$atual),"",$url);
$array = explode("/",$url);
$url = array_slice($array, 0, 4);
$url = array_slice($array, 4, 4 );
$url = implode("/", $url);
#$url = trim( $url, '/' );
preg_replace( "!/{2,}!", "/", $url ); // string(11) "/fotos/pg/2"

print_r ($url);

tem como melhor esse script?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

$url = array_slice($array, 0, 4);
$url = array_slice($array, 4, 4 );
tem como melhor esse script?

 

 

 

 

Era pra substituir uma linha pela outra, não usar as duas.

 

 

preg_replace("!/{2,}!", "/", $url);

 

 

Outra alternativa pra isso pode ser assim:

preg_replace(array("!/+!", "!/$!"), array("/", ""), $url);

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.