Delfins Posted October 4, 2005 Report Share Posted October 4, 2005 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 More sharing options...
bubu Posted October 4, 2005 Report Share Posted October 4, 2005 No jūzera puses - noteikti 1. Link to comment Share on other sites More sharing options...
Kavacky Posted October 4, 2005 Report Share Posted October 4, 2005 Es par pirmo. Neciešu, ka jālādē pa lapai, pa lapai, kamēr atrodu īsto. Link to comment Share on other sites More sharing options...
Paulinjsh Posted October 4, 2005 Report Share Posted October 4, 2005 Viennozīmīgi 1. variants, jo es arī neciešu lapu pa lapai spaidīt! 1 papildus vaicājums jau serveri nenoslogos, tas tā starp citu... Link to comment Share on other sites More sharing options...
bubu Posted October 4, 2005 Report Share Posted October 4, 2005 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 More sharing options...
Grey_Wolf Posted October 5, 2005 Report Share Posted October 5, 2005 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 More sharing options...
litt Posted October 5, 2005 Report Share Posted October 5, 2005 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 More sharing options...
bubu Posted October 5, 2005 Report Share Posted October 5, 2005 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! Link to comment Share on other sites More sharing options...
Roze Posted October 5, 2005 Report Share Posted October 5, 2005 1. + 2. tb pa vidu lapu numeracija galā un beigās Next / Prev :) Link to comment Share on other sites More sharing options...
Delfins Posted October 5, 2005 Author Report Share Posted October 5, 2005 (edited) 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 October 5, 2005 by Delfins Link to comment Share on other sites More sharing options...
v3rb0 Posted October 5, 2005 Report Share Posted October 5, 2005 + 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 More sharing options...
Delfins Posted October 5, 2005 Author Report Share Posted October 5, 2005 (edited) SQL_CALC_FOUND_ROWS vot šitādus `hakus` gribētos mazāk... ;) PS: pieļauj ka Mysql veic to pašu ko es tikai saglabājot daļu rezultātu atmiņā. Edited October 5, 2005 by Delfins Link to comment Share on other sites More sharing options...
Roze Posted October 5, 2005 Report Share Posted October 5, 2005 Vot gribētos, lai MySQL būtu tik inteleģents un saglabātu kaut kur iekšā kešā..Laikam tik inteleģents ir tikai oracle... Imho Query cache (protams ja ieslēgts :) ) ir gan tik inteliģents.. un šo vajadzētu keshot. Link to comment Share on other sites More sharing options...
litt Posted October 5, 2005 Report Share Posted October 5, 2005 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 More sharing options...
bubu Posted October 5, 2005 Report Share Posted October 5, 2005 Ak tā, visas tabulas skaits... nezināju. Nu jā es no šitādiem `hakiem` (pēc Delfina vārdiem) arī izvairos. Labāk pēc iespējas standartiskākā SQLā rakstīt. Link to comment Share on other sites More sharing options...
Recommended Posts