Jump to content
php.lv forumi

Recommended Posts

Posted

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?

Posted

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.

Posted

Pirms to rindu publicēšanas nevar saskaitīt rindas? Un kā publicē tā ieraksta datubāzē rindu skaitu?

Posted

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.

Posted

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!

Posted

Cilvēks laikam datu atlasi veic PHP pusē. Nu tad cits nekas neatliek kā katru reizi pieprasīt visu to gūzmu datus. Vienīgi, ja šie dati mainās reti vai nebieži, tad var kešot tos.

Posted

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.

Posted

Bubu:

Tāds variants arī neder, jo šī TRUE/FALSE rindiņa nav statiska. Piemēram, atkarīga no lietotāja, kurš izmanto sistēmu un citiem apstākļiem.

Posted

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"...

Posted

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..

Posted
atkarīga no lietotāja, kurš izmanto sistēmu un citiem apstākļiem.

Tāpēc iekš SQL ir izdomātas tādas lietas kā:

JOIN

WHERE

EXISTS

HAVING

×
×
  • Create New...