Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Paginação


*FIT*

Pergunta

Ola galera...fiz um script de busca, mas não entendo nada de paginação...os itens da busca estão sendo exibidos um embaixo do outro, gostaria de exibir 9 por pagina, mais precisamente 3x3...alguém sabe como me ajudar? Vou deixar o script para vocês darem uma olhada!

<?

$conexao=mysql_connect('localhost','login','senha')OR DIE('erro 001'.mysql_error());
mysql_select_db('eletricatakei1',$conexao) or die ("erro 002" . mysql_error());

$pesquisa1=$_REQUEST["txtpesquisa"];

$result=mysql_query ("SELECT * FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' ORDER BY Codigo",$conexao) or die ("erro 001" . mysql_error());
$quantos=mysql_num_rows($result);
$i=0;
?>
e aqui a outra parte
<?
       
echo '<table border="0" width="120">';

for ($i==0; $i<$quantos; $i++)
{
echo '<tr><td>';
echo '<center>';?><img src="/Banco_imagens/Produtos/<? echo mysql_result($result,$i,Imagem)?>"width="100" height="100"/><?;echo '</center>';
echo '</td></tr><tr><td>';
echo '<center><pre><strong>';echo mysql_result($result,$i,Descricao);echo '</center></pre></strong>';
echo '</td></tr><tr><td>';
echo '<center><pre><strong>';echo mysql_result($result,$i,preço);echo '</center></pre></strong>';
echo '</td><tr>';

}
echo '</table>';
?>

Agradeço desde já. Uma Boa tarde a todos!!!

Editado por *FIT*
Link para o comentário
Compartilhar em outros sites

24 respostass a esta questão

Posts Recomendados

  • 0

Existem várias formas de se fazer paginação, como normalmente os frameworks php já vem com está funcionalidade você ao longo do tempo pouco vai mexer com isso.

Aqui vai uma forma simples de fazer "no dedão":

Calculo de registros a exibir e consulta

$num_regs_por_pagina = 10;
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
$consulta = "SELECT nome FROM tabela LIMIT $primeiro_registro, $num_por_pagina";
Recuperação de parametro de url
// assuma a url www.x.com/x.php?pagina=50
(!isset($_GET['pagina'])) ? ($pagina = 1) :($pagina = $_GET['pagina']);

Laço de repetição
[code]while($Row = mysql_fetch_object($consulta)){
echo $Row->nome."</br>";
}
Proxima e anterior
echo "<a href=\"".$_SERVER['PHP_SELF']."?pagina=".$_GET['pagina']-1."\"> Anterior <a>";
echo "<a href=\"".$_SERVER['PHP_SELF']."?pagina=".$_GET['pagina']+1."\"> Proxima <a>";

Faça suas implementações para evitar valores inesperados e funcionalidades que necessitem e tudo ok

// Se não tiver usando mysql a função para listagem muda para a função nativa do seu banco ou dbx_fetch_row()

Link para o comentário
Compartilhar em outros sites

  • 0

Bom...fiz mais ou menos assim...mas não deu certo....

<?

$conexao=mysql_connect('localhost','login','senha')OR DIE('erro 001'.mysql_error());
mysql_select_db('eletricatakei1',$conexao) or die ("erro 002" . mysql_error());

$pesquisa1=$_REQUEST["txtpesquisa"];

$num_regs_por_pagina = 10;
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;

$result=mysql_query ("SELECT * FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' LIMIT $primeiro_registro, $num_por_pagina ORDER BY Codigo",$conexao) or die ("erro 001" . mysql_error());
$quantos=mysql_num_rows($result);
$i=0;

?>
for ($i==0; $i<$quantos; $i++)
(!isset($_GET['pagina'])) ? ($pagina = 1) :($pagina = $_GET['pagina']);
while($Row = mysql_fetch_object($result)){
echo $Row->Codigo."</br>";
}
{
echo '<tr><td>';
echo '<center>';?><img src="/Banco_imagens/Produtos/<? echo mysql_result($result,$i,Imagem)?>"width="100" height="100"/><?;echo '</center>';
echo '</td></tr><tr><td>';
echo '<center><pre><strong>';echo mysql_result($result,$i,Descricao);echo '</center></pre></strong>';
echo '</td></tr><tr><td>';
echo '<center><pre><strong>';echo mysql_result($result,$i,preço);echo '</center></pre></strong>';
echo '</td><tr>';

}
echo '</table>';

