Jump to content
php.lv forumi

lapošana


tomaac

Recommended Posts

Problēma: Nepieciešams atrādīt tabulu ar daudzām rindām. Rezultāti jāsadala "pa lapām", ļaujot lietotājam šķirstīt lapas. Katrā lapā 40 rindas.

 

Iespējamais risinājums:

 

1) Ar SELECT-a palīdzību atlasa visus datus vienā lielā masīvā.

2) Iet cauri šim masīvam un ar vienu PHP funkciju pārbauda katru rindu. Ir derīgās/nederīgās rindas. Tādējādi atsijā šīs nederīgās rindas.

3) Rezultātā izveidots masīvs tikai ar derīgām rindām.

4) Sarēķina no kuras līdz kurai rindai jārāda dotajā lapā. Atrāda.

 

Problēmas:

Nesmuki sanāk, ka šķirstot lapas viss process jāveic par jaunu. Tas var radīt ātrdarbības problēmas.

 

P.S. Nevar šobrīd izdarīt tā, ka to PHP funkciju iebūve kaut kā Sql-ā, lai nevajadzētu iet ar ciklu cauri visām masīva rindām.

 

Vai ir kādas idejas?

Link to comment
Share on other sites

Tur jau tā problēma, ka šeit nesanāk izmantot nekādu limitu.

Tas ir tādēļ, ka izpildot selectu mēs vēl nezinām cik rindas patiesībā no tā rezultāta vajadzēs. Piemēram, limit 0, 40 varētu izrādīties nepareizi, jo pēc tam ar php funkciju daļa rindu tiktu uzskatītas par nederīgām...

 

Sql funkcija neder, jo šobrīd lielā sistēmā ir viena php funkcija, kuru nepieciešams "uzlaist" katrai rezultāta rindai. Savukārt šī funkcija ir diezgan sarežģīta ,izmanto citas funkcijas utt. Teorētiski šķiet, ka varētu to arī par sql funkciju pārtaisīt, nedaudz čakars būtu, kā arī tad sistemā būtu divas vienādas funkcijas (viena php un viena mysql). Bet tiek meklēts cits risinājums.

Link to comment
Share on other sites

Atkarībā no lietotāju skaita un tā cik ļoti atkarīgi šie dati ir no tām PHP funkcijām- var rezultātu (iegūto PHP masīvu) ierakstīt temp_session tabulā pie pirmā pieprasījuma un pēc tam veikt vaicājumus no šīs temp_session tabulas.

Link to comment
Share on other sites

Nu nekas tur nebūs nepareizi - tā dara visur:

 

- dabū skaitu (COUNT(*) + WHERE)

- dabū izvēlēto lapu

- pārbauda vai lapa ir robežās (< count / skaits_uz lapu), ja nē, tad lapa = 0

- veic to pašu pieprasījumu tikai atrādei un ar LIMIT

- SQL skaitam kešo, ja dati nemainās ļoti bieži (hash(SQL) => skaits)

 

Viss! Nav te ko iespringt!

Link to comment
Share on other sites

Ieliec tajā tabulā vēlvienu kolonnu - booleanu vai_derigs. Un selekto tikai tās rindas, kur tas ir TRUE. Pie katrām datu izmaiņām (INSERT, UPDATE) palaid savu php funkciju, kura updeito šo vai_derigs flagu pie izmainītajiem ierakstiem.

Link to comment
Share on other sites

Grūti kaut ko ieteikt nezinot detaļas, bet vēl vari arī veidot "attiecību" tabulu, kurā ieraksti objekta_ID, PHP_kalkulēto_vērtību, Lietotāja_ID, Pieprasījuma_ID(vai pieprasījuma parametrus). Un ievietot šajā tabulā pēc 1. pieprasījuma datus. Pēc tam ik pa brīdim veikt kaut kādu " garbage collection"...

Link to comment
Share on other sites

Dari ka mani mācija vecais informātikas učuks - panem papiira lapu rokaas.. un saac ziimeet.. tabuliski ko veelies panaakt!

 

Vismaz kaadas 3 lapas sakuma izmetisi laukaa.. tikai pacietibu... ziimee taalaak.. un mozh izdomaasi liidz galam, pamaniisi savas kluudas.. un sapratiisi kaa ko veikt! Jo man skiet seit iisti neviens nesaprot kas tew tur pa buudu top, kapec tadi pierpasijumi unj veel katram lietotajam mainas... k-gan nav zinams kam mainities.. brr..

Link to comment
Share on other sites

×
×
  • Create New...