Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);>
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.
Tenta fazer isso aqui
ao inves disso :
$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
ponha:
$limite = mysql_query("$busca LIMIT ".$inicio.",".$total_reg."");
Não funcionou continua a mesmo coisa.
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);não funcionou.
sinceramente eu não entendo o script parece está correto.
$busca = $_POST["busca"];
$busca = "SELECT * FROM tabela where name like '%$busca%'";
e usa o q eu jah tinha escrito :D
ficamos na mesma
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: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 >>
?>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
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.PHP Parse error: syntax error, unexpected '?', expecting ',' or ')'
na linha:
$pc = !isset($_GET['pagina'] ? 1; (int)$_GET['pagina'];
$pc = !isset($_GET['pagina']) ? 1 : (int)$_GET['pagina'];
>
$pc = !isset($_GET['pagina']) ? 1 : (int)$_GET['pagina'];
É isso mesmo quando eu digitei a linha esqueci de colocar o parenteses.
Mas que erro dá ?