Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dgopereira

Paginação Mysql

Recommended Posts

Olá pessoal,

 

Achei um tuto na net sobre paginação... da hora! funciona diretinho, porém, quando eu altero para que a consulta receba condições ele só me mostra a primeira página... qndo clico as outras ele mostra em branco.

 

 

pagination.php


////////////////////////////////////////////////////////////
// MODELO DE PAGINAÇÃO 6

function pagination_six($total_pages,$page){

    global $webpage;

    $pagination = '<div class="page_numbers">
                    <ul>';
                    
    if($total_pages!=1){
    
        //the total links visible
          
        $max_links=10;
        
        
        //$max links_marker is the top of the loop
        //$h is the start
        
        $max_links_marker = $max_links+1;            
        $h=1;            
        
        
        //$link_block is the block of links on the page
        //When this is an integer we need a new block of links
                  
        $link_block=(($page-1)/$max_links);
        
        //if the page is greater than the top of th loop and link block
        //is an integer
        
        if(($page>=$max_links_marker)&&(is_int($link_block))){
        
                //reset the top of the loop to a new link block
        
            $max_links_marker=$page+$max_links;
            
                //and set the bottom of the loop         
            
            $h=$max_links_marker-$max_links;
            $prev=$h-1;                                                                    
        }
        
            //if not an integer we are still within a link block
        
        elseif(($page>=$max_links_marker)&&(!is_int($link_block))){
            
                //round up the link block
            
            $round_up=ceil($link_block);
                    
            $new_top_link = $round_up*$max_links;
            
                //and set the top of the loop to the top link
            
            $max_links_marker=$new_top_link+1;
            
                //and the bottom of the loop to the top - max links
            
            $h=$max_links_marker-$max_links;
            $prev=$h-1;                            
        }
        
          //if greater than total pages then set the top of the loop to
          // total_pages
        
        if($max_links_marker>$total_pages){
            $max_links_marker=$total_pages+1;
        }
        
            //first and prev buttons
        
        if($page>'1'){
            $pagination.='<li class="current"><a href="'.$webpage.'?page=1">Inicio</a></li>
            <li class="current"><a href="'.$webpage.'?page='.($page-1).'">Ant</a></li>';
        }
        
            //provide a link to the previous block of links
        
        
        $prev_start = $h-$max_links; 
        $prev_end = $h-1;
        if($prev_start <=1){
            $prev_start=1;
        }
        $prev_block = "$prev_start a $prev_end";
        
        if($page>$max_links){
            $pagination.='<li class="current"><a href="'.$webpage.'?page='.$prev.'">'.$prev_block.'</a></li>';
        }
        
            //loop through the results
            
        for ($i=$h;$i<$max_links_marker;$i++){
            if($i==$page){
                $pagination.= '<li><a class="current">'.$i.'</a></li>';
            }
            else{
                $pagination.= '<li><a href="'.$webpage.'?page='.$i.'">'.$i.'</a></li>';
            }
        }
            //provide a link to the next block o links
        
        $next_start = $max_links_marker; 
        $next_end = $max_links_marker+$max_links;
        if($next_end >=$total_pages){
            $next_end=$total_pages;
        }
        $next_block = "$next_start a $next_end";
        if($total_pages>$max_links_marker-1){
            $pagination.='<li class="current"><a href="'.$webpage.'?page='.$max_links_marker.'">'.$next_block.'</a></li>';
        }
        
          //link to next and last pages
        
        
        if(($page >="1")&&($page!=$total_pages)){
            $pagination.='<li class="current"><a href="'.$webpage.'?page='.($page+1).'">Prox</a></li>
                  <li class="current"><a href="'.$webpage.'?page='.$total_pages.'">Final</a></li>';
        }
    }
    
    //if one page of results
    
    else{
      $pagination.='<li><a href="" class="current">1</a></li>';
    }
    $pagination.='</ul>
        </div>';
    
    return($pagination);
}

 

 

listaconsulta.php

 


<?php

include_once('pagination.php');

// Linhas de dados por pagina
     $entries_per_page=5;
     $page = (isset($_GET['page'])?$_GET['page']:1);

     $result     = mysql_query("SELECT COUNT(*) from registro ")
            or die (mysql_error());            
         $num_rows = mysql_fetch_row($result);

