 |
|
 |
 | Afisarea paginilor numerotate PHP |  |
Trimis: 19/07/2007 16:55 |
|
|
| Ad_Infinitum |
| Administrator |

 |
 |
| Data inscrierii: 23/Iun/2007 |
| Mesaje: 212 |
|
|
|
 |
 |
 |
|
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:
| Citat: |
<?
// 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 utilizate
$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 efecte 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))
Articol trimis de Birkoff |
|
|
|
|
|
|
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
|
|