 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
vaida.dan
Data înscrierii: 05/Apr/2007
Mesaje: 59
|
| Trimis: Vin Mai 02, 2008 10:15 am Titlul subiectului: Sortare tabel |
|
|
Inainte de a incepe sa scriu mai multe anunt moderatorii ca am efectuat cateva cautari dupa un subiect asemanator dar nu am gasit nimic relevant.
Am urmatorul cod:
Cod: $page = (!isset($_GET['page']))? 1 : $_GET['page'];
$prev = ($page - 1);
$next = ($page + 1);
$max_result3s = 5;
$from = (($page * $max_result3s) - $max_result3s);
$result3 = mysql_query("SELECT * FROM tabel");
$total_result3s = mysql_num_rows($result3);
$total_pages = ceil($total_result3s / $max_result3s);
$pagination = '';
if($page > 1)
{
$pagination .= '<a href="afisare.php?page='.$prev.'"><- Inapoi</a> ';
}
if($page < $total_pages)
{
$pagination .= '<a href="afisare.php?page='.$next.'">Inainte -></a>';
}
$sql = "select * from tabel order by coloana LIMIT $from, $max_result3s ";
$result3=mysql_query($sql);
$result = mysql_query("SELECT * FROM tabel order by coloana");
while($i = mysql_fetch_array($result3))
{
...afisarea...
}
echo $pagination;
echo "<br>";
echo " Salt la pagina: ";
$i=1;
do
{
echo '<a href="afisare.php?page='.$i.'"> '.$i.' </a>';
$i++;
} while ( $i <= $total_pages );
Nu e cel mai inteligent si curat cod dar functioneaza si ma serversc de el.
As vrea sa mai adaug putina functionalitate la afisarea aceasta si sa ofer utilizatorului posibilitatea de a sorta entry-urile din tabel.
Dupa cum puteti vedea variabila ($max_result3s = 5;) ce stabileste numarul de entitati afisate pe o pagina are valoarea 5.
Ceea ce as vrea eu sa am in capul de tabel (in casuta cu numele coloanei)
sunt doua link-uri care vor permite sortarea TUTUROR entry-urilor (inclusiv de pe pagina 2,3,4...). Am cautat putin si am descoperit cateva coduri javascript care sorteaza entry-urile, dar din pacate doar pe cele afisate pe pagina curenta.
Am sa zicem 5 coloane. Pot sa fac cate doua query-uri pentru fiecare coloana (un query pentru o sortare ascendenta si unul pentru una descendenta). In total 10 query-uri. Fac cumva un link catre rezultatul respectiv. Ce nu stiu este cum as putea sa fac toate astea folosind un singur while la afisare. Nu ma supar daca se pot folosi si mai multe while-uri sau alte metode.
Va multumesc anticipat.[/i] |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1155
Locație: Sibiu
|
| Trimis: Vin Mai 02, 2008 10:26 am Titlul subiectului: |
|
|
Varianta asta cu 10 query-uri nu e eleganta deloc. Fortezi serverul sa faca 10 query-uri si sa tina 10 seturi de rezultate indiferent daca utilizatorului ii convine primul, al 5-lea sau al 10-lea. Ceea ce solicita serverul inutil.
Varianta eleganta ar fi sa populezi tabelul cu ajax. Folosesti un script care returneaza o structura asemanatoare cu codul html generat de codul dat de tine, dar care sa foloseasca 4 parametri de get: sort_criteria, sort_order, page si max_per_page. La apelarea scriptului prin ajax, populezi tabelul cu codul returnat. Asa impusti 2 iepuri: si sortarea si paginarea fara refresh. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|