if($num_rows[0]!=0){
    $total_pages = ceil($num_rows[0]/$entries_per_page);    
    $pagination = pagination_six($total_pages,$page);
    $offset = (($page * $entries_per_page) - $entries_per_page);
	
//CONSULTA AO BANCO PASSANDO AS VARIAVEIS ENVIADAS PELO FORM


//CONSULTA QUE MOSTRA CERTINHO OS REGISTROS
  $result = mysql_query("SELECT * from registro LIMIT $offset,$entries_per_page") or die (mysql_error());


//SE EU COLOCAR ESSA CONSULTA ELE N ME MOSTRA OS RESULTADOS COMO A CONSULTA ACIMA
/*  $result = mysql_query("SELECT * FROM registro WHERE 
  
	Data >= '$dataini' AND Data <= '$datafim' AND

	horaentrada >= '$horaiEntrada ' AND horaentrada <= '$horafEntrada' AND

	horasaida >= '$horaiSaida' AND horasaida <= '$horafSaida' OR (horasaida IS NULL)

	ORDER BY id ASC LIMIT $offset,$entries_per_page")   OR DIE (mysql_error()); */
	
	
    echo $pagination; // Mostra a paginação na parte superior
    
/////////// INICIA A TABELA DE EXEMPLO DE MOSTRA DOS DADOS  
    echo '<br /><br /><center><table width="95%" style="border:0px solid #000000">
              <tr bgcolor="#FFFFFF" ><font size="1.5" face="verdana">
                <td><b>Reg.</b></td>
                <td><b>Data</b></td>
                <td><b>Entrada</b</td>
				<td><b>Saída</b</td>
				<td><b>Cracha</b</td>
				<td><b>Nome</b</td>
				<td><b>RG</b</td>
				<td><b>Tipo</b</td>
				<td><b>Empresa</b</td>
				<td><b>Local de Visita</b</td>

              </tr>';
    
        // Looping para os resultados //
    for($i=0;$row=mysql_fetch_assoc($result);$i++){

			  $data = $row['data'];
			  $novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . substr($data,0,4);

	
	   echo "<tr bgcolor='#CCCCCC' >
                
				<td align='center'>{$row['id']}</td>
                <td>{$novadata}</td>
                <td>{$row['horaentrada']}</td>
				<td>{$row['horasaida']}</td>
				<td>{$row['nrcracha']}</td>
				<td>{$row['nome']}</td>
				<td>{$row['rg']}</td>
				<td>{$row['tipo']}</td>
				<td>{$row['empresa']}</td>
				<td>{$row['localvisita']}</td>

              </tr>";


    }
    echo '</tr>
        </table></center>';
        
////////// TERMINA A TABELA DE EXEMPLO DE MOSTRAGEM DE DADOS       

  echo "$pagination"; // Mostra a página na parte inferior
                   
           }  // FECHA CHAVE DO IF QUE VERIFICA SE $num_rows[0] != 0  
         ?>

Não sei o que pode ser... é só alterar a parte da consulta que dá esse erro...

 

Alguma dica??.......

 

//CONSULTA QUE MOSTRA CERTINHO OS REGISTROS
  $result = mysql_query("SELECT * from registro LIMIT $offset,$entries_per_page") or die (mysql_error());


//SE EU COLOCAR ESSA CONSULTA ELE N ME MOSTRA OS RESULTADOS COMO A CONSULTA ACIMA
/*  $result = mysql_query("SELECT * FROM registro WHERE 
  
	Data >= '$dataini' AND Data <= '$datafim' AND

	horaentrada >= '$horaiEntrada ' AND horaentrada <= '$horafEntrada' AND

	horasaida >= '$horaiSaida' AND horasaida <= '$horafSaida' OR (horasaida IS NULL)

	ORDER BY id ASC LIMIT $offset,$entries_per_page")   OR DIE (mysql_error()); */

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá dgopereira. Seja bem vindo ao fórum. Caso não tenha lido, sugiro que leia o tópico de orientações para uma boa participação, em especial a parte sobre configurar para exibir todas as mensagens de erro.

 

Outro problema que você terá é com relação às condições, que provavelmente vêm de um formulário. Você precisa passá-las para a paginação também.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.