RicH and FamouS

       Home         Glosar IT                                                                                                                                                                                                              SUBSCRIBE NOW!
        

05.04.2009

Afisarea paginilor numerotate in PHP

De curand pe cand ma uitam in loguri, m-am
gandit ca pagina care imi afiseaza doar ultimele 10 inregistrari din
baza de date nu ma multumeste si atunci am zis ca trebuie sa fac cumva
sa pot vedea cate 10 inregistrari si sa am posibilitatea de a putea
selecta eu ce pagina vreau sa imi afiseze scriptul. La inceput parea
complicat dar dupa 15 minute de gandire si 5 de programare am reusit sa
fac scriptul de mai jos care imi returneaza pentru inceput ultimele 10
inregistari din baza de date si sub ele se afiseaza numerele pentru
restul paginilor:

Cod:

<?
// Pentru inceput se stabilesc parametrii doriti:
$rezultate_afisare_pagina = 10; // specificati nr de rezultate care vor fi afisate pe pagina
$numere_rand = 15; // specificati dupa cate numere se va trece la rand nou
$numele_paginii = "pagina_demo.php"; // numele acestei pagini in care aveti scriptul
$server_bd = "localhost"; // adresa serverului mysql (de obicei localhost)
$user_bd = "root"; // userul cu care va conectati la bd
$parola_bd = "parola"; // parola pentru conectarea la bd
$nume_bd = "nume_baza_date"; // numele bazei de date folosite
$tabel_bd = "numele_tabelului_din_bd"; // numele tabelului pe care se lucreaza
// Apoi se face o interogare la baza de date pentru a vedea cate randuri exista:
$conectare = mysql_connect($server_bd, $user_bd, $parola_bd) OR die("<br>Eroare 1");
mysql_select_db($nume_bd, $conectare) OR die("<br>Eroare 2");
$interogare = "SELECT * FROM '".$tabel_bd."'";
$rezultat = mysql_query($interogare, $conectare) OR die("<br>Eroare 3 ");
$nr_total_pagini = (integer)(mysql_num_rows($rezultat)/$rezultate_afisare_pagina);
// In continuare se face interogarea pentru afisarea rezultatelor
if (isset($_GET['id']))
{
// daca se cere o anumita pagina
$id = $_GET['id'];
$interogare = "SELECT * FROM ".$prefix_tabel_bd."download_ver LIMIT ".$id.",".$rezultate_afisare_pagina;//
}
if (!isset($_GET['id']))
{
// daca se acceseaza pagina prima data se afiseaza ultimele inregistrari din bd
$interogare = "SELECT * FROM ".$prefix_tabel_bd."download_ver ORDER BY id DESC LIMIT 0,".$rezultate_afisare_pagina;
}
$rezultat = mysql_query($interogare, $conectare) OR die("<br>Eroare 4 ");
// aici se afiseaza rezultatele in pagina
while ($rand = mysql_fetch_array($rezultat))
{
echo $rand['coloana1']; // specificati coloanele din tabel pe care doriti sa le afisati
}
// dupa afisarea rezultatelor se afiseaza in continuare numerele pentru celelalte pagini
$randuri = (integer)($nr_total_pagini / $numere_rand);
$nrr = 0;
for ($ee=1;$ee<=$randuri;$ee++)
{
$nrr = $nrr+$numere_rand;
$rnd[$ee] = $nrr;
}
$id_m = 0;
echo '<div align="center">';
for ($s=1;$s<=$nr_total_pagini+1;$s++)
{
echo ' - <a href="'.$numele_paginii.'?id='.$id_m.'">'.$s.'</a>';
foreach($rnd as $val)
{
if ($s == $val)
{
echo "<br>";
}
}
$id_m = $id_m + $rezultate_afisare_pagina;
}
echo ' - <br><br></div>';
?>

Scriptul de mai sus va afisa, daca este accestat prima data,
ultimele $rezultate_afisare_pagina existente in baza de date, iar sub
rezultate va afisa un sir de numere care corespund celorlalte pagini.
(Exemplu: Pagina 1 - 2 - 3 - 4 -)

Daca dati clik pe unul din numere se va incarca din nou pagina si va
afisa $rezultate_afisare_pagina incepand de la id-ul specificat
(tabelul din baza de date trebuie sa aiba un camp numit id care se
incrementeaza automat la fiecare inregistrare altfel nu va functiona
interogarea (sau schimbati ORDER BY id DESC cu ce doriti voi)).

    Blog din Moldova    FastCounter 

 
Copyright © 2008-2010 Foster1. All rights reserved.