Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alquém poderia me ajudar não está dando certo quando clico no proximo volta para apagina inicial se puder me dizer onde está o erro fico muito grato.
busca.php
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Palavra:<input type="text" name="palavra" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>
<br>
<br />
<?php
//######### INICIO Paginação
$numreg = 6; // Quantos registros por página vai ser mostrado
if (!isset($pg)) {
$pg = 0;
}
$inicial = $_GET['pg'] * $numreg;
//######### FIM dados Paginação
if(!empty($HTTP_POST_VARS[palavra])) {
$busca = explode(' ', $HTTP_POST_VARS['palavra']);
foreach($busca as $palavra){
// Faz o Select pegando o registro inicial até a quantidade de registros para página
$sql = mysql_query("select * from img WHERE tag LIKE '%".$palavra."%' LIMIT $inicial, $numreg");
// Serve para contar quantos registros você tem na sua tabela para fazer a paginação
$sql_conta = mysql_query("SELECT * FROM img WHERE tag LIKE '%".$palavra."%'");
$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
// conta quantos registros encontrados com a nossa especificação
if ($quantreg == 0) {
echo "Nenhum resultado para <b>$palavra</b>!<br><br>";
}
// se houver um resultado diz que existe um resultado
if ($quantreg == 1) {
echo "$quantreg resultado encontrado para <b>$palavra</b>!<br><br>";
}
// se houver um resultado diz que existe um resultado
if ($quantreg > 1) {
echo "$quantreg resultados encontrados para <b>$palavra</b>!<br><br>";
}
include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo
while ($aux = mysql_fetch_array($sql)) {
?>
<table width="400" border="0" align="center">
<tr align="left">
<td><? echo "<a href=\"imagem.php?link=".$aux[imagem]."\"><img src='/upload/$aux[imagem]' width=100 height=100 border=0/></a><br>" ?></td>
<td><?= $aux['tag']."<br>"; ?></td>
</tr>
</table>
<?
}
}
}
?>
paginacao.php
<style type="text/css">
<!--
.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Aqui começa a alteração
// faz o controle da quantidade de paginas irá mostrar em números na paginação
if (($pg - 3) < 1 ){
$ant = 1;
} else {
$ant = $pg - 3;
}
if (($pg + 6) > $quant_pg ) {
$pos = $quant_pg;
} else {
$pos = $pg + 6;
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=$ant;$i_pg < $pos;$i_pg++) {
// Aqui termina a alteração
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
}
}
// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
?>Como está ficando o HTML gerado por esse trecho aqui:
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
} e
// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
} ?
a diretiva register_globals está ativada?
if ( $pg > 0) { defina um:
$pg = $_GET['pg'];
if ( $pg > 0) { antes de começar a trabalhar com essa variável. Pois pelo que vi aqui rapidamente, o script está contando com o register_globals On
Além disto, você está usando HTTP_POST_VARS. Troque por $_POST.
http://br.php.net/manual/pt_BR/reserved.variables.post.php
Carlos Eduardo
Efetuei a troca minha host e 000webhost mesmo alterando quando busca aparece mais ao clicar na paginação retorna em busca.php em branco abaixo está o cogigo alterado e adicionei $palavra na paginação para ter o termo buscado vejá se está correto e se da para identificar o erro de não continuar a paginação.
busca.php
<?
$palavra = $_POST['palavra'];
if (!isset($_POST['pag'])){ //------- Se a página actual não estiver definida
$pag = 1; //------- Passa a estar, e é apresentada como sendo a 1ª.
}else{ //------- Se já estiver definida.
$pag = $_POST['pag']; //------- Usa-se a página que é.
}
$linhas_por_pag = 6; //-------Estamos a dizer quantos registos serão apresentados por página.
/*Definimos um principio para a busca na Base de Dados.
Que será a página($pag) X a quantidade de registo por página($linhas_por_pag) menos a mesma quantidade($linhas_por_página)*/
$inicio = (($pag*$linhas_por_pag) - $linhas_por_pag);
if (!empty($palavra)) {
//Fazemos a busca à base de dados limitando (LIMIT) a busca com $inicio e $linhas_por_pag préviamente definidos
$sql = mysql_query("SELECT * FROM img WHERE tag LIKE '%".$palavra."%' ORDER BY visitas DESC LIMIT $inicio, $linhas_por_pag");
?>
<table width="400" border="0" align="center" height="23">
<tr align="left">
<td height="19" width="104">Imagem</td>
<td height="19" width="282">
<p align="left">Descrição</p>
</td>
</tr>
</table>
<br>//Vamos buscar os dados à base de dados e adicionamos à tabela criada
while($row = mysql_fetch_array($sql)){
?>
<table width="400" border="0" align="center">
<tr align="left">
<td height="68" width="104"><? echo "<a href=imagem.php?link=$row[imagem]><img src='/upload/$row[imagem]' width=100 height=100 border=0/></a>" ?></td>
<td><p align="left"><? echo $row['tag']?></p></td>
</tr>
</table>
<?
}
$total_res = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM img WHERE tag LIKE '%".$palavra."%'"), 0);
echo "<br><br>";
// conta quantos registros encontrados com a nossa especificação
if ($total_res == 0) {
echo "Nenhum resultado para <b>$palavra</b>!<br><br>";
}
// se houver um resultado diz que existe um resultado
if ($total_res == 1) {
echo "Encontrado <b>$total_res</b> resultado encontrado para <b>$palavra</b>!<br><br>";
}
// se houver um resultado diz que existe um resultado
if ($total_res > 1) {
echo "Encontrados <b>$total_res</b> resultados encontrados para <b>$palavra</b>!<br><br>";
}
echo "<br><br>";
$quant_pg = ceil($total_res/$linhas_por_pag);
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo "<a href=busca.php?palavra=$palavra&pg=".($pg-1) ." class=pg><b>« anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Aqui começa a alteração
// faz o controle da quantidade de paginas irá mostrar em números na paginação
if (($pg - 3) < 1 ){
$ant = 1;
} else {
$ant = $pg - 3;
}
if (($pg + 6) > $quant_pg ) {
$pos = $quant_pg;
} else {
$pos = $pg + 6;
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=$ant;$i_pg < $pos;$i_pg++) {
// Aqui termina a alteração
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=busca.php?palavra=$palavra&pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
}
}
// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=busca.php?palavra=$palavra&pg=".($pg+1)." class=pg><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
}
?>Você está passando estas variáveis por $_POST mesmo?
$palavra = $_POST['palavra'];
if (!isset($_POST['pag'])){ //------- Se a página actual não estiver definida
$pag = 1; //------- Passa a estar, e é apresentada como sendo a 1ª.
}else{ //------- Se já estiver definida.
$pag = $_POST['pag']; //------- Usa-se a página que é.
}
Não seria por $_GET?
http://br.php.net/manual/pt_BR/reserved.variables.post.php
http://br.php.net/manual/pt_BR/reserved.variables.get.php
Carlos Eduardo
Sim já utilizei com $_GET e $_POST mais mesmo assim não passa a paginação.
Habilite todas as mensagens de erro, colocando este código no início do script.
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
Vai aparecer vários erros. Tente entender o que acontece de errado. O erro é simples, tente corrigir sozinho (para aprender também).
Carlos Eduardo
Movido:
>
Bom uso da área
Atenção:
Este subfórum é destinado apenas para postagem de scripts prontos e testados para auxiliar os demais membros.
Não é permitido a abertura de tópicos com dúvidas. Para isso, use o Fórum de PHP.
Laboratório de scripts (PHP) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif PHP - Patrocínio: TreinaWeb