Advertisement
Guest User

Untitled

a guest
Sep 8th, 2017
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.33 KB | None | 0 0
  1. <?php
  2. /*
  3. * @author Jota Vicente <jotavrj at gmail dot com>
  4. *
  5. */
  6. class Connection extends PDO { #classe de conexão com o BD
  7.     private $dsn = 'mysql:dbname=testes;host=127.0.0.1';
  8.     private $user = 'root';
  9.     private $password = '';
  10.     public $handle = null;
  11.  
  12.     function __construct( ) {
  13.         try {
  14.             if ( $this->handle === null ) {
  15.                 $dbh = parent::__construct( $this->dsn , $this->user , $this->password );
  16.                 $this->handle = $dbh;
  17.                 return $this->handle;
  18.             }
  19.         }
  20.         catch ( PDOException $e ) {
  21.             echo 'Connection failed: ' . $e->getMessage( );
  22.             return false;
  23.         }
  24.     }
  25.  
  26.     function __destruct( ) {
  27.         $this->handle = NULL;
  28.     }
  29. }
  30.  
  31. class TextPag
  32. {
  33.     private $text = null;
  34.     private $pag = null;
  35.     public $classe = 'text';
  36.  
  37.     function __construct( $id = $_GET['id'] )
  38.     {
  39.         try #técnica do grande caça moscas, meakMEKEMkMEKAMEkAME
  40.        {
  41.             $conn = new Connection(); #conecta
  42.            $sql = "SELECT text, author, id FROM texts WHERE id = :id"; /* faz a query, aqui voce muda onde quiser de acordo com necessidades */
  43.             $dbh = $conn->prepare($sql);
  44.             $dbh->bindParam(":id", $id, PDO::PARAM_INT); #verificacao de segurança
  45.            $dbh->execute();
  46.             $text = $dbh->fetchAll();
  47.             $textp = $text['text']; #separa só a parte do texto
  48.            $otherinfo = array($text['author'], $text['id']); #faz um array com as outras informações que solicitei na query
  49.            $textp = explode("[[pgbrk]]", $textp); /* aqui tá a parte da lógica, onde no texto você, quando vê que tem que mudar de página, escreve [[pgbrk]]. você pode mudar de acordo com sua preferência, colocando tags de html, por exemplo, mas acho melhor assim*/
  50.             $this->text = array($otherinfo, $textp); # faz um array bidimensional com todas as informações separas
  51.            return $this->text;
  52.         }
  53.         catch ( Exception $e )
  54.         {
  55.             echo "Houve um erro: ".$e->getMessage();
  56.         }
  57.     }
  58.    
  59.     function showPagination( $pg = $_GET['page'] )
  60.     {
  61.         $pg = (int) $pg; #faz virar int
  62.        $pg -= 1; /* como é um array, a página 1 corresponde à $text[0], a página 2 corresponde à $text[1], e assim por diante, logo, o número dá página é sempre 1 a mais que o índice do array. aqui eu tiro essa diferença*/
  63.         echo "Escrito por: ".$this->text[0][0]."<br /><br />"; /* dou echo simples nas informações, mude se quiser*/
  64.         $this->pag = $pg;
  65.         echo $this->text[1][$pg]; /* aqui tá a parte, dá echo na parte do texto que quiser*/
  66.     }
  67.  
  68.     function generateLinks( )
  69.     {
  70.         $link = '';
  71.         $textp = count($this->text[1]);
  72.         for( $i = 1; $i <= $textp; $i++ ) #faz o loop das páginas
  73.        {
  74.             if ( $i == $pg )
  75.             {
  76.                 $link .= '[ <strong>'.$pg.'</strong> ]'; #se o loop estiver na página atual, não cria link
  77.            }
  78.             else
  79.             {
  80.                 $link .= '[ <a class="'.$this->classe.'" href="?id='.$this->text[0][1].'&page='.$i.'">'.$i.'</a> ]';
  81.             }
  82.         }
  83.         echo $link;
  84.     }
  85. }
  86.  
  87. #exemplo de uso
  88. # estou na página artigo.php?id=15&page=1
  89. $pag = new TextPag();
  90. $pag->showPagination();
  91. $pag->generateLinks(); /*poderia estar junto do showPagination, mas pra dar liberdade para encaixar onde quiser no layout, separei em outro método */
  92. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement