Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Wyświetlanie zdjęć z konkretnej podkategorii
Forum PHP.pl > Forum > Przedszkole
Prodix
Mam problem z wyświetlaniem zdjęć z konkretnej podkategorii, a mianowicie wysypuje mi wszystkie zdjęcia. Może wiecie co jest nie tak?

  1. <? if(isset($_GET['portfolio']))
  2. {
  3. $id=$_GET['portfolio'];
  4. $MY_Qo=mysql_query("SELECT * FROM `kategoria`");
  5. while($MY_Ao=mysql_fetch_array($MY_Qo))
  6. {
  7. $kid=$MY_Ao['id'];
  8. $MY_Qi=mysql_query("SELECT * FROM `podkategoria` WHERE `kategoria`='$kid'");
  9. while($MY_Ai=mysql_fetch_array($MY_Qi))
  10. {
  11. $pkid=$MY_Ai['id'];
  12. $MY_Qe=mysql_query("SELECT * FROM `portfolio` WHERE `podkategoria`='$pkid'");
  13. while($MY_Ae=mysql_fetch_array($MY_Qe))
  14. {
  15. echo '<a href="../zdjecie/' . $MY_Ae['foto'] . '.jpg" rel="lightbox" title="' . $MY_Ae['text'] . '"><img src="../miniatura/'.$MY_Ae['thumb'].'.jpg" alt="" style="margin:1px;" /></a>';
  16.  
  17. }
  18. }
  19. }
  20. }
  21. ?>
JoShiMa
1. Nie wiem jakie masz relacje w tabelach więc trudno mi powiedzieć do jest nie tak
2. Tak jak tobisz to jest masakra. Zobacz ile razy musi się wykonać zapytanie. Zainteresuj się złączeniami JOIN i zrób wszystko w jednym mądrym zapytaniu.
Prodix
  1. --
  2. -- Struktura tabeli dla `kategoria`
  3. --
  4.  
  5. CREATE TABLE `kategoria` (
  6. `id` int(4) NOT NULL AUTO_INCREMENT,
  7. `nazwa` varchar(255) NOT NULL DEFAULT '',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=4 ;
  10.  
  11. -- --------------------------------------------------------
  12.  
  13. --
  14. -- Struktura tabeli dla `podkategoria`
  15. --
  16.  
  17. CREATE TABLE `podkategoria` (
  18. `id` int(4) NOT NULL AUTO_INCREMENT,
  19. `nazwa` varchar(255) NOT NULL DEFAULT '',
  20. `kategoria` varchar(4) NOT NULL DEFAULT '0',
  21. PRIMARY KEY (`id`)
  22. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=4 ;
  23.  
  24. -- --------------------------------------------------------
  25.  
  26. --
  27. -- Struktura tabeli dla `portfolio`
  28. --
  29.  
  30. CREATE TABLE `portfolio` (
  31. `id` int(4) NOT NULL AUTO_INCREMENT,
  32. `nazwa` varchar(255) NOT NULL DEFAULT '',
  33. `tresc` text NOT NULL,
  34. `foto` text character SET utf8 collate utf8_polish_ci NOT NULL,
  35. `thumb` text character SET utf8 collate utf8_polish_ci,
  36. `podkategoria` int(4) NOT NULL DEFAULT '0',
  37. PRIMARY KEY (`id`)
  38. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=5 ;
wipo
  1. <?php
  2. if(isset($_GET['portfolio'])) {
  3. //to jak chcesz zdjecia z podkategorii
  4.     $query=mysql_query("select p.foto, p.text, p.thumb from portfolio p where p.podkategoria={$_GET
    ['podkategoria']}"
    );
  5.  
  6. //to jak chcesz zdjecia z kategorii
  7.     $query=mysql_query("select p.foto, p.text, p.thumb from portfolio p join podkategoria o on o.id
    =p.podkategoria where o.kategoria={$_GET['podkategoria']}"
    );
  8.  
  9.  
  10.     while($e=mysql_fetch_array($query)){
  11. echo '<a href="../zdjecie/' . $e['foto'] . '.jpg" rel="lightbox" title="' . $e['text'] . '"><img src="../miniatura/'.$e['thumb'].'.jpg" alt="" style="margin:1px;" /></a>';
  12.     }
  13.  
  14. }
  15. ?>
Prodix
ok, działa.

Wielkie dzięki. Także za pomoc Tomplus'a.
JoShiMa
Uważam, że niepotrzebnie masz dwie tabelki kategorie i podkategorie. Strukturę drzewiastą daje się zrobić w jednej tabelce dokładając jedną kolumnę w której jest info który z rekordów jest rekordem nadrzędnym. W ten sposób w jednej tabelce możesz zrobić nieskończone zagłębienia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.