Wyświetlanie wybranych rekordów z tabeli mysql


(Bielu000) #1

Witam, myślałem że sobie z tym sam poradzę, jednakże nie wyszło. 


(kalitt) #2

Dodaj offset do zapytania czyli np

SELECT * FROM images WHERE gallery_name = 'gallery-1' ORDER BY id ASC LIMIT 6 OFFSET 6

Czyli wiersze zaczną się od 6 (albo 7nie pamiętam czy od 1 czy od 0 :smiley: ) id (jeśli nadałem im klucz primary)

 

Ewentualnie 2 sposób

SELECT * FROM images WHERE gallery_name = 'gallery-1' WHERE id > 6 ORDER BY id ASC LIMIT 6

(dr.boczek) #3

czekaj bo nie nadążam, zdjęcia trzymasz w bazie danych?  czy to taki przykład? pokaż tabelę


(kalitt) #4

Może to nie być koniecznie zdjęcie w bazie danych ale np ścieżka do pliku wraz z parasami do zdjęcia. Ale SQL też pozwala przechowywać BLOBy więc to nie jest problem, acz kol wiek odradzane to jest


(dr.boczek) #5

no ja mam nadzieje, że blob nie będziesz wykorzystywał…

 

dobra, wyświetlasz pierwsze 6…

 

SELECT * FROM zdjecia LIMIT 6 OFFSET 0

 

potem kolejne 6…

 

SELECT * FROM zdjecia LIMIT6 OFFSET 6

 

kolejne 6

 

SELECT * FROM zdjecia LIMIT 6 OFFSET 12

 

musisz sobie w PHP generować zawsze… offset i przechowywać gdzieś tą zmienną, dalej pewnie już wiesz


(StawikPiast) #6

 

A nie lepiej zamiast takich cyrków zrobić pagination?

http://phpgrid.com/example/set-pagination/

 

Generalnie przekazujesz wszystko i php samo ci to na strony podzieli.

A i nie używaj w zapytaniu * tylko wypisz tabele które cie inteesuja.


(Pablo_Wawa) #7

@StawikPiast: nie tabele, a pola (to do ostatniego zdania).

A ten Datagrid Pagination w PHP to jakiś poroniony pomysł pożal się boże programisty - zdajesz sobie sprawę, jak to będzie działać przy 50 tys. rekordów (a to nie jest wcale dużo) - wygląda na to, że ten skrypt wczytuje sobie cała bazę od razu (zapytanie tak sugeruje)!

Stronicowanie danych robi się po stronie użytkownika (JavaScriptem w przeglądarce), a dane pobiera dynamicznie (AJAX) partiami (bez potrzeby przeładowania strony).


(dr.boczek) #8

 

częściowo zgadzam się z przedmówcą jednak “pola” to rolnik uprawia, w bazach danych są kolumny :slight_smile:

mi się wydaję że ten datagrid to chyba jednak gdzieś dodaje sobie do zapytania limit i offset

 

http://phpdatagrid.com/examples/phpGridx/examples/dynamic_hyperlink.php?iframe=true&width=1040&height=700

 

jednak wygląda na to że kolega bielu00 dopiero się uczy więc wypadałoby samodzielnie napisać skrypt.


(Pablo_Wawa) #9

Zwracam honor - to rozwiązanie Datagrid Pagination na szczęście działa z użyciem OFFSET i LIMIT, więc nie obciąża mocno bazy danych. Faktem jest, że to jest strasznie duża “kobyła” (mam na myśli ilość kodu) i do prostych zastosowań oferuje przerost formy nad treścią (ale co kto lubi).


(dr.boczek) #10

 

nawet nie chodzi o proste rozwiązania, rzeczywiście jak sie zajrzy do dokumentacji to jest sporo opcji, często pewnie zbednych i ja bym wolał napisać swój kod w kilku linijkach niż być zdanym na takie rozwiązania. No ale jak ktoś chce sobie tylko baze danych przeglądać i filtrować dane to czemu nie… może się przydać jako gotowe narzędzie. Ja tam w kohanie dużo pisałem i korzystałem z gotowych mechanizmów paginacji ale nie aż tak gotowych jak tutaj

 

http://kohanaframework.org/3.0/guide/database/examples


(StawikPiast) #11

W bazie oczywiście mamy kolumny w tabelach, zmęczony już byłem.

Co do konkretnego rozwiązania to nie wnikam które dokładnie. Po prostu podpowiadam że są gotowe mechanizmy paginacji i można je wykorzystać. Oczywiście mają one swoje ograniczenia i nie zawsze się nadają ale do wyświetlenia 20-30 obrazków wystarczą w zupełności.

Frameworki są właśnie po to żeby korzystać z gotowych klas i metod a nie wymyślać koło od nowa.