Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda com paginacao


wmo.btu

Pergunta

validaGuia.php

if(($comboEspecialidade == 1) and ($comboCidade == 1) and ($txtMedico == ""))

{

$sql1 = "SELECT m.idMedico, m.nome, m.endereco, m.bairro, m.cep, m.telefone, e.nomeEspecialidade, c.nomeCidade FROM medico as m, especialidade as e, cidade as c WHERE m.idEspecialidade = e.idEspecialidade AND m.idCidade = c.idCidade";

$query = mysql_query($sql1);

$y = 0;

while($num = mysql_fetch_array($query))

{

$_SESSION["retCod"][$y] = $num["idMedico"];

$_SESSION["retNome"][$y] = $num["nome"];

$_SESSION["retNomeEspecialidade"][$y] = $num['nomeEspecialidade'];

$_SESSION["retEndereco"][$y] = $num['endereco'];

$_SESSION["retBairro"][$y] = $num['bairro'];

$_SESSION["retNomeCidade"][$y] = $num['nomeCidade'];

$_SESSION["retCep"][$y] = $num['cep'];

$_SESSION["retTelefone"][$y] = $num['telefone'];

$y++;

}

$_SESSION["cont"] = $y;

//echo = $_SESSION["retNome"][$y];

header("Location: guia.php?comboPlano=$comboPlano&comboEspecialidade=$comboEspecialidade&comboCidade=$comboCidade&txtMedico=$txtMedico&btnEnviar=Enviar");

}

guia.php

<?php

if(isset($_GET["btnEnviar"]))

