Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Wyświetlanie galerii z podziałem na kategorie
THOR_JAN
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


Witam
Posiadam taki kod, który wyświetla galerię

  1. <?php
  2. include('config.php');
  3. $i = 4;
  4. $zapyanie=mysql_query('SELECT * FROM galeria ORDER BY id DESC');
  5. while($row=mysql_fetch_array($zapyanie)){
  6. echo '<a rel="lightbox[galeria]" href="galeria/'.$row['zdjecie'].'" title="'.$row['opis'].'"><img src="galeria/miniatury/'.$row['zdjecie'].'" alt="'.$row['opis'].'"></a>';
  7. if($i % 3 == 0)
  8. echo '<br>';
  9. $i++;
  10. }
  11. ?>


w tabeli są kolumny: id, zdjecie, kategoria, opis.

moim problemem jest wyświetlenie w stylu:


KATEGORIA

zdjęcie | zdjęcie | zdjęcie
zdjęcie | zdjęcie | zdjęcie
zdjęcie | zdjęcie | zdjęcie
zdjęcie | zdjęcie | zdjęcie

-------------------------------------------------

KATEGORIA

zdjęcie | zdjęcie | zdjęcie
zdjęcie | zdjęcie | zdjęcie
zdjęcie | zdjęcie | zdjęcie
zdjęcie | zdjęcie | zdjęcie

-------------------------------------------------

<< poprzednia str | następna str >>

chodzi o to, żeby wyświetlały się zdjęcia, które między sobą mają taką samą nazwą kategorii w jednym bloku
a następnie jak już takie się skończą to znowu zdjęcia które między sobą mają taką samą nazwę kategorii i tak do wyczerpania zapasów.

i dochodzi kwestia stronicowania tego.
(chociaż z tym jeszcze nie próbowałem nic robić jest tego tyle nan forum że powinienem sobie poradzić
także ważniejsza kwestia to wyświetlanie zdjęć, ale będę wdzięczny za jakieś sugestie odnośnie stronicowania również)

Pozdrawiam

Ten post edytował THOR_JAN 22.02.2010, 21:50:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli chcesz zrobić tak jak teraz to nawet zapytanie musisz inaczej skonstruować. Zauważ, że Ty wyświetlasz kompletnie co innego niż nam opisujesz. WCALE NIE robisz select po kategorii w warunku, tylko wyświetlasz wszystkie zdjęcia posortowane według kategorii. Nie masz więc WHERE kategoria =, tylko ORDER BY kategoria, a to poważna różnica. Jak to teraz zrobić najprościej? Bierzesz zapytanie
  1. $sql = 'SELECT kolumny FROM galeria ORDER BY kategoria LIMIT '.($strona*$zdjec_na_strone).', '.$zdjec_na_strone;

Teraz pobierasz kategorię pierwszego zdjęcia i wrzucasz ją do góry oraz do zmiennej, powiedzmy $jakaś
Resetujesz wskaźnik wyniku, by znów wskazywał na początek tablicy wyników.
Teraz w pętli lecisz po wszystkich zdjęciach z zapytania i sprawdzasz NAJPIERW, czy podane zdjęcia jest z tej samej, czy innej kategorii. Jeśli z tej samej, nie robisz nic. Jeśli z innej to zmieniasz zmienną $jakaś na tę nową i robisz nową kategorię na stronie. Proste? (IMG:style_emoticons/default/smile.gif)
EDIT: Zawsze możesz też sobie odpuścić resetowanie i polecieć po prostu dalej w pętli, ale wtedy musisz dodatkowo zrobić przed pętlą odczyt danych tego rekordu i już teraz wrzucenie go na stronę, by nie zostały one "zgubione". Kwestia tylko tego, czy chcesz dublować kod jeśli piszesz strukturalnie. Sensowniej według mnie jest utworzyć sobie strukturę danych jako obiekt lub tablicę i do niej dane przerzucić, by potem widok sam to sobie wygenerował. Miałbyś wtedy coś w stylu:
  1. $dane = array(
  2. [kategoria1] = array(
  3. array(tu_dane_zdjecia_1),
  4. array(tu_dane_zdjecia_2),
  5. array(tu_dane_zdjecia_3)
  6. ),
  7. [kategoria2] = array(
  8. array(tu_dane_zdjecia_4),
  9. array(tu_dane_zdjecia_5)
  10. )
  11. );
Takie coś ładniej się nawet będzie potem przetwarzać.
Powód edycji: [thek]: dodatek w różnicowaniu mieszanie logika+widok, lub separacja ich
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 19:57