DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > DevProTalk > Sva početnička pitanja
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

Sva početnička pitanja Sva početnička pitanja bi trebala da se postavljaju u ovom forumu, a ako se pretvori u kvalitetnu diskusiju interesantnu svima - prebacićemo je u odgovarajući forum. Molimo "znalce" da ne omalovažavaju početnike, ako žele da pomognu svi ćemo biti zahvalni, ako ne žele, neka preskoče ovaj forum.

Odgovori
 
Alati teme Način prikaza
Staro 12. 12. 2007.   #1
staseprimate
NoProfessional
Certified
 
Datum učlanjenja: 29.09.2007
Lokacija: sta te bole
Poruke: 88
Hvala: 1
1 "Hvala" u 1 poruci
staseprimate is on a distinguished road
Default Kako najbolje izvesti ispis iz goleme baze

Zanima me i logika i kako to izvesti.
Pricaj je prosta.
Iz baze bi mozda imao ispis i 30 redova recimo.
Ne zelim da mi prikazuje sve ispise odjednom (oticice stranica u q. isto u ucitavanje).
Hocu ovako jednostavno kao na forumu.
10 ispisa iz baze pa stranica 1, ako imas 21 ispis da napise i stranica 3 i tako dalje.
na svakoj stranici da imam link za prethodnu i sledecu stranu...

koja je logika.... bojanje negde u bazi ili u aplikaciji ?
dakle sql bi jedno trebao da mi vratim samo prvih 10 u nekom drugom slucaju da mi vrati 11-20 ukljucujuci i te granice...

tnx
staseprimate je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #2
BluesRocker
profesionalac
Professional
 
Avatar BluesRocker
 
Datum učlanjenja: 21.06.2005
Poruke: 294
Hvala: 93
525 "Hvala" u 19 poruka
BluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished road
Default

Kôd:
SELECT <nesto> FROM <tabela> <uslov> LIMIT 0,10
vadi prvih 10 rekorda iz baze,

Kôd:
SELECT <nesto> FROM <tabela> <uslov> LIMIT 10,10
vadi drugih 10 rekorda

Kôd:
SELECT <nesto> FROM <tabela> <uslov> LIMIT 20,10
vadi sledećih 10 rekorda.

Ako imaš linkove obeležene sa 1, 2, 3, ... onda možeš da prosleđuješ promenljivu $page sa vrednostima 1,2,3 ... a u SQL upitima staviš LIMIT ".($per_page*($page - 1))." , ".$per_page." gde je $per_page broj rekorda po strani koji je bio 10 u gornjim primerima.

Poslednja izmena od BluesRocker : 12. 12. 2007. u 12:07.
BluesRocker je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #3
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Ili koristiš neki frejmvork koji ima straničenje.
jablan je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #4
staseprimate
NoProfessional
Certified
 
Datum učlanjenja: 29.09.2007
Lokacija: sta te bole
Poruke: 88
Hvala: 1
1 "Hvala" u 1 poruci
staseprimate is on a distinguished road
Default

@BluesRocker
znac li to da i forum tako funkcionise.... preko sql-a radi granice ?
hvala za detaljno objasnjenje tnx
mada sada mi pade nesto napamet.

treba da radim nesto novo a imam i vec staro.
1. kod starog ako sam dobro razumeo morao bih da menjam linkove (koristi se get) tako da to znaci odmah i pad seo ?
I evo ovaj primer.
default bi bilo
SELECT <nesto> FROM <tabela> <uslov> LIMIT 0,10
i sta kako da izvedem da ako ima vise zapisa od 10 da mi napise strana 2, ako ima vise od 20 da napise strana 3 i tako dalje ?
Odradim pre tog upita upit sa count da vidim koliko imam redova, pa to strpam u promenljivu. pa kazem if($promenljiva > 10) { $brstrana = 2; } else if($promenljiva > 20) {$brstrana = 3; }
ne znam da li me razumete...
saznam ja broj rodova preko count-a, ali kako sad da mu kazem ako ima vise od 30 bice 3 stranice, ako ima vise od 100 bice preko 10 stranica i da mi ispisuje redne brojeve stranica ??? ili bolje da radim prethodna i sledeca ?
if else ili ima nesto elegantnije ?
@jablan
e ovo nemam pojma kako se radi i cemu to sluzi :P hehe
staseprimate je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #5
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

http://en.wikipedia.org/wiki/Web_application_framework

Al bolje prvo nauči kako se ručno pravi...

Jeste, prvo uradiš count da vidiš koliko ima ukupno, i onda for petljom (od 1 do count/broj_po_stranici) ispišeš linkove za sve stranice.
jablan je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #6
BluesRocker
profesionalac
Professional
 
Avatar BluesRocker
 
Datum učlanjenja: 21.06.2005
Poruke: 294
Hvala: 93
525 "Hvala" u 19 poruka
BluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished roadBluesRocker is on a distinguished road
Default

