Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
}
?>>
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.
http://forum.imasters.com.br/topic/192785-script-para-paginacao-bem-simples/
tenta ver como funciona e tenta adaptar
>
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
>
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.
>
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
}
?>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á.
>
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
>
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>';
?>>
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.
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.
>
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
}
?>FROM tabela1, tabela2
>
FROM tabela1, tabela2
cara também pensei que fosse assim mas num foi não. Ou o meu código acima ñ aceita. mas assim num dá.
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.
>
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?
>
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
>
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.
>
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
>
entendi o que quer dizer. fiz da seguinte forma.
Não, você não entendeu como funciona o aliases. Pesquise sobre isto.
>
só que ta apresentando este erro. será a versão do php? a minha é 5.3
O erro é sintaxe da query, não tem nada a ver com o PHP.
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.