| "Lou Paginar Mysql Class" package
This PHP package, called "Lou Paginar Mysql", provides a reusable and organized way to implement pagination for data retrieved from a MySQL database. It consists of two main components:
The main advantages are:
1.	Encapsulation: 
Database connection and paging logic are encapsulated within classes, making the code more organized and reusable.
2.	Centralized logic: 
All paging-related code is in one place, making it easy to maintain and modify.
3.	Simplified use:
 DatabasePaginationWrapper simplifies the pagination deployment process by requiring minimal code in the main application file.
4.	Clean code:
 The code is well structured and commented, making it easy to understand.
5.	Reusable: 
Classes can be easily reused in other projects.
6.	Clear separation of concerns: 
Database connection and paging logic are separated into different classes.
In essence, this package is a well-designed, object-oriented solution for adding pagination to PHP applications that interact with MySQL databases.
DatabasePaginationWrapper class:
Objetive: 
This class acts as a wrapper, encapsulating the database connection and paging logic. It simplifies the process of connecting to the database, retrieving paginated results, and displaying pagination links.
Features:
1.	Database Connection: Handles connection to MySQL database using mysqli.
2.	Error handling: checks for connection errors and terminates execution if an error occurs.
3.	Pagination Integration: Creates an instance of the Pagination class to manage the pagination logic.
Méthods:
?	ExibirResultados():
o	Takes an SQL query as input.
o	Retrieves the paginated results from the database using the Paginacao
o	Displays pagination links (First, Previous, page numbers, Next, Last).
o	Returns the result set for the current page. 
?	FecharConexao(): Closes the connection to the database.
?	Constructor:
o	Takes as arguments the database connection parameters (host, user, password, database name) and the number of results per page. 
o	Establishes connection to the database.
o	Initializes the Pagination object.
Paginaçao class:
Objective: 
This class handles the main paging logic. Calculates the total number of pages, determines the current page and generates the pagination links.
Méthods 
?	obterResultados():
o	Takes an SQL query as input.
o	Counts the total number of results that match the query.
o	Calculates the total number of pages
o	Determines the OFFSET of the current
o	Add ORDER BY id DESC and LIMIT clauses to the query to retrieve only results from the current page.
o	Executes the modified query and returns the result set.
?	getLinks():
o	Generates HTML links for pagination (First, Previous, page numbers, Next, Last).
o	Constructs the URLs for each link by including the page parameter in the query string (e.g. index.php?page=2
o	Returns links as a string, separated by " | ".
?	Constructor:
o	Takes as arguments the database connection object and the number of results per page.
o	Sets the number of results per page
o	Determines the current page from the $_GET['page'] parameter (defaults to 1 if not defined).
Operation (em index.php)
?	Includes the paginate.php file, making the classes available.
?	Database connection details (host, user, password, database name) and number of results per page are defined.
?	A DatabasePaginationWrapper object is created, passing configuration details to its constructor.
?	 An SQL query is defined (for example, SELECT * FROM noticias
?	The wrapper's exibirResultados() method is called, passing the query. 
?	Retrieves paged results.
?	Displays pagination links.
?	Returns the result set for the current page.
?	Iterates through the result set and displays the data for each row.
?	Close connection.
PT
Pacote "Lou Paginar Mysql Class"
Este pacote PHP, denominado " Lou Paginar Mysql", fornece uma forma reutilizável e organizada de implementar a paginação para dados recuperados de uma base de dados MySQL. É constituído por dois componentes principais:
As principais vantagens são:
1.	Encapsulamento: 
A ligação à base de dados e a lógica de paginação são encapsuladas dentro das classes, tornando o código mais organizado e reutilizável.
2.	Lógica centralizada: 
Todo o código relacionado com a paginação está num só local, facilitando a manutenção e a modificação.
3.	Utilização simplificada:
 O DatabasePaginationWrapper simplifica o processo de implementação de paginação, exigindo código mínimo no ficheiro principal da aplicação.
4.	Código Limpo:
 O código está bem estruturado e comentado, facilitando a compreensão.
5.	Reutilizável: 
As classes podem ser facilmente reutilizadas noutros projetos.
6.	Separação clara de preocupações: 
A ligação à base de dados e a lógica de paginação estão separadas em classes diferentes.
Na sua essência, este pacote é uma solução bem concebida e orientada a objetos para adicionar paginação a aplicações PHP que interagem com bases de dados MySQL.
Classe DatabasePaginationWrapper:
Objetivo: 
Esta classe atua como um wrapper, encapsulando a ligação à base de dados e a lógica de paginação. Simplifica o processo de ligação à base de dados, recuperando resultados paginados e exibindo links de paginação.
Características:
1.	Ligação à base de dados: trata da ligação à base de dados MySQL usando mysqli.
2.	Tratamento de erros: verifica os erros de ligação e termina a execução se ocorrer um erro.
3.	Integração de Paginação: Cria uma instância da classe Paginação para gerir a lógica de paginação.
Métodos:
?	ExibirResultados():
o	Recebe uma consulta SQL como entrada.
o	Recupera os resultados paginados da base de dados utilizando a classe Paginacao.
o	Apresenta os links de paginação (Primeiro, Anterior, números de página, Seguinte, Último).
o	Retorna o conjunto de resultados da página atual.
?	FecharConexao(): Fecha a ligação à base de dados.
?	Construtor:
o	Toma como argumentos os parâmetros de ligação à base de dados (host, utilizador, palavra-passe, nome da base de dados) e o número de resultados por página.
o	Estabelece a ligação com a base de dados.
o	Inicializa o objeto Paginação.
Class de paginacao:
Objetivo: 
Esta classe lida com a lógica de paginação principal. Calcula o número total de páginas, determina a página atual e gera os links de paginação.
Métodos 
?	obterResultados():
o	Recebe uma consulta SQL como entrada.
o	Conta o número total de resultados que correspondem à consulta.
o	Calcula o número total de páginas.
o	Determina o OFFSET da página atual.
o	Acrescenta as cláusulas ORDER BY id DESC e LIMIT à consulta para recuperar apenas os resultados da página atual.
o	Executa a consulta modificada e devolve o conjunto de resultados.
?	getLinks():
o	Gera os links HTML para paginação (Primeiro, Anterior, números de página, Seguinte, Último).
o	Constrói os URLs para cada link, incluindo o parâmetro página na string de consulta (por exemplo, index.php?pagina=2).
o	Retorna os links como uma string, separados por " | ".
?	Construtor:
o	Toma como argumentos o objeto de ligação à base de dados e o número de resultados por página.
o	Define o número de resultados por página.
o	Determina a página actual a partir do parâmetro $_GET['pagina'] (o predefinido é 1 se não estiver definido).
Funcionamento (em index.php)
?	Inclui o ficheiro paginate.php, disponibilizando as classes.
?	São definidos os detalhes da ligação à base de dados (host, utilizador, palavra-passe, nome da base de dados) e o número de resultados por página.
?	É criado um objeto DatabasePaginationWrapper, passando os detalhes da configuração para o seu construtor.
?	 É definida uma consulta SQL (por exemplo, SELECT * FROM noticias).
?	O método exibirResultados() do wrapper é chamado, passando a consulta. 
?	Recupera os resultados paginados.
?	Apresenta os links de paginação.
?	Retorna o conjunto de resultados da página atual.
?	Itera pelo conjunto de resultados e apresenta os dados de cada linha.
?	Fechar ligação
 |