Jump to content
php.lv forumi

`Lapošana`-as metodes


Delfins

Recommended Posts

Nu tā, esmu apstājies pie tā, ka nevaru izlemt, kuru metodi izmantot, tā lai būtu gana efektīvi, ātri, minimāls un universāls kods.

 

Lapošana var būt:

1.) Navigācija pa lapām - lapaspušu skaits = ( Ierakstu skaits / skais uz 1 lapaspuses )

2.) navigācija "Prev / Next"-only

 

ja mēs ņemam 1. variantu, tad tur ir atkal ir jādabū rindu skaitu pārveidojot izmantoto SQL (preg_replace & etc...), jo tiks veikta meklēšana..

 

2. variants ne vienmēr ir ērts.. kā arī nav iespējas parādīt `Found XYZ rows`

 

Ko tauta labāk izmanto/iesaka izmantot? - tb. no jūzera puses kas ir ērtāks ?

 

PS: 1. variantam arī sanāk overkils, jo izpilda 2 SQL.

Link to comment
Share on other sites

1 papildus vaicājums jau serveri nenoslogos, tas tā starp citu...

23982[/snapback]

Nu nu!! Nevajag to 1 uzskatīt kā konstanti, bet tas 1 jau jāreizina ar apmeklētāju skaitu N, tātad iznāk O(n), nevis O(1) sarežģītība.

Link to comment
Share on other sites

var jau 1 nolasiit ierakstu skaitu - saglabaat sesijaa/nodot caur GET

tad nebuus katru reizi japarbauda cik lapushu sanaak

Ja ir daudz lapushu tad parasti tiek paris reizes uzspiests un next un viss

nu kaitina tas cilveekus

piedevaam nevajag aizmirst ka mekleejot otreiz - biezji vien pa taisno aiziet uz konkreeto lapu.... nu +/- ja ieraksti mainaas. taa kaa kopeeja SQL noslodze pat sanaaks mazaaka

Nu padomaa pats kaa tu dari kautko mekleejot.... kautvai tepat forumaa -

ja ir vairaakas lapas un topiku lasi - tu achu uzreiz ej uz peedeejo

(ja ir 5 lapas skaiti 4 sql pieprasijumi atkriit)

Link to comment
Share on other sites

Ja ir jaunāks MySQL, tad var darīt tā:

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT x, y;

un pēc tam

SLECT FOUND_ROWS()

Rezultātā 2. kverijs atgriezīs cik rindas būtu selektētas, ja nebūtu LIMIT pirmajā kverijā. It ka arī 2 kveriji jāizpilda, taču kods mazāks un ērtāk rediģējams (jārediģē tikai 1 kverijs)

Link to comment
Share on other sites

Roze, tieši tā arī ir - ButtonPrev + SelectPager + Buttonnext

 

Bubu, man tur ir arī meklēšana, SQL nav konstants, un rowsCnt ir jāņem no visa search-query.

 

Pašlaik uztaisīju šitā (MYSQL), vrode strādā. - bet notiek jau dubult-pieprasījums (pieņemsim, ka daudz jūzri worko un ieraksti tiek papildināti)

 

       function queryGetRowsCount($sql) {
               $num = 0;
                       // Transform selection
           $sql = preg_replace( '/(SELECT.+)\s+FROM\s+/i', 'FROM ', $sql );
           $sql = preg_replace( '/(LIMIT\s[\d]+\s,\s[\d]+)/i', '', $sql );
           $sql = preg_replace( '/(ORDER\s+BY\s([`\w\d]+(\s*,\s*)*))/i', '', $sql );
           $sql = 'SELECT count(*) '.$sql;
                       // Select
                       list($num) = $this->row( $this->query($sql) );
                       return $num;
       }

 

Vot gribētos, lai MySQL būtu tik inteleģents un saglabātu kaut kur iekšā kešā..

Laikam tik inteleģents ir tikai oracle...

Edited by Delfins
Link to comment
Share on other sites

+ veel pie daudzam lapaam raadiit pirmaas, peedeejas 2-3 lapas un kaadas 3-4 lapas apkaart tai lapai kuraa atrodies. :)

 

bet man liekas ka nav universaals veids kaa labaak, vienam sarakstam pietiek ar prev/next un lapas ir lieki, a citiem sarakstiem bez lapaam nu nekaa.

Link to comment
Share on other sites

litt, kāda jēga zināt cik rindas izselektētas? To var tikpat labi php pusē izvadot ierakstus uzskaitīt.

Galvenais jau zināt cik tabulā kopā ir ierakstu, lai lappušu skaitu var izrēķināt!

24003[/snapback]

Nu bet tieši to arī dara otrais kverijs. 1. kverijā ir tikai LIMIT dati, savukārt otrajā ir visas tabulas ierakstu skaits (tas pats, kas SELECT COUNT(id) .. )

Link to comment
Share on other sites

×
×
  • Create New...