Ai apareceu esse erro...

erro 001You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY Codigo' at line 1

qual a besteira que fiz de errado? rs

Link para o comentário
Compartilhar em outros sites

  • 0

A instrução ORDER BY do sql fica antes da instrução LIMIT

SELECT * FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' ORDER BY Codigo LIMIT '$primeiro_registro', '$num_por_pagina'

Link para o comentário
Compartilhar em outros sites

  • 0

Olha aqui no fórum quando vou responder uma pergunta tento passar a logica para as pessoas de maneira rápida pois são muitas perguntas, não me entenda mal mas este erro é de sintaxe e está na cara. Como dissem os sábios melhor ensinar a pescar do que dar o peixe, então da uma olhada aqui: http://dev.mysql.com/doc/refman/4.1/pt/mysql-indexes.html.

Caso não consiga, use o phpmyadmin, sqlyog ou programa similar para criar sua instrução sql.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim sim, por favor, nunca me de a resposta direto, gosto de aprender, apenas copiar e colar e não saber o que está fazendo não ajuda em nada em nosso conhecimento.

Já estou usando phpmyadmin, que faz parte do pacote assinado pela locaweb, por isso não entendo o erro, mas vou dar uma estudada para ver o que consigo fazer. Obrigado Norivan

Link para o comentário
Compartilhar em outros sites

  • 0

já resolvi aquele probleminha ^^

editei um pouco o script, mas não sei o que fiz de errado, pois esta dando um outro erro

if (!isset($_GET["pag"]))
$pagina = 1;
else
$pagina=$_GET["pag"];
$registroInicial =($pagina – 1)* 9;

$result=mysql_query ("SELECT * FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' ORDER BY Codigo".$registroinicial.",9";,$conexao) or die ("erro 001" . mysql_error());
$quantos=mysql_num_rows($result);
$i=0;
?>

esta acusando erro nessa linha, mas não consigo entender o porque...

$registroInicial =($pagina – 1)* 9;

Link para o comentário
Compartilhar em outros sites

  • 0

Usa esse código...

<?php
                    $sql = mysql_query ("SELECT * FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' ORDER BY Codigo",$conexao) or die ("erro 001" . mysql_error());

                    $pagina = $_GET["pagina"];

                $registros = mysql_num_rows($sql);
                
                $registros_pagina=10;
                    
                if($registros > $registros_pagina)
                {
                    $qtd_paginas = $registros / $registros_pagina;
                    $qtd_paginas = ceil($qtd_paginas);
                }
                else
                    $qtd_paginas=1;
                    
                if($pagina < $qtd_paginas)
                    $registros_pagina = 10;
                else
                    $registros_pagina = $registros - ($pagina-1)*$registros_pagina;
                    
                if($pagina > 1)
                    $registros_passados = ($pagina-1) * 10;
                else
                    $registros_passados = 0;
            
                $inicio = $registros_passados;
                $fim = $inicio + $registros_pagina;

                for($i=$inicio;$i<$fim;$i++)
                {
                                     $reg1 = mysql_result($sql;$i<$registros;$i++);
                                     $reg2 = mysql_result($sql;$i<$registros;$i++);
                                     $reg3 = mysql_result($sql;$i<$registros;$i++);
                                     ...
                }
?>
<table>
    <tr>
        <td align="center">
            <?php
            if($pagina > 1)
            {
            ?>
                <a href="nome_pagina.php?pagina=<?php echo $pagina-1;  ?>"><== Anterior</a>
            <?php
            }
            ?>
        </td>
        <td align="center">
            <?php
            if($pagina < $qtd_paginas)
            {
            ?>
                <a href="nome_pagina.php?pagina=<?php echo $pagina+1; ?>">Pr&oacute;xima ==></a>
            <?php
            }
            ?>
        </td>
    </tr>
</table>

Editado por Renato Penna
Link para o comentário
Compartilhar em outros sites

  • 0

Opa Renato, valeu ai pela força.

mas está dando um erro nessa parte

$reg1 = mysql_result($sql;$i<$registros;$i++);
                                     $reg2 = mysql_result($sql;$i<$registros;$i++);
                                     $reg3 = mysql_result($sql;$i<$registros;$i++);

Vou tentar aqui descobrir o que é....mas se já souber agradeço.

o erro é esse

Parse error: syntax error, unexpected ';' in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 130

será que ta dando um erro nesses pontos e virgulas???

Editado por *FIT*
Link para o comentário
Compartilhar em outros sites

  • 0

ih rapaz, desculpa o erro foi meu. Não é assim que se usa a função mysql_result. É assim olha. Digamos que o comando SQL que você quer executar seja...

$sql = mysql_query ("SELECT nome, desc, preço FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' ORDER BY Codigo",$conexao) or die ("erro 001" . mysql_error());
então nesse caso o mysql_result seria...
$reg1 = mysql_result($sql,$i,"nome");
$reg2 = mysql_result($sql,$i,"desc");
$reg3 = mysql_result($sql,$i,"preço");
e se você quisesse colocar mais ítens no SELECT do SQL como estoque, qtd_prod_vendidos seria só colocar
$reg4 = mysql_result($sql,$i,"estoque");
$reg5 = mysql_result($sql,$i,"qtd_prod_vendidos");

e assim por diante... Entendeu ? Desculpa aí pelo erro.

Editado por Renato Penna
Link para o comentário
Compartilhar em outros sites

  • 0
Entendeu ? Desculpa aí pelo erro.

Que isso cara...precisa se desculpar não...eu que te devo desculpas por estar "enchendo um pouco o saco" ai.

mas ainda está dando o mesmo erro e na mesma linha....=/

Agradeço

Editado por *FIT*
Link para o comentário
Compartilhar em outros sites

  • 0

$pesquisa1=$_REQUEST["txtpesquisa"];

 $sql = mysql_query ("SELECT * FROM Produtos WHERE Descricao LIKE '%$pesquisa1%' ORDER BY Codigo",$conexao) or die ("erro 001" . mysql_error());

                    $pagina = $_GET["pagina"];

                $registros = mysql_num_rows($sql);
                
                $registros_pagina=10;
                    
                if($registros > $registros_pagina)
                {
                    $qtd_paginas = $registros / $registros_pagina;
                    $qtd_paginas = ceil($qtd_paginas);
                }
                else
                    $qtd_paginas=1;
                    
                if($pagina < $qtd_paginas)
                    $registros_pagina = 10;
                else
                    $registros_pagina = $registros - ($pagina-1)*$registros_pagina;
                    
                if($pagina > 1)
                    $registros_passados = ($pagina-1) * 10;
                else
                    $registros_passados = 0;
            
                $inicio = $registros_passados;
                $fim = $inicio + $registros_pagina;
                for($i=$inicio;$i<$fim;$i++)
                {
                                     $reg1 = mysql_result($sql;$i,"Imagem");
                                     $reg2 = mysql_result($sql;$i,"Descricao");
                                     $reg3 = mysql_result($sql;$i,"preço");
                                     ...
                }
?>

ficou assim...

Link para o comentário
Compartilhar em outros sites

  • 0
ah sim, agora que eu vi. O separador do mysql_result é vírgula, então coloque

$reg1 = mysql_result($sql,$i,"Imagem");
$reg2 = mysql_result($sql,$i,"Descricao");
$reg3 = mysql_result($sql,$i,"preço");

olha o tamanho desse erro...kkkk

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 3 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 3 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 3 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 4 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 4 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 4 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 5 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 5 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 5 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 6 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 6 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 6 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 7 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 7 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 7 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 8 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 8 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 8 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 9 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 173

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 9 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 174

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 9 on MySQL result index 3 in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 175

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 182

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 184

cara...to ficando louco já....nen sei mas o que faço

Link para o comentário
Compartilhar em outros sites

  • 0

só um ultima duvida..antes de fechar o tópico...

se alguma imagen não estiver cadastrada no banco...pode dar erro na hora da busca?

bom...já coloquei as fotos...

mas esta dando esse erro

Fatal error: Call to undefined function 00010.jpg() in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 181

Editado por *FIT*
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...