Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal do iMasters...
Peço novamente ajuda esta quase pronto só falta uma mãozinha...
Vamos lá, vou postar todo o código...
Tabela:
CREATE TABLE `produtos` (
`ID` int(11) NOT NULL auto_increment,
`PRODUTO` varchar(255) default '',
`SETOR` varchar(200) default NULL,
`DESCRICAO` varchar(255) default '',
`IMAGEM` text,
`EXIBIR` char(1) NOT NULL default '1',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16;
index.php:
<title>Index</title>
</head>
<body>
<style type="text/css">
*{
margin:0;
padding:0;
list-style:none;
}
#menu {
font: Arial;
background:#ccc;
padding: 3px;
width: 167px;
}
#menu ul li {
display:block;
background:#fff;
margin: 3px;
}
#menu ul li a {
height:20px;
padding: 2px;
border-left:10px #A4D1FF solid;
display:block;
text-decoration:none;
color:#000000;
}
#menu ul li a:hover {
border-color:#999;
text-decoration: underline;
}
</style>
<div id="menu">
<ul>
<li><a href="pagina.php?setor=1">Esportivo</a></li>
<li><a href="pagina.php?setor=2">Informática</a></li>
<li><a href="pagina.php?setor=3">Alimentação</a></li>
<li><a href="pagina.php?setor=4">Sites</a></li>
</ul>
</div>
</body>
</html>
pagina.pgp
<?php
//Conexão com o banco:
mysql_connect("localhost","root","");
mysql_select_db("teste1");
//Inicio da Paginação
$numreg = 3; // Quantos registros por página vai ser mostrado
if (!isset($pg)) {
$pg = 0;
}
$inicial = @$_GET['pg'] * $numreg;// faz o Select do setor escolhido no menu
$setor = $_GET['setor'];
// Faz o Select pegando o registro inicial até a quantidade de registros para página
$sql = mysql_query("select * from produtos WHERE setor='$setor'LIMIT $inicial, $numreg");
// Faz o Select pegando a imagem para página
$sql_imagem = mysql_query("SELECT imagem FROM produtos WHERE setor='$setor'");
// Serve para contar quantos registros você tem na seua tabela para fazer a paginação
$sql_conta = mysql_query("SELECT * FROM produtos WHERE setor='$setor'");
$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
$quant_pagin = ceil($quantreg/$numreg); // Quantidade de paginas
while ($imagem = mysql_fetch_array($sql)) { //retornar as linhas da consulta ao MySQL
echo "<tr><td width='5%' valign='top'><div align='center'>";
echo "Setor: ".$imagem["SETOR"], "</a>", "<br/>";
echo "Produto: ".$imagem["PRODUTO"], "</a>", "<br/>";
echo "Descricao: ".$imagem["DESCRICAO"], "</a>", "<br/>";
print("<tr><td width='5%' valign='top'><div align='center'><img src='img_noticias/$imagem[IMAGEM]' alt='sem imagem' width='70' height='60'></div></td></td></tr>");
print("<tr><td colspan=' 2'><div align='left'><hr></div></td></tr>");
echo "</td></tr>";
}
echo "<p>Encontrado(s): "."<b>"."$quantreg"."</b>"." registros"."</p>";
echo "<p>Listando Total de: "."<b>"."$quant_pagin"."</b>"." página(s)"."</p>";
include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Página</title>
</head>
<body>
</body>
</html><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_pagin = ceil($quantreg/$numreg);
$quant_pagin++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( @$_GET['quant_pagin'] > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['quant_pagin']-1)." class=pg ><b>« Anterior</b></a>";echo "<font color=#CCCCCC>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1; $i_pg<$quant_pagin;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if (@$_GET['quant_pagin'] == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$_SERVER['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 ((@$_GET['pg']+2) < $quant_pagin) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['quant_pagin']+1)." class=pg ><b>próximo »</b></a>";echo "<font color=#CCCCCC>próximo »</font>";
}
?><html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Paginacao</title>
</head>
<body>
</body>
</html>Até aqui tudo funciona normal, estou feliz porque é meu primeiro código e com a ajuda de voces do forum consegui fazer o que queria, listar por setor.
quando clico no setor 1 lista todos os produtos do setor 1 e assim por diante, me aparece o numero de registro e numero de paginas corretos...
O problema ta na paginação, quando clico em próxima página aparece esse código...
Notice: Undefined index: setor in C:\EasyPHP 2.0b1\www\testepaginacao_OK\pagina.php on line 17
Encontrado(s): 0 registros
Listando Total de: 0 página(s)
Como posso resolver esse problemão...
Obrigado a todos que me ajudaram e que vão me ajudar...
Fui...
« anteriorpróximo »
O erro ocorre pois você não está passando o parâmetro setor.
Acrescente &setor=$setor no fim de seus links.
Ex.:
<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['quant_pagin']-1)."&setor=$setor class=pg >
Desculpe-me pela postagem no lugar errado Mario valew!!!
Obrigado avzuben por ter respondido ao meu post mas ainda continua dando a mensagem de:
Undefined index: setor in C:
acho que então não estou sabendo mandar informações pela minha index, o fato é que a primeira pagina vai certo é depois que não pega mais o parametro .
Fiz como você falou:
<?php
$quant_pagin = ceil($quantreg/$numreg);
$quant_pagin++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( @$_GET['pg'] > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['quant_pagin']-1)."&setor=$setor class=pg ><b>« Anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1; $i_pg<$quant_pagin;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if (@$_GET['pg'] == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 &setor=$setor 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 ((@$_GET['pg']+2) < $quant_pagin) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." &setor=$setor class=pg ><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Paginacao</title>
</head>
<body>
</body>
</html>
mas mesmo assim obrigado valew...
Poderia fazer uma página para cada setor então colocaria setor=1 ou setor=2 e assim por diante na página mas pensei que se tipo vira-se um portal por exemplo esse exemplo teria que fazer muitos setores e muitas páginas por setor e do geito que quero não, faria uma só que me desse todo o resultado do banco.
Obrigado a todos...
Fui...
Desculpe-me pela postagem no lugar errado Mario valew!!!
Obrigado avzuben por ter respondido ao meu post mas ainda continua dando a mensagem de:
Undefined index: setor in C:
acho que então não estou sabendo mandar informações pela minha index, o fato é que a primeira pagina vai certo é depois que não pega mais o parametro .
Fiz como você falou:
<?php
$quant_pagin = ceil($quantreg/$numreg);
$quant_pagin++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( @$_GET['pg'] > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['quant_pagin']-1)."&setor=$setor class=pg ><b>« Anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1; $i_pg<$quant_pagin;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if (@$_GET['pg'] == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 &setor=$setor 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 ((@$_GET['pg']+2) < $quant_pagin) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." &setor=$setor class=pg ><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Paginacao</title>
</head>
<body>
</body>
</html>
mas mesmo assim obrigado valew...
Poderia fazer uma página para cada setor então colocaria setor=1 ou setor=2 e assim por diante na página mas pensei que se tipo vira-se um portal por exemplo esse exemplo teria que fazer muitos setores e muitas páginas por setor e do geito que quero não, faria uma só que me desse todo o resultado do banco.
Obrigado a todos...
Fui...
Desculpe-me pela postagem no lugar errado Mario valew!!!
Obrigado avzuben por ter respondido ao meu post mas ainda continua dando a mensagem de:
Undefined index: setor in C:
acho que então não estou sabendo mandar informações pela minha index, o fato é que a primeira pagina vai certo é depois que não pega mais o parametro .
Fiz como você falou:
<?php
$quant_pagin = ceil($quantreg/$numreg);
$quant_pagin++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( @$_GET['pg'] > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['quant_pagin']-1)."&setor=$setor class=pg ><b>« Anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1; $i_pg<$quant_pagin;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if (@$_GET['pg'] == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 &setor=$setor 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 ((@$_GET['pg']+2) < $quant_pagin) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." &setor=$setor class=pg ><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Paginacao</title>
</head>
<body>
</body>
</html>
mas mesmo assim obrigado valew...
Poderia fazer uma página para cada setor então colocaria setor=1 ou setor=2 e assim por diante na página mas pensei que se tipo vira-se um portal por exemplo esse exemplo teria que fazer muitos setores e muitas páginas por setor e do geito que quero não, faria uma só que me desse todo o resultado do banco.
Obrigado a todos...
Fui...
echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 &setor=$setor class=pg><b>$i_pg</b></a> ";
Repare que você colocou um espaço entre ?pg=$i_pg2 e &setor=$setor.
Tente desse jeito:
echo " <a href=".$_SERVER['PHP_SELF']."?pg=".$i_pg2."&setor=".$setor." class=pg><b>$i_pg</b></a> ";
A url teria que ficar parecida com pagina.php?pg=1&setor=2.Valew avzuben...
Deu certo... Obrigado pela força, como sempre digo espero ficar bamba assim pra poder ajudar aqueles que precisam...
Mas só esta pegando os primeiros registros, mas a paginação esta funfando legal...
Deixa comigo que vou estudar direitinho o código e ver o porque esta acontecendo isso...
Estou louco pra postar esse código aqui pra quem precisar, mas redondinho e resolvido...
Valew...
Fui...
Valew avzuben...
Agora sim deu certo...
Não estava paginando porque não encontrava o registro inicial para paginar.
Só troquei esta linha:
$sql = mysql_query("select * from produtos WHERE setor='$setor'LIMIT $numreg");
por esta:
$sql = mysql_query("select * from produtos WHERE setor='$setor'LIMIT $inicial, $numreg");
e funciono que é uma beleza...
Logo posto o código inteiro e corrigido ai pra quem quiser...
Post OK...
Conforme o aviso existente no fórum de origem deste post, não é permitida a postagem de dúvidas nesta área, motivo pelo qual este tópico será movido para o fórum principal deste assunto.
Tópico Movido
Origem: Laboratório de scripts (PHP) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Destino: PHP