{

$x = 0;

while($x < $_SESSION["cont"])

{

$cod = $_SESSION["retCod"][$x];

?>

<table width=457" border="0" cellspacing="2" cellpadding="2">

<tr>

<td width="101">Nome:</td>

<td width="272"><?php echo $_SESSION["retNome][$x];?></td>

<td width=64"> </td>

</tr>

<tr>

<td>Especialidade:</td>

<td><?php echo $_SESSION["retNomeEspecialidade][$x]; ?></td>

<td> </td>

</tr>

<tr>

<td>Endereço:</td>

<td><?php echo $_SESSION["retEndereco"][$x]; ?></td>

<td><a href=mapa.php?cod=<?php echo $cod; ?>"><img src="img/mapa.png"></a></td>

</tr>

<tr>

<td>Bairro:</td>

<td><?php echo $_SESSION["retBairro][$x];?></td>

<td> </td>

</tr>

<tr>

<td>Cidade:</td>

<td><?php echo $_SESSION["retNomeCidade"][$x]; ?></td>

<td> </td>

</tr>

<tr>

<td>Cep:</td>

<td><?php echo $_SESSION["retCep"][$x]; ?></td>

<td> </td>

</tr>

<tr>

<td>Telefone</td>

<td><?php echo $_SESSION["retTelefone"][$x];?></td>

<td> </td>

</tr>

<tr>

<td> </td>

<td> </td>

<td> </td>

</tr>

</table>

<?php

$x++;

}

}

?>

pessoal gostaria de colocar paginação na pagina guia.php, os dados são enviados para a página validaGuia.php e são retornados para a pagina guia.php onde são exibidos, como páginar?

Obrigado

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Galera meu código para paginação está assim porém não está paginando corretamente, se alguém puder ajudar, acredito que falte algum detalhe q está passando.

Valeu

<?php

session_start();

$con = mysql_connect("localhost", "root", "") or dir ("Erro ao conectar no Banco");

$base = mysql_select_db("guia",$con);

$comboPlano = $_GET['comboPlano'];

$comboEspecialidade = $_GET['comboEspecialidade'];

$comboCidade = $_GET['comboCidade'];

$txtMedico = $_GET['txtMedico'];

if(($comboEspecialidade == 1) and ($comboCidade == 1) and ($txtMedico == ""))

{

$numreg = 1; // Quantos registros por página vai ser mostrado

if (!isset($pg))

{

$pg = 0;

}

else

{

$pg = $_GET['pg'];

}

$inicial = $pg * $numreg;

$sql1 = "SELECT m.idMedico, m.nome, m.endereco, m.bairro, m.cep, m.telefone, e.nomeEspecialidade, c.nomeCidade FROM medico as m, especialidade as e, cidade as c WHERE m.idEspecialidade = e.idEspecialidade AND m.idCidade = c.idCidade LIMIT $inicial, $numreg";

$query = mysql_query($sql1);

$quantreg1 = mysql_num_rows($query);

if ($quantreg1 > 0)

{

$quantreg1 -= 1;

}

// Serve para contar quantos registros você tem na seua tabela para fazer a paginação

$sql_conta = mysql_query("SELECT m.idMedico, m.nome, m.endereco, m.bairro, m.cep, m.telefone, e.nomeEspecialidade, c.nomeCidade FROM medico as m, especialidade as e, cidade as c WHERE m.idEspecialidade = e.idEspecialidade AND m.idCidade = c.idCidade");

$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação

$_SESSION["quantreg"] = $quantreg;

echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo

while($num = mysql_fetch_array($sql_conta)) // galera o problema ta aqui, pois quando coloco $sql_conta, ele trás todos o meus registro e não divide por páginas, agora quando coloco $query ele coloca apenas 1 registro pois é o limite dado no SQL, porém os outros registros não aparecem na paginação.

{

echo $num["nome"];

echo $num["nomeEspecialidade"];

}

include("paginacao.php");

}

?>

paginacao.php

<?php

$numreg = 1;

$quantreg = $_SESSION["quantreg"];

$quant_pg = ceil($quantreg/$numreg);

$quant_pg++;

if(isset($_GET["btnEnviar"]))

{

$pg = $_GET["pg"];

}

// Verifica se esta na primeira página, se não estiver ele libera o link para anterior

if(isset($_GET["btnEnviar"]))

{

if ( $pg > 0)

{

echo "<a href=.$_SERVER['PHP_SELF] ."?comboPlano=1&comboEspecialidade=1&comboCidade=1&txtMedico=&btnEnviar=Enviar&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=.$_SERVER['PHP_SELF] ."?comboPlano=1&comboEspecialidade=1&comboCidade=1&txtMedico=&btnEnviar=Enviar&pg=$i_pg2 class=pg><b>$i_pg</b></a> ";

}

}

// Verifica se esta na ultima página, se não estiver ele libera o link para próxima

if (($pg+2) < $quant_pg)

{

echo "<a href=".$_SERVER['PHP_SELF'] ."?comboPlano=1&comboEspecialidade=1&comboCidade=1&txtMedico=&btnEnviar=Enviar&pg=".($pg+1)." class=pg><b>proximo »</b></a>";

}

else

{

echo "<font color=#CCCCCC>proximo »</font>";

}

}

?>

Editado por wmo.btu
Link para o comentário
Compartilhar em outros sites

  • 0

para paginar é muito simples:

<?php


//você primeiro deve definir a quantidade de registros que quer exibir na página:

$max = 10;

//depois definir a requisição da página inicial com primeira(1)
$pagina = $_REQUEST["pagina"];  
if($pagina == "") {  
    $pagina = 1;  
} 

//organizar a paginação
$inicio = $pagina - 1;
$inicio = $max * $inicio;

//depois você pega o total de registros que irá paginar
$sql_total = mysql_query("select * from tabela where 1");
$total=mysql_num_rows($sql_total);  

//depois pagina esse registro
$sql_paginado = mysql_query("select * from tabela where 1 Limit $inicio, $max");


//você pode acrescentar outras querys nesta variável ou deixar em branco igual o comentado abaixo:
//$outras_querys='';

$outras_querys='id=aaaa&sessao=bbbb&categoria=cccc';


if($outras_querys!='')
$outras_querys.='&';
//AQUI você FAZ O WHILE E MOSTRA OS REGISTROS

while($rs=mysql_fetch_array($sql_paginado)){

echo 'campo1: '.$rs[1].'<br>';
echo 'campo2: '.$rs[2].'<br>';
echo 'campo3: '.$rs[3].'<br>';

}


//AQUI ENTRA O NAVEGADOR DAS PÁGINAS
echo "<div align=center style=\"display:block; padding:6px;clear:both\">";
// Calculando pagina anterior
$menos = $pagina - 1;
// Calculando pagina posterior
$mais = $pagina + 1;
$pgs = ceil($total / $max);
if($pgs > 1 ) 
{
if($menos >0) 
echo "<a href=\"?".$outras_querys."pagina=$menos\" class='texto_paginacao'>« Anterior</a> "; 

if (($pagina-4) < 1 )
$anterior = 1;
else 
$anterior = $pagina-4;

if (($pagina+4) > $pgs )
$posterior = $pgs;
else
$posterior = $pagina + 4;

for($i=$anterior;$i <= $posterior; $i++) 
if($i != $pagina) 
echo " <a href=\"?".$outras_querys."pagina=".($i)."\" class='texto_paginacao'>$i</a>";
else
echo " <strong class='texto_paginacao_pgatual'>".$i."</strong>";

if($mais <= $pgs) 
echo " <a href=\"?".$outras_querys."pagina=$mais\" class='texto_paginacao'>Próxima »</a>";
}
echo "</div>";

?>

Editado por Ivan Ferrer
Link para o comentário
Compartilhar em outros sites

  • 0

PS: você pode usar o AC_Pagination também:

eu fiz algumas modificações veja:

classe AC_Pagination (arquivo AC_Pagination.php):

<?php
if (isset($_POST['AC_Pagination_Page'])) {
if ($_POST['AC_Pagination_Page'] < 1)
$_POST['AC_Pagination_Page'] = 1;
elseif ($_POST['AC_Pagination_Page'] > $_POST['AC_Pagination_Pages'])
$_POST['AC_Pagination_Page'] = $_POST['AC_Pagination_Pages'];
header('Location: ' . str_replace(':page', $_POST['AC_Pagination_Page'], $_POST['AC_Pagination_URL']));
exit;
}
class AC_Pagination {
public $url = null;
public $page = 1;
public $limit = 10;
public $xhtml = true;
public $count = 0;
public $query_count = null;
public $ol_start = 1;
public $pages = 0;
private function get_count($query, $link_identifier) {
if ($this->query_count == null)
$this->query_count = 'SELECT COUNT(*) ' . substr($query, stripos($query, ' FROM '));
$count = mysql_query($this->query_count, $link_identifier);
$count = mysql_fetch_assoc($count);
return $count['COUNT(*)'];
}
public function query($query = null, $link_identifier = false) {
if ($this->page < 1 or !is_numeric($this->page))
$this->page = 1;
if(!is_numeric($this->limit))
$this->limit = 10;
$this->count = $this->get_count($query, $link_identifier);
$this->pages = ceil($this->count / $this->limit);
$begin = ($this->page - 1) * $this->limit;
$this->ol_start = $begin + 1;
$query .= ' LIMIT ' . $begin . ', ' . $this->limit;
return mysql_query($query, $link_identifier);
}
public function pagination() {
if ($this->page > 1)
echo '<a href="' . str_replace(':page', ($this->page - 1), $this->url) . '">« Anterior</a> ';
echo '<span class="pagina">Pág.</span> <span class="atual">' . $this->page . ' ' . $close_tag . '</span> de <span class="total">' . $this->pages . '</span>';
if ($this->page < $this->pages)
echo ' <a href="' . str_replace(':page', ($this->page + 1), $this->url) . '">Próxima »</a>';
}
}
?>
E o arquivo que irá paginar seus registros:
<?php
date_default_timezone_set('America/Sao_Paulo');
// Deve ser incluido antes de qualquer saída de texto
include 'AC_Pagination.php';

//configurações do banco de dados
$servidor='localhost';
$banco = 'nome_da_base';
$usuario = 'root';
$senha_banco = '';

$mysql_connect = mysql_connect($servidor, $usuario, $senha_banco) or die('Erro ao conectar no banco de dados');
//mysql_set_charset('utf8', $mysql_connect) or die('Erro ao definir charset');
mysql_select_db($banco, $mysql_connect) or die('Erro ao selecionar a base de dados');

$paginacao = new AC_Pagination;
$paginacao->page = (int) isset($_GET['page']) ? $_GET['page'] : 1;
$paginacao->limit = isset($_GET['limit']) ? $_GET['limit'] : 10;
$paginacao->url = '?page=:page&limit=' . $paginacao->limit;

$query = $paginacao->query('SELECT * FROM tabela where 1', $mysql_connect);

echo 'Registros: ' . $paginacao->count . ', Páginas: ' . $paginacao->pages . '<hr />';

echo '<ol start="' . $paginacao->ol_start . '">';

while ($row = mysql_fetch_array($query))
echo '<li>' . $row[1] . '</li>' . "\n";
echo '</ol>';
$paginacao->pagination();
?>

Galera meu código para paginação está assim porém não está paginando corretamente, se alguém puder ajudar, acredito que falte algum detalhe q está passando.

Valeu

<?php

session_start();

$con = mysql_connect("localhost", "root", "") or dir ("Erro ao conectar no Banco");

$base = mysql_select_db("guia",$con);

$comboPlano = $_GET['comboPlano'];

$comboEspecialidade = $_GET['comboEspecialidade'];

$comboCidade = $_GET['comboCidade'];

$txtMedico = $_GET['txtMedico'];

if(($comboEspecialidade == 1) and ($comboCidade == 1) and ($txtMedico == ""))

{

$numreg = 1; // Quantos registros por página vai ser mostrado

if (!isset($pg))

{

$pg = 0;

}

else

{

$pg = $_GET['pg'];

}

$inicial = $pg * $numreg;

$sql1 = "SELECT m.idMedico, m.nome, m.endereco, m.bairro, m.cep, m.telefone, e.nomeEspecialidade, c.nomeCidade FROM medico as m, especialidade as e, cidade as c WHERE m.idEspecialidade = e.idEspecialidade AND m.idCidade = c.idCidade LIMIT $inicial, $numreg";

$query = mysql_query($sql1);

$quantreg1 = mysql_num_rows($query);

if ($quantreg1 > 0)

{

$quantreg1 -= 1;

}

// Serve para contar quantos registros você tem na seua tabela para fazer a paginação

$sql_conta = mysql_query("SELECT m.idMedico, m.nome, m.endereco, m.bairro, m.cep, m.telefone, e.nomeEspecialidade, c.nomeCidade FROM medico as m, especialidade as e, cidade as c WHERE m.idEspecialidade = e.idEspecialidade AND m.idCidade = c.idCidade");

$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação

$_SESSION["quantreg"] = $quantreg;

echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo

while($num = mysql_fetch_array($sql_conta)) // galera o problema ta aqui, pois quando coloco $sql_conta, ele trás todos o meus registro e não divide por páginas, agora quando coloco $query ele coloca apenas 1 registro pois é o limite dado no SQL, porém os outros registros não aparecem na paginação.

{

echo $num["nome"];

echo $num["nomeEspecialidade"];

}

include("paginacao.php");

}

?>

paginacao.php

<?php

$numreg = 1;

$quantreg = $_SESSION["quantreg"];

$quant_pg = ceil($quantreg/$numreg);

$quant_pg++;

if(isset($_GET["btnEnviar"]))

{

$pg = $_GET["pg"];

}

// Verifica se esta na primeira página, se não estiver ele libera o link para anterior

if(isset($_GET["btnEnviar"]))

{

if ( $pg > 0)

{

echo "<a href=.$_SERVER['PHP_SELF] ."?comboPlano=1&comboEspecialidade=1&comboCidade=1&txtMedico=&btnEnviar=Enviar&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=.$_SERVER['PHP_SELF] ."?comboPlano=1&comboEspecialidade=1&comboCidade=1&txtMedico=&btnEnviar=Enviar&pg=$i_pg2 class=pg><b>$i_pg</b></a> ";

}

}

// Verifica se esta na ultima página, se não estiver ele libera o link para próxima

if (($pg+2) < $quant_pg)

{

echo "<a href=".$_SERVER['PHP_SELF'] ."?comboPlano=1&comboEspecialidade=1&comboCidade=1&txtMedico=&btnEnviar=Enviar&pg=".($pg+1)." class=pg><b>proximo »</b></a>";

}

else

{

echo "<font color=#CCCCCC>proximo »</font>";

}

}

?>

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...