Imaš na netu gotove klase za straničenje. Samo sam pokušao da ti objasnim kako funkcioniše.

Kako da znaš koliko ima strana?
count(*) -> $broj_rekorda
$broj_strana = ceil($broj_rekorda/$broj_rekorda_po_strani);
$broj_rekorda_po_strani - ovo nek ti bude neka konstanta

Možeš i da postaviš uslov koje će stranice da se ispisuju, prva, druga, ... izabrana, ... pretposledna, poslednja, prethodna, sledeća.
BluesRocker je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #7
staseprimate
NoProfessional
Certified
 
Datum učlanjenja: 29.09.2007
Lokacija: sta te bole
Poruke: 88
Hvala: 1
1 "Hvala" u 1 poruci
staseprimate is on a distinguished road
Default

ok nabudzicu nesto...
niste se osvrnuli na SEO.
da li na vec postojeci sajt i strane koji primaju parametre preko get metode implementirati ovo stranicenje ?
Ako sam dobro razume, kada bi neko kliknuo recimo na stranu "3" morala bi da se prenese i ta promenljiva preko get metode i to bi postao novi link..
jedino da u osnovnom linku nista ne menjam vec da ide samo ispis sa limitom, a kada se klikne da se otvara satro nova stranica sa novim linkom... time stari link ostaje isti i google ce i dalje njega gledati lepo a ove nove ce pre ili kasnije indeksirati ?!
jesam li upravu

evo sad se setih.... pomenuo count pa i vi nastavili...
valjda mogu i sa funkcijom mysql_num_rows($res);
deluje mi da je ovako brze jer ima "samo" jedan upit a sa countom bi bilo 2 upita ??

Poslednja izmena od staseprimate : 12. 12. 2007. u 20:19.
staseprimate je offline   Odgovorite uz citat
Staro 12. 12. 2007.   #8
staseprimate
NoProfessional
Certified
 
Datum učlanjenja: 29.09.2007
Lokacija: sta te bole
Poruke: 88
Hvala: 1
1 "Hvala" u 1 poruci
staseprimate is on a distinguished road
Default

off : moram da dodam komentar na svoj post jer mi fali opcija edit ?!

evo skinuo sam ovo
http://www.phpclasses.org/browse/package/2185.html
i prilagodio svojoj bazi.
radi mi lepo samo prvu stranicu...
stavim limit 5 ima samo 5 stavim limit 24 ima samo 24, ali gde god da klinem na one linkove 1,2 next dobijam samo index stranu a url se promeni sa page=1 na page=2 i tako dalje....
valja li ova klasa uopste... i jel ja to imam neku gresku !?
staseprimate je offline   Odgovorite uz citat
Staro 13. 12. 2007.   #9
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

mysql_num_rows ti vraca broj rekorda u rezultatu. Posto ti koristis LIMIT ti ces uvek da imas isti broj rezultata, tipa 10 ili koliko vec namestis.

Postoji lepsa fora od ovog Bojanovog, koja koristi jedan upit, a to je sledece:
Kôd:
SELECT SQL_CALC_FOUND_ROWS <nesto> 
    FROM <tabela> 
    WHERE <uslov> 
    LIMIT <offset>,10;

# i onda posle:
SELECT FOUND_ROWS() AS num_total_rows;
fora je u onom plavom, i to kaze mysql-u da izracuna ukupni count, ali da vrati samo prvih n rekorda, kao sto je setovano u LIMIT. Ovo je brze nego da se radi odvojeno SELECT sa limitom i SELECT sa countom.
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 13. 12. 2007. u 01:41.
ivanhoe je offline   Odgovorite uz citat
"Hvala" ivanhoe za poruku:
Staro 13. 12. 2007.   #10
staseprimate
NoProfessional
Certified
 
Datum učlanjenja: 29.09.2007
Lokacija: sta te bole
Poruke: 88
Hvala: 1
1 "Hvala" u 1 poruci
staseprimate is on a distinguished road
Default

Citat:
Originalno napisao ivanhoe Pogledajte poruku
mysql_num_rows ti vraca broj rekorda u rezultatu. Posto ti koristis LIMIT ti ces uvek da imas isti broj rezultata, tipa 10 ili koliko vec namestis.

na ovo sam totalno zaboravio

ovo cu probati....

a ona klasa mi i dalje brljavi
staseprimate je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
'multiple' ispis iz baze eclipse Sva početnička pitanja 13 16. 12. 2010. 01:26
Ispis odabranih checkboxova i upis u bazu blackshtef PHP 3 23. 04. 2010. 21:00
Kako najbolje monetizovati srpski traffic (i ex yu) a da to nije Adsense? zoki Marketing i SEO 56 11. 03. 2010. 20:06
OOP programiranje - najbolje objasnjenje colke Programiranje 1 10. 11. 2006. 12:07


Vreme je GMT +2. Trenutno vreme je 04:09.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.