Quando mando exibir todos os registros ele exbie sem problema algum.
Porém quando mando fazer uma consulta específica ele não funciona direito.
Por exemplo:
Tenho 68 registros cadastrados.
Mando realizar uma consulta para exibir somente nomes de funcionário que começam com a letra "A". Nesse caso existem 35 funcionários.
Até aí ele mostra 35 funcionário que começam com a letra A. Porém quando vou para a segunda página ele volta a exibir todos os 68 funcionários.
Vou postar os dois códigos: uma de paginação e outro sobre consulta.
Obrigado.
paginação.php
<?php
//Registros por página
$numreg = 5; // Quantos registros por página vai ser mostrado
if (!isset($_GET['pg'] )) {
$_GET['pg'] = 0;
}
$inicial = $_GET['pg'] * $numreg;
// PREPARANDO A QUERY COM OS FILTROS NECESSÁRIOS
$cCompQuery_Funcionario = "AND( A.NOM_FUNCIONARIO ) LIKE('".$_POST['txt_nome']."%')";
$cCompQuery_Campus = "AND A.COD_CAMPUS = '".$_POST['cmb_campus']."'";
$cCompQuery_Depto = "AND A.COD_DEPTO = '".$_POST['cmb_depto']."'";
if ( (trim($_POST['txt_nome']) == "") and ( trim($_POST['cmb_campus']) == 0) and ( trim($_POST['cmb_depto']) == 0) ) {
$cQuery = mysql_query(" SELECT A.COD_RAMAL
,B.NOM_FANTASIA
,C.DESC_CENTRO_CUSTO
,A.NOM_FUNCIONARIO
,A.DDD, A.TELEFONE, A.TELEFONE2
,A.IDT_FUNCAO
,A.IDT_RAMAL
,A.IDT_EMAIL
,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
limit $inicial, $numreg") or die (mysql_error());
$cQuery_contar1 = mysql_query (" SELECT A.COD_RAMAL
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL") or die (mysql_error());
$quantreg = mysql_num_rows($cQuery_contar1);
}else{
// EXECUTANDO A QUERY PARA BUSCA DAS INFORMAÇÕES CONFORME FILTRO SOLICITADO
$cQuery = mysql_query(" SELECT A.COD_RAMAL
,B.NOM_FANTASIA
,C.DESC_CENTRO_CUSTO
,A.NOM_FUNCIONARIO
,A.DDD, A.TELEFONE, A.TELEFONE2
,A.IDT_FUNCAO
,A.IDT_RAMAL
,A.IDT_EMAIL
,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
".$cCompQuery_Funcionario."
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
limit $inicial, $numreg") or die ("retornou vazio");
$cQuery_contar2 = mysql_query(" SELECT A.COD_RAMAL
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
".$cCompQuery_Funcionario."
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
") or die ("Nenhum resultado encontrado!");
$quantreg = mysql_num_rows($cQuery_contar2);
}
if ( (trim($_POST['txt_nome']) == "") and ( trim($_POST['cmb_campus']) != 0) and ( trim($_POST['cmb_depto']) == 0) ){
$cCompQuery_Campus = "AND A.COD_CAMPUS = '".$_POST['cmb_campus']."'";
// EXECUTANDO A QUERY PARA BUSCA DAS INFORMAÇÕES CONFORME FILTRO SOLICITADO
$cQuery = mysql_query(" SELECT A.COD_RAMAL
,B.NOM_FANTASIA
,C.DESC_CENTRO_CUSTO
,A.NOM_FUNCIONARIO
,A.DDD, A.TELEFONE, A.TELEFONE2
,A.IDT_FUNCAO
,A.IDT_RAMAL
,A.IDT_EMAIL
,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
".$cCompQuery_Campus."
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
limit $inicial, $numreg") or die ("Nenhum resultado encontrado!");
$cQuery_contar3 = mysql_query(" SELECT A.COD_RAMAL
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
".$cCompQuery_Campus."
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
") or die ("Nenhum resultado encontrado!");
$quantreg = mysql_num_rows($cQuery_contar3);
}
if ( (trim($_POST['txt_nome']) == "") and ( trim($_POST['cmb_campus']) != 0) and ( trim($_POST['cmb_depto']) != 0) ){
$cCompQuery_Campus = "AND A.COD_CAMPUS = '".$_POST['cmb_campus']."'";
$cCompQuery_Depto = "AND C.COD_CENTRO_CUSTO = '".$_POST['cmb_depto']."'";
// EXECUTANDO A QUERY PARA BUSCA DAS INFORMAÇÕES CONFORME FILTRO SOLICITADO
$cQuery = mysql_query(" SELECT A.COD_RAMAL
,B.NOM_FANTASIA
,C.DESC_CENTRO_CUSTO
,A.NOM_FUNCIONARIO
,A.DDD, A.TELEFONE, A.TELEFONE2
,A.IDT_FUNCAO
,A.IDT_RAMAL
,A.IDT_EMAIL
,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
".$cCompQuery_Campus."
".$cCompQuery_Depto."
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
limit $inicial, $numreg") or die (mysql_error());
$cQuery_contar4 = mysql_query(" SELECT A.COD_RAMAL
FROM ramais A
,empresas_filiais B
,centros_custos C
WHERE A.COD_CAMPUS = B.COD_EMPRESA
AND A.COD_DEPTO = C.COD_CENTRO_CUSTO
".$cCompQuery_Campus."
".$cCompQuery_Depto."
ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
") or die (mysql_error());
$quantreg = mysql_num_rows($cQuery_contar4);
}
// $quantreg = mysql_num_rows($cQuery_contar);
//Verifica total de registros encontrados
if ($quantreg > 1){
echo "<font color=#FFFFFF span class=Estilo12-norm-branco> Foram encontrados ".$quantreg." resultados<br></font>";
}else if ($quantreg < 1){
echo "<font color=#CCCCCC span class=Estilo12-norm-branco> Foi encontrado ".$quantreg." resultado<br></font>";
}else if ($quantreg = 1){
echo "<font color=#CCCCCC span class=Estilo12-norm-branco> Foi encontrado ".$quantreg." resultado<br></font>";;
}
?>
paginação.php
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;
// Verifica se esta na primeira página, se não estiver ele libera o link para anterior
if ( $_GET['pg'] > 0) {
echo "<a href=".$_SERVER['REQUEST_URI']."?action=$action&act=$act&pg=".($_GET['pg'] -1) ."&busca=$busca class=pg>« anterior</a>";
} else {
echo "<font color=#999999>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1;$i_pg<$quant_pg;$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['REQUEST_URI']."?action=$action&act=$act&pg=$i_pg2&busca=$busca class=pg>$i_pg</a> ";
}
}
// Verifica se esta na ultima página, se não estiver ele libera o link para próxima
if (($_GET['pg'] +2) < $quant_pg) {
echo "<a href=".$PHP_SELF."?action=$action&act=$act&pg=".($_GET['pg'] +1)."&busca=$busca class=pg>próximo »</a>";
} else {
echo "<font color=#999999>próximo »</font>";
}
?>
Pergunta
Anderson J Raimundo
Olá para todos.
Bom tenho problema com paginação.
É o seguinte.
Quando mando exibir todos os registros ele exbie sem problema algum.
Porém quando mando fazer uma consulta específica ele não funciona direito.
Por exemplo:
Tenho 68 registros cadastrados.
Mando realizar uma consulta para exibir somente nomes de funcionário que começam com a letra "A". Nesse caso existem 35 funcionários.
Até aí ele mostra 35 funcionário que começam com a letra A. Porém quando vou para a segunda página ele volta a exibir todos os 68 funcionários.
Vou postar os dois códigos: uma de paginação e outro sobre consulta.
Obrigado.
paginação.php
paginação.phpLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.