Ir para conteúdo

POWERED BY:

Arquivado

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

Ualace Moura

Tem como criar paginação com este código

Recommended Posts

Olá pessoal bom dia a todos.

Eu tenho um código que exibe a busca feita pela pessoa que acessa o site, mas preciso que neste mesmo código seja criado a paginação onde irá exibir uma quantidade de 50 links por página. alguem poderia me ajudar? desde já agradeço.

 

esse é o código q exibe o resultado da busca.

 


<?php

$conexao = mysql_connect("HOST", "USER", "SENHA")
or die ("erro ao conectar");

$db = mysql_select_db("BANCO")
or die("erro ao selecionar banco");

// Recuperamos a ação enviada pelo formulário
$a = $_GET['a'];

// Verificamos se a ação é de busca
if ($a == "buscar") {

// Pegamos a palavra
$palavra = trim($_POST['palavra']);

?>



<?php




$link = mysql_query("SELECT
		id,
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria
		FROM coluna_esquerda_1 WHERE titulo LIKE '%".$palavra."%' ORDER BY titulo")
or die(mysql_error());


     while($res_links=mysql_fetch_array($link)){



$id = $res_links[0];
$data = $res_links[1];
$hora = $res_links[2];
$publicado = $res_links[3];
$titulo = $res_links[4];
$subtitulo = $res_links[5];
$autor = $res_links[6];
$foto = $res_links[7];
$comentario = $res_links[8];
$noticia = $res_links[9];
$categoria = $res_links[10];

$string = $titulo;

$string = preg_replace("[^a-zA-Z0-9_]", "", strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC-"));


?>

<table BGCOLOR='#e6e6e6' width='558'>
<tr><td>

<a href='desc_e.php?post=<?php echo $id; echo $string; ?>'><font face='calibri' size='4' color='#ba0000'><b> <?php echo $titulo; ?> </b></font></a>
</br>

<?php echo $subtitulo; ?>

</br>

<font face="calibri" size="2"> Publicado em <?php echo date('d/m/y', strtotime($data)) ?> às <?php echo $hora; ?> </font>

</td></tr>
</table>

</p>		

<?php

 }


?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim a paginação pode ser adaptada a qualquer coisa, mais pra isso é preciso realmente entender como ela funciona e como o seu código funciona.

 

Pesquise um pouco mais sobre paginação leia com muita atenção e após finalizar cada processo fechar cada variável procure deixar claro na sua cabeça o que aconteceu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim a paginação pode ser adaptada a qualquer coisa, mais pra isso é preciso realmente entender como ela funciona e como o seu código funciona.

 

Pesquise um pouco mais sobre paginação leia com muita atenção e após finalizar cada processo fechar cada variável procure deixar claro na sua cabeça o que aconteceu.

 

ñ ajudou. Auguem ai pode me ajudar, por favor.

 

Agradeço muito a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imaster...ao-bem-simples/

 

tenta ver como funciona e tenta adaptar

 

Já tinha visto este post. Fiz várias tentativas para adaptar ao meu código, mas ñ consegui dai postei aqui pra ver se auguem me ajuda. Vlw brigadão. se alguem seouber adaptar a paginação ao meu código, dá uma ajudinha aê por favor. agradeço muito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tinha visto este post. Fiz várias tentativas para adaptar ao meu código, mas ñ consegui dai postei aqui pra ver se auguem me ajuda. Vlw brigadão. se alguem seouber adaptar a paginação ao meu código, dá uma ajudinha aê por favor. agradeço muito

 

Não é por nada não mais essa atitude que esta errada a respeito de quem quer aprender programar.

 

o que postei acima foi algo para você pesquisar e ler sobre o PHP e a paginação, pegar e adptar código vai gerar erros e aborrecer seu cliente, a aplicação pode ficar x vezes mais lentas se você não sabe o que esta escrevendo.

 

http://forum.imasters.com.br/topic/192785-script-para-paginacao-bem-simples/

 

Leia esse tópico e faça um teste com ele, entenda e quando tiver claro você vai conseguir adaptar o seu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é por nada não mais essa atitude que esta errada a respeito de quem quer aprender programar.

 

o que postei acima foi algo para você pesquisar e ler sobre o PHP e a paginação, pegar e adptar código vai gerar erros e aborrecer seu cliente, a aplicação pode ficar x vezes mais lentas se você não sabe o que esta escrevendo.

 

http://forum.imaster...ao-bem-simples/

 

Leia esse tópico e faça um teste com ele, entenda e quando tiver claro você vai conseguir adaptar o seu código.

 

Caro Vinicius, bom segui o seu conselho em não querer tudo de mão beijada. mas agora poderia me dar uma ajudinha, só para que eu entenda melhor.

 

Olha tenho esse formulário que é utilizado para fazer a busca.


<form name="frmBusca" method="POST" action="busca.php?">
<label>
<input class="formFields" type="text" id="consulta" name="palavra" value="Vazio para buscar todas" onfocus="this.value = '';" size="20">
<input type="image" src="images/buscar.png" value="" /></label>
</form>

 

 

E o código que adaptei a paginação. ele tá funcionando perfeitamente, apesar de parecer meio tosco tá funcionando e fazendo a paginação certinho. O problema é que ele não tá recendo os dados da busca. Como eu faço para ele receber a busca e só mostrar resultados referente ao que foi buscado? Agradeço a ajuda e obrigado pelo toque, aprendi bastante.


<?php

$conexao = mysql_connect("HOST", "USER", "SENHA")
or die ("erro ao conectar");

$db = mysql_select_db("BANCO")
or die("erro ao selecionar banco");

?>

<?php

$numreg = 10; // Quantos registros por página vai ser mostrado
if (!isset($pg)) {
$pg = 0;
}

$inicial = @$_GET['pg'] * $numreg;



$link = mysql_query("SELECT 
		id,
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria 
		FROM coluna_esquerda_1 LIMIT $inicial, $numreg");
?>

<?php

$link_conta = mysql_query("SELECT
		id,
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria
		FROM coluna_esquerda_1") or die(mysql_error());

		$quantreg = mysql_num_rows($link_conta); // Quantidade de registros pra paginação




	$quant_pg = ceil($quantreg/$numreg);
	$quant_pg++;

	if ( @$_GET['pg'] > 0){
		echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)." class=pg ><b>« Anterior</b></a>";
	} else {
		echo "anterior";
	}


	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {

	if (@$_GET['pg'] == ($i_pg-1)) {
		echo " <span class=pgoff>[$i_pg]</span> ";
	} else {
		$i_pg2 =$i_pg-1;
		echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
		}
	}

	if ((@$_GET['pg']+2) < $quant_pg) {
		echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." class=pg ><b>próximo »</b></a>";
	} else {
		echo "próximo";
	}


     while($res_links=mysql_fetch_array($link)){

$id = $res_links[0];
$data = $res_links[1];
$hora = $res_links[2];
$publicado = $res_links[3];
$titulo = $res_links[4];
$subtitulo = $res_links[5];
$autor = $res_links[6];
$foto = $res_links[7];
$comentario = $res_links[8];
$noticia = $res_links[9];
$categoria = $res_links[10];

$string = $titulo;

$string = preg_replace("[^a-zA-Z0-9_]", "", strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC-"));

?>

<table BGCOLOR='#e6e6e6' width='558'>
<tr><td>

<a href='desc_e.php?post=<?php echo $id; echo $string; ?>'><font face='calibri' size='4' color='#ba0000'><b> <?php echo $titulo; ?> </b></font></a>
</br>

<?php echo $subtitulo; ?>

</br>

<font face="calibri" size="2"> Publicado em <?php echo date('d/m/y', strtotime($data)) ?> às <?php echo $hora; ?> </font>

</td></tr>
</table>

</p>		

<?php

 }


?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você pegar o valor que está vindo do campo e usar na query que monta os dados...

 

$palavra = trim($_REQUES['palavra']);
WHERE palavra LIKE '%$palavra%'

 

LEMBRE-SE de filtrar o que vem nessa variável $palavra, pegar o que o usuário digita e jogar em uma query não é nada indicado (o exemplo que passei é apenas ilustrativo), lembre-se de passar nos links da paginação o valor da variável palavra tambémpois senão quando o cara clicar no link o filtro se perderá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você pegar o valor que está vindo do campo e usar na query que monta os dados...

 

$palavra = trim($_REQUES['palavra']);
WHERE palavra LIKE '%$palavra%'

 

LEMBRE-SE de filtrar o que vem nessa variável $palavra, pegar o que o usuário digita e jogar em uma query não é nada indicado (o exemplo que passei é apenas ilustrativo), lembre-se de passar nos links da paginação o valor da variável palavra tambémpois senão quando o cara clicar no link o filtro se perderá.

 

Cara ele tá fazendo a busca comforme o que digitamos, porem não entendi como jogar a variavel nos link. poderia me ajudar nessa? Muito obrigado

 

Basta você pegar o valor que está vindo do campo e usar na query que monta os dados...

 

$palavra = trim($_REQUES['palavra']);
WHERE palavra LIKE '%$palavra%'

 

LEMBRE-SE de filtrar o que vem nessa variável $palavra, pegar o que o usuário digita e jogar em uma query não é nada indicado (o exemplo que passei é apenas ilustrativo), lembre-se de passar nos links da paginação o valor da variável palavra tambémpois senão quando o cara clicar no link o filtro se perderá.

 

Cara ele tá fazendo a busca comforme o que digitamos, porem não entendi como jogar a variavel nos link. poderia me ajudar nessa? Muito obrigado

 

Basta você pegar o valor que está vindo do campo e usar na query que monta os dados...

 

$palavra = trim($_REQUES['palavra']);
WHERE palavra LIKE '%$palavra%'

 

LEMBRE-SE de filtrar o que vem nessa variável $palavra, pegar o que o usuário digita e jogar em uma query não é nada indicado (o exemplo que passei é apenas ilustrativo), lembre-se de passar nos links da paginação o valor da variável palavra tambémpois senão quando o cara clicar no link o filtro se perderá.

 

Cara ele tá fazendo a busca comforme o que digitamos, porem não entendi como jogar a variavel nos link. poderia me ajudar nessa? Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ele tá fazendo a busca comforme o que digitamos, porem não entendi como jogar a variavel nos link. poderia me ajudar nessa? Muito obrigado

Claro que posso! Ai vai um exemplo para você pensar e adequar a sua necessidade:

<?php
$variavel = 'alguma coisa';
echo '<a href="teste.html?link=teste&outro_link='.$variavel.'">Teste</a>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que posso! Ai vai um exemplo para você pensar e adequar a sua necessidade:

<?php
$variavel = 'alguma coisa';
echo '<a href="teste.html?link=teste&outro_link='.$variavel.'">Teste</a>';
?>

 

Cara eu acredito que to fazendo certo. mas poderia dá uma olhadinha, no trecho que to alterando?

 

 

$quant_pg = ceil($quantreg/$numreg);

$quant_pg++;

$palavra = 'buscar';

 

if ( @$_GET['pg'] > 0){

echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)."&outro_link='.$busca.' class=pg ><b>« Anterior</b></a>";

} else {

echo " ";

}

 

Então, ai chamei a variavel $palavra que é vinda da busca e no final do link de paginação adicionei o código. será isso? Mas num tá indo não. quando eu mudo de pagina ela aparece em branco. não guarda a busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ser por que você chamou a variavel $busca mais setou a variavel $palavra;

creio também que não há necessidade do $qant_pg++;

 

agora esta no caminho certo parabéns.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ser por que você chamou a variavel $busca mais setou a variavel $palavra;

creio também que não há necessidade do $qant_pg++;

 

agora esta no caminho certo parabéns.

 

Bom galera deu certinho. Tá ai o código completo. mas ainda tenho uma ultima questão a resover. Na verdade existe duas tabelas, com os mesmos campos só o que muda é o nome de cada uma. Como realizar essa busca nas duas tabelas?

 


<?php

$conexao = mysql_connect("HOST", "USER", "SENHA")
or die ("erro ao conectar");

$db = mysql_select_db("BANCO")
or die("erro ao selecionar banco");

// Recuperamos a ação enviada pelo formulário
$a = $_GET['a'];


?>

<?php

$numreg = 10; // Quantos registros por página vai ser mostrado
if (!isset($pg)) {
$pg = 0;
}

$inicial = @$_GET['pg'] * $numreg;



$link = mysql_query("SELECT 
		id,
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria 
		FROM coluna_esquerda_1 WHERE titulo LIKE '%$palavra%' ORDER BY id DESC LIMIT $inicial, $numreg");
?>

<?php

$link_conta = mysql_query("SELECT
		id,
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria
		FROM coluna_esquerda_1 WHERE titulo LIKE '%$palavra%'") or die(mysql_error());

		$quantreg = mysql_num_rows($link_conta); // Quantidade de registros pra paginação




	$quant_pg = ceil($quantreg/$numreg);
	$quant_pg++;


	if ( @$_GET['pg'] > 0){
		echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)."&palavra=$palavra class=pg ><b>« Anterior</b></a>";
	} else {
		echo " ";
	}


	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {

	if (@$_GET['pg'] == ($i_pg-1)) {
		echo " <span class=pgoff>[$i_pg]</span> ";
	} else {
		$i_pg2 =$i_pg-1;
		echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2&palavra=$palavra class=pg><b>$i_pg</b></a> ";
		}
	}

	if ((@$_GET['pg']+2) < $quant_pg) {
		echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)."&palavra=$palavra class=pg ><b>Próximo »</b></a>";
	} else {
		echo " ";
	}


     while($res_links=mysql_fetch_array($link)){

$id = $res_links[0];
$data = $res_links[1];
$hora = $res_links[2];
$publicado = $res_links[3];
$titulo = $res_links[4];
$subtitulo = $res_links[5];
$autor = $res_links[6];
$foto = $res_links[7];
$comentario = $res_links[8];
$noticia = $res_links[9];
$categoria = $res_links[10];

$string = $titulo;

$string = preg_replace("[^a-zA-Z0-9_]", "", strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC-"));

?>

<table BGCOLOR='#e6e6e6' width='558'>
<tr><td>

<a href='desc_e.php?post=<?php echo $id; echo $string; ?>'><font face='calibri' size='4' color='#ba0000'><b> <?php echo $titulo; ?> </b></font></a>
</br>

<?php echo $subtitulo; ?>

</br>

<font face="calibri" size="2"> Publicado em <?php echo date('d/m/y', strtotime($data)) ?> às <?php echo $hora; ?> </font>

</td></tr>
</table>

</p>		

<?php

 }


?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom se for buscar uma de cada vez dependendo do que o usuário pedir você pode passar via GET mesmo.

 

caso for sempre buscar nas duas tabelas você pode fazer outra consulta normal e guarda os 2 resultado em uma array e ir tratando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara também pensei que fosse assim mas num foi não. Ou o meu código acima ñ aceita. mas assim num dá.

O ideal é sempre você demonstrar como tentou, pois apenas postar "pensei que fosse" não ajuda em nada a elucidar o problema.

 

Por exemplo, pelo fato das duas tabelas terem nomes de colunas iguais, como você tratou isto? Deu aliases para os nomes de alguma das tabelas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal é sempre você demonstrar como tentou, pois apenas postar "pensei que fosse" não ajuda em nada a elucidar o problema.

 

Por exemplo, pelo fato das duas tabelas terem nomes de colunas iguais, como você tratou isto? Deu aliases para os nomes de alguma das tabelas?

 

cara na verdade só muito novo em php, to pegando como funciona a coisa. mas assim, fiz muitas pesquisa mas encontrei poucos resultado com relação ao que preciso. em todas as pesguisas ele mostra como você fez. mas no meu código ñ rola.

 

tenho duas tabelas.

 

coluna_esqueda_1

coluna_direita_1

 

e o conteúdo é o mesmo.

 

id

data

hora

publicado

titulo

subtitulo

autor

foto

comentario

noticia

categoria

mas ainda assim gera erro na busca.

 

Column 'id' in field list is ambiguous

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara na verdade só muito novo em php, to pegando como funciona a coisa. mas assim, fiz muitas pesquisa mas encontrei poucos resultado com relação ao que preciso. em todas as pesguisas ele mostra como você fez. mas no meu código ñ rola.

 

tenho duas tabelas.

 

coluna_esqueda_1

coluna_direita_1

 

e o conteúdo é o mesmo.

 

id

data

hora

publicado

titulo

subtitulo

autor

foto

comentario

noticia

categoria

mas ainda assim gera erro na busca.

 

Column 'id' in field list is ambiguous

Como eu disse antes, o fato das duas tabelas terem nomes iguais faz retornar este erro, pois existe duas colunas id e o mysql não tem como adivinhar qual delas você quer... então você vai ter que fazer algo do tipo

 

SELECT tabela1.id, tabela2.id as um_outro_nome_qualquer FROM tabela1, tabela2..

 

o "as" serve para dar um "apelido" para a coluna, assim se resolve o problema do nome ambíguo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse antes, o fato das duas tabelas terem nomes iguais faz retornar este erro, pois existe duas colunas id e o mysql não tem como adivinhar qual delas você quer... então você vai ter que fazer algo do tipo

 

SELECT tabela1.id, tabela2.id as um_outro_nome_qualquer FROM tabela1, tabela2..

 

o "as" serve para dar um "apelido" para a coluna, assim se resolve o problema do nome ambíguo.

 

entendi o que quer dizer. fiz da seguinte forma.

 


$link_conta = mysql_query("SELECT
coluna_esquerda_1.id,
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria, 
coluna_direita_1.id
		data,
		hora,
		publicado,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		categoria, as outra_tabela
		FROM coluna_esquerda_1, coluna_direita_1 WHERE titulo LIKE '%$palavra%'") or die(mysql_error());

 

 

mas tenho que ter o seguinte trecho por causa da busca. WHERE titulo LIKE '%$palavra%'"

 

só que ta apresentando este erro. será a versão do php? a minha é 5.3

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as outra_tabela FROM coluna_esquerda_1, coluna_direita_1 WHERE titulo LIKE '' at line 23

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.