Ir para conteúdo

POWERED BY:

Arquivado

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

egbmix

[Resolvido] erro na hora da busca

Recommended Posts

boa tarde á todos

Peguei um script de busca na net e adequei de acordo com o meu site, sendo que na hora da busca ele mostra os resultado corretos, sendo que quando é o resultado maior que o número de registros da página que no casa é igual a 10 quando eu clico no botão avançar ele mostra na página seguinte todos os registro no banco de dados o que devo fazer ?

 

abaixo vai o código:

conexão com o banco de dados ...

$busca = "SELECT * FROM tabela where name like '%".$_POST['busca']."%'";

$total_reg = "10"; // número de registros por página

if (!$pagina) {
    $pc = "1";
} else {
    $pc = $pagina;
}

$inicio = $pc - 1;
$inicio = $inicio * $total_reg;

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
$todos = mysql_query("$busca");

$tr = mysql_num_rows($todos); // verifica o número total de registros
$tp = $tr / $total_reg; // verifica o número total de páginas

// vamos criar a visualização
while ($linha = mysql_fetch_array($limite)) {
consulta while... 
	  

}

// agora vamos criar os botões "Anterior e próximo"
$anterior = $pc -1;
$proximo = $pc +1;
if ($pc>1) {
    echo " <div = align=\"center\"><a href='?pagina=$anterior'>Anterior</a> ";
}

if ($pc<$tp) {
    echo " <a href='?pagina=$proximo'>Próxima </a></div>";
}
mysql_close($conn);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que erro dá ?

 

 

tipo assim ele mostra os resultados corretamente mas quando o resultado ultrapassa o limite de registros na página que no caso é 10 ae quando eu clico no botão avançar ele mostra na página seguinte todos os registros do banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se isso aqui tambem ajuda :

 

Ao inves:

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
$todos = mysql_query("$busca");

tenta:

$limite = mysql_query("$busca LIMIT ".$inicio.",".$total_reg."");
$todos = mysql_query($busca);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o erro, aparentemente, pelo menos para mim, está aqui:

if (!$pagina) {

de onde teria que vir ?

hum.. provavelmente de:

?pagina=2...

 

e por ai em diante. Uma coisa que sempre esquecem, é do register_globals, que deve ficar Off

olhando aqui:

" <a href='?pagina=$proximo'>Próxima </a></div>";
confirma a minha hipótese.

 

Então o ajuste é:

 

trocar:

if (!$pagina) {
por:
$pagina = $_GET['pagina'];
if (!$pagina) {

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse aqui é o meu codigo , que estah funcionando direitinho]

 

 

<?php
    echo "<div id='meio2'>";
    $pesq = $_GET['pesq'];
//######### INICIO Paginação
        $numreg = 10; // Quantos registros por página vai ser mostrado
        $pg = isset($_GET['pg']) ?  (int)$_GET['pg'] : 0;
        $inicial = $pg * $numreg;
        
//######### FIM dados Paginação
        $busca2 = mysql_query("Select * from receitas where nome like ('%$pesq%')");        
                      
        // Faz o Select pegando o registro inicial até a quantidade de registros para página

//Sempre cuidar em sempre contatenar as vaiaveis fora das strings   
        $sql = mysql_query("SELECT * FROM receitas where nome like '%$pesq%' LIMIT ".$inicial.", ".$numreg."");
        
        $linhas = mysql_num_rows($busca2);
        
        if ($linhas == 0 ) {
            echo "<div class='h3'>Não foram encontradas receitas com a palavras \" ".$pesq." \"</s>";
        }
        elseif ($linhas == 1 ) {
            echo "<div class='h3'>Foi encontrada uma recenta!</div>";
        }
        elseif ($linhas > 1) {
            echo "<div class='h3'>Foram encontradas ".$linhas." receitas</div>";
        }
        echo "</div>";
                         
             
        echo "<br><br>"; // Vai servir só para dar uma alinha de espaço entre a paginação e o conteúdo
        echo "<br><br>";
        echo "$pesq";
        while ($aux = mysql_fetch_array($sql)){
                echo"<hr>";
                $id = $aux["codigo"];
                echo "<div class='texto'><strong>Nome : </strong><a href='receitas.php?codigo=".$id."'>".$aux["nome"]."</a><br /></div> ";
                }
  
  
  include("paginacao.php");// Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
  
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudei o if (!$pagina) mas continuou a mesma coisa.

 

Acabei de crer que o erro é na minha hospedagem pois este seu script está dando mesmo erro eu já tinha ele aqui em minha máquina.

 

já troque o if e continuou a mesma coisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, troca:

$busca = "SELECT * FROM tabela where name like '%".$_POST['busca']."%'";

$total_reg = "10"; // número de registros por página

if (!$pagina) {
    $pc = "1";
} else {
    $pc = $pagina;
}

$inicio = $pc - 1;
$inicio = $inicio * $total_reg;

$limite = mysql_query();
$todos = mysql_query("$busca");
por:

$busca = "SELECT * FROM tabela where name like '%{$_POST['busca']}%'";

	$total_reg = 10;
	$pc = !isset($_GET['pagina']) ? 1: (int)$_GET['pagina'];
	$inicio = ( $pc-1 )*$total_reg;
	
	$sql_limite = "{$busca LIMIT {$inicio}, {$total_reg}";
	$limite = mysql_query( $sql_limite )or die( mysql_query() );
	
	/* apenas para debug */
	echo $sql_limite,'<br />'; 
	var_dump( $_GET );
	/* apenas para debug */
	
	
	$todos = mysql_query( $busca );
navega pela paginação, e posta por aqui, para que possamos entender oque está acontecendo realmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP Parse error: syntax error, unexpected '?', expecting ',' or ')'

 

na linha:

$pc = !isset($_GET['pagina'] ? 1; (int)$_GET['pagina'];

Compartilhar este post


Link para o post
Compartilhar em outros sites
$pc = !isset($_GET['pagina']) ? 1 : (int)$_GET['pagina'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

$pc = !isset($_GET['pagina']) ? 1 : (int)$_GET['pagina'];

 

É isso mesmo quando eu digitei a linha esqueci de colocar o parenteses.

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.