O versiune mai noua, bazata pe clase si obiecte, e la pagina: Clasa Paginare - Script PHP

In aceasta pagina este prezentat un model de script pentru paginarea datelor dintr-un tabel MySQL.
- Puteti copia codul scriptului direct din pagina (codul de mai jos), sau puteti descarca arhiva din link-ul "Download" de mai sus, aceasta contine fisierele '.php' pentru crearea tabelului si paginare.

In general, scripturile de paginare pe care le gasiti, pentru a putea fi folosite trebuie adaptate de fiecare in functie de structura tabelul MySQL folosit si modul dorit de afisare a datelor.
Acest script este un exemplu din care puteti invata mecanismul de construire a unui script de paginare. Explicatiile necesare le gasiti in interiorul scriptului, unde sunt adaugate comentarii la fiecare pas, care va ajuta sa intelegeti logica scriptului si rolul liniilor de cod folosite.
Daca doriti sa folositi acest model pentru site-ul dv., trebuie sa modificati in primul rand datele de conectare la baza de date cu cele ale dv., apoi modificati numele tabelului (aici "nume_tb") cu cel pe care-l aveti iar la afisarea datelor schimbati numele coloanelor (aici 'id' si 'texte') cu cele din tabelul dv'.
In acest exemplu afisare datelor se face cat mai simplu. Daca aveti cat de cat cunostinte de PHP, puteti crea un mod de afisare propriu prin adaugarea de elemente HTML in codul scriptului, la instructiunea "echo" din interiorul instructiunii "for($i=0; $i<count($id); $i++)" care parcurge si afiseaza datele returnate din coloanele tabelului.


- Scriptul pentru paginare

<?php
// Script de paginare, de la https://marplo.net

// Datele pt. conectare la baza de date
// MODIFICATI
$host = "localhost";	// server MySQL
$utilizator = "root"; 
$parola = "parola";
$numebd = "nume_bd";	// nume baza de date

// Conectarea la baza de date
$conn = mysql_connect($host, $utilizator, $parola);
if (!$conn) {
  echo 'Conectare nereusita la MySQL'; 
  exit;
}

// Selectarea bazei de date
if (!mysql_select_db($numebd, $conn)) {
  echo 'Baza de date nu a putut fi selectata deoarece : '. mysql_error();
  exit;
}

// Setarea pentru format UTF-8
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $conn);

// Afla cate linii sunt in tabel (MODIFICATI 'nume_tb') din baza de date  
$sql = "SELECT COUNT(*) FROM `nume_tb`";  
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
$r = mysql_fetch_row($result);  
$numrows = $r[0];  
 
// Stabileste numarul de linii din tabel afisate in pagina 
$rowsperpage = 10;  
// afla numarul total necesar de pagini 
$totalpages = ceil($numrows / $rowsperpage);		// ceil face rotunjire la int. maxim
 
// Obtine pagina curenta sau seteaza default 
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {  
  // seteaza variabila ca int 
  $currentpage = (int) $_GET['currentpage'];  
} else {  
  // pagina care este initial afisata (pagina default) 
  $currentpage = 1;  
}
 
// daca pagina curenta e mai mare decat total pagini...
if ($currentpage > $totalpages) {  
  // seteaza pagina curenta la ultima pagina  
  $currentpage = $totalpages;  
} 
// daca pagina curenta e mai mica decat prima pagina...  
if ($currentpage < 1) {  
  // seteaza pagina curenta la prima pagina   
  $currentpage = 1;  
} 
 
// lista cu pagini, in functie de pagina curenta   
$offset = ($currentpage - 1) * $rowsperpage;  
 
// obtine datele din tabel (MODIFICATI 'nume_tb') din baza de date  
$sql = "SELECT * FROM `nume_tb` LIMIT $offset, $rowsperpage";  
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
 
// parcurgerea matricei cu datele obtinute 
while ($list = mysql_fetch_assoc($result)) {  
  // - MODIFICATI numele coloanelor tabelului ('id' si 'texte')
  // Stocheaza datele returnate de MySQL in variabile array pt. fiecare coloana
  $id[] = $list['id'];
  $text[] = $list['texte'];
}
mysql_close();	// Incheie conexiunea cu mysql

/*** Afisarea datelor obtinute ***/
// Parcurge variabilele array setate in bucla WHILE
for($i=0; $i<count($id); $i++) {
  // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
  echo $id[$i]. " - ". $text[$i]. "<br />";
}

/*** Construirea link-urilor pt. paginare ***/ 
// raza nr. link-uri din jurul celui curent 
$range = 3;
 
// Link-uri inapoi, daca pagina curenta nu e prima
if ($currentpage > 1) {  
  // arata << pt. link la prima pagina  
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'>&lt;&lt;</a> &nbsp; ";  
  // obtine nr. pagina din urma 
  $prevpage = $currentpage - 1;  
  // arata < pt. link la o pagina in urma 
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'>&lt;</a> &nbsp;";  
} 
 
// definirea link-urilor din raza paginii curente
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {  
  // daca e un nr. de pagina valid ... 
  if (($x > 0) && ($x <= $totalpages)) {  
	 // daca nr. e pagina curenta ...  
	 if ($x == $currentpage) {  
		// afiseaza nr. pagina fara a fi link  
		echo " [<b>$x</b>] ";  
	 // daca nr. nu e pagina curenta ...  
	 } else {  
		// il face link  
	echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> ";  
	 }  
  }
}
		  
// Daca pagina curenta nu e ultima, afiseaza link inainte si spre ultima pagina
if ($currentpage != $totalpages) {  
  // obtine pagina urmatoare 
  $nextpage = $currentpage + 1;  
   // arata > pt. urmatoarea pagina   
  echo "&nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>&gt;</a> ";  
  //  arata >> pt. ultima pagina
  echo " &nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>&gt;&gt;</a> ";  
}
?>

Daca doriti sa testati acest script, puteti folosi codul de mai jos pentru crearea tabelului MySQL, in plus, acesta adauga si cateva linii in tabel.
Copiati codul urmator intr-un fisier '.php' si apelati-l din browser (prin server).
Dupa ce ati creat tabelul si datele din el, apelati primul script, de paginare. Daca nu aveti erori, acesta va afisa paginat datele din tabel.

- Creare tabel MySQL
<?php
// Datele pt. conectare la baza de date
// MODIFICATI
$host = "localhost";	// server MySQL
$utilizator = "root"; 
$parola = "parola";
$numebd = "nume_bd";	// nume baza de date

// Conectarea la baza de date
$conn = mysql_connect($host, $utilizator, $parola);
if (!$conn) {
  echo 'Conectare nereusita la MySQL'; 
  exit;
}

// Selectarea bazei de date
if (!mysql_select_db($numebd, $conn)) {
  echo 'Baza de date nu a putut fi selectata deoarece: '. mysql_error();
  exit;
}

// Setarea pentru format UTF-8
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $conn);

// Creaza tabelul 'nume_tb' cu 2 coloane "id' si 'texte'
$sql = "CREATE TABLE `nume_tb` (
  `id` int(11) NOT NULL auto_increment,
  `texte` varchar(250) NOT NULL default '',
  PRIMARY KEY  (`id`))";
$tabel = mysql_query($sql); 
if ($tabel) 
    echo 'Tabelul comentarii a fost creat'; 
else 
  echo 'Tabelul nu a putut fi creat deoarece - '. mysql_error(); 
  
// Adaugare date in tabel
$sql = "INSERT INTO `nume_tb` (id, texte)
  VALUES
  (1, 'Script paginare, linia 1'),
  (2, 'Script paginare, linia 2'),
  (3, 'Script paginare, linia 3'),
  (4, 'Script paginare, linia 4'),
  (5, 'Script paginare, linia 5'),
  (6, 'Script paginare, linia 6'),
  (7, 'Script paginare, linia 7'),
  (8, 'Script paginare, linia 8'),
  (9, 'Script paginare, linia 9'),
  (10, 'Script paginare, linia 10'),
  (11, 'Script paginare, linia 11'),
  (12, 'Script paginare, linia 12'),
  (13, 'Script paginare, linia 13'),
  (14, 'Script paginare, linia 14'),
  (15, 'Script paginare, linia 15')";
if (!mysql_query($sql, $conn)) {
	print '<br>Eroare la introducerea datelor: '. mysql_error();
}
mysql_close(); 
?>

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag defineste zona de click intr-o harta creata dintr-o imagine?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Ce proprietate CSS indica ce sa se intample cand continutul unui element depaseste dimensiunile lui?
display overflow position
#id {
  overflow: auto;
}
Clic pe evenimentul care este declansat cand mouse-ul e deasupra unui obiect.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Sa ai Viata Buna");
}
Indicati variabila PHP ce contine datele adaugate in adresa URL, dupa caracterul "?".
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Clic pe pronumele reflexiv care e potrivit in propozitia: "Marc is the boy ... won the prize".
who which whoever
Marc is the boy who won the prize.
- Marc e baiatul care a castigat premiul.
Clic pe pronumele reflexiv care e potrivit in propozitia: "Voy a ver al pintor de ... les hablé ayer".
que quien cuyo
Voy a ver al pintor de quien les hablé ayer.
- Ma duc sa vad pictorul despre care ti-am vorbit ieri.
Script paginare

Last accessed pages

  1. Zilele saptamanii - Lunile anului - Anotimpurile - Engleza (10611)
  2. Verbe frazale din limba Engleza (15272)
  3. Jokes - Glume, Bancuri, Humor (3661)
  4. Zilele saptamanii, Lunile si Anotimpuri - Exercitii incepatori (3195)
  5. Proverbe, expresii si zicatori (5908)

Popular pages this month

  1. Prezentul simplu si continuu - Present Tense Simple and Continuous (3644)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (3243)
  3. Gramatica limbii engleze - Prezentare Generala (2719)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (2361)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (1955)