• 0
Sign in to follow this  
*FIT*

(Resolvido) Paginação

Question

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!!!

Edited by *FIT*

Share this post


Link to post
Share on other sites

24 answers to this question

Recommended Posts

  • 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()

Share this post


Link to post
Share on other sites
  • 0

cara...agradeço a sua ajuda....

mas não entendi muita não...rsrs

vou dar uma estudada no que você postou e ver se consigo entender.

Edited by *FIT*

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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'

Share this post


Link to post
Share on other sites
  • 0

bom....está dando esse erro, muito parecido com o outro...=/

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 '' at line 1

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other sites
  • 0

Parse error: syntax error, unexpected T_STRING in /home/restricted/home/eletricatakei1/public_html/NOVO/pesquisa.php on line 104

a linha 104 foi essa que especifiquei acima.

Share this post


Link to post
Share on other 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>

Edited by Renato Penna

Share this post


Link to post
Share on other 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???

Edited by *FIT*

Share this post


Link to post
Share on other 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.

Edited by Renato Penna

Share this post


Link to post
Share on other 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

Edited by *FIT*

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites
  • 0

Tira aqueles 3 pontos depois de $reg3 3 veja se dá erro. Se der, escreva aqui qual erro vai dar por favor. e no reg 3 veja se você colocou na sua tabela preço com c cedilha ou sem. Se tiver sem, corrija no seu código e colque com c.

Share this post


Link to post
Share on other sites
  • 0

então cara....mas ta dando erro na linha 130 é a linha do $reg1...

o resto ta td certinho...

será que não é esse ponto e virgula???

o erro aponta pra ele

Edited by *FIT*

Share this post


Link to post
Share on other sites
  • 0

o mesmo erro ainda...aquele que tinha postado antes...

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

=/

Share this post


Link to post
Share on other 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");

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by *FIT*

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this