Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] mała przeróbka kodu
Forum PHP.pl > Forum > Przedszkole
artmajster
Witam serdecznie

chciałbym zmienić jeden z modułów na mojej stronie i do tego potrzebuję przerobić nieco zapytani SQL
niestety nie jestem zbyt mocny w te klocki

mamy galerię 1
w niej podgalerię 2 i 3

po ustawieniu że ma wyświetlać zdjęcia z galerii np. 1
nie wyświetla zdjęć z podgalerii 2 i3 w niej znajdującej się

jak zmienić zapytanie sql ?

Kod:
  1. DEFAULT:
  2.  
  3. $db->setQuery('SELECT * '
  4. . ' FROM `#__datsogallery` AS a '
  5. . ' LEFT JOIN `#__datsogallery_catg` AS c ON c.cid = a.catid '
  6. . ( $catid ? ' AND ( catid in ( '.$catid.' ) )' : '' )
  7. . ' WHERE a.catid = c.cid'
  8. . ' AND a.published = 1'
  9. . ' AND a.approved = 1'
  10. . ' AND c.published = 1'
  11. . ' AND c.access <= ' . (int) $user->get('aid')
  12. . ' ORDER BY rand() DESC LIMIT ' . $limit
  13. );
  14. break;

dodanie
Kod:
  1. . ' OR a.catid = c.parent'

niestety nie działa

struktura bazy

- tabela kategorii

cid int(11)
name varchar(255)
parent varchar(255)
description text
ordering int(11)
access tinyint(3)
published char(1)

- tabela zdjęć

id int(11)
catid int(11)
imgtitle text
imgauthor varchar(50)
imgtext text
imgdate varchar(20)
imgcounter int(11)
imgdownloaded int(11)
imgvotes int(11)
imgvotesum int(11)
published tinyint(1)
ordering int(11)
imgoriginalname varchar(50)
imgfilename varchar(50)
imgthumbname varchar(50)
checked_out int(11)
owner varchar(50)
approved int(1)
useruploaded int(1)


da się z tym coś zrobićquestionmark.gif?

będę ogromnie dźwięczny za pomoc smile.gif

EDIT:

naprawdę nie mam szansy na żadną pomoc questionmark.gif sciana.gif
Brick
Ciężko jest tak cokolwiek sensownego odpowiedzieć nie widząc jak to wszystko działa.
Cytat
po ustawieniu że ma wyświetlać zdjęcia z galerii np. 1
nie wyświetla zdjęć z podgalerii 2 i3 w niej znajdującej się

Rozumiem że chodzi o kliknięcie linka z którego przesyłany jest $catid czyli unikalny ID galerii?

Czy wyeliminowałeś warunek dotyczący dostępu użytkownika:
AND c.access <= ' . (int) $user->get('aid') ?
Tymczasowo usuń ten wiersz żeby wyeliminować tą możliwość.

Usuń także tymczasowo te inne warunki:
' AND a.published = 1'
' AND a.approved = 1'
' AND c.published = 1'
oraz ORDER BY rand() DESC LIMIT ' . $limit
Uzyskamy w ten sposób czyste zapytanie.

Najlepszy sposób pracy z zapytaniami to wydrukować je na ekran ze skryptu php zanim zostanie wykonane.
Zrób print całego zapytania i wklej. Zobaczymy co wskakuje do zmiennych.
Zakładam że przyczyną jest ten fragment:
( $catid ? ' AND ( catid in ( '.$catid.' ) )' : '' )

artmajster
Cytat(Brick @ 8.01.2010, 09:24:14 ) *
Ciężko jest tak cokolwiek sensownego odpowiedzieć nie widząc jak to wszystko działa.
Rozumiem że chodzi o kliknięcie linka z którego przesyłany jest $catid czyli unikalny ID galerii?

chodzi o wyświetlenie zdjęć z danej galerii - ID wpisuje się w panelu konfiguracyjnego modułu

Cytat(Brick @ 8.01.2010, 09:24:14 ) *
Czy wyeliminowałeś warunek dotyczący dostępu użytkownika:
AND c.access <= ' . (int) $user->get('aid') ?
Tymczasowo usuń ten wiersz żeby wyeliminować tą możliwość.

Usuń także tymczasowo te inne warunki:
' AND a.published = 1'
' AND a.approved = 1'
' AND c.published = 1'

dałem na to komentarz
Cytat(Brick @ 8.01.2010, 09:24:14 ) *
oraz ORDER BY rand() DESC LIMIT ' . $limit

bez tego wywala mi wszystkie zdjęcia ze wszystkich galerii

Cytat(Brick @ 8.01.2010, 09:24:14 ) *
Najlepszy sposób pracy z zapytaniami to wydrukować je na ekran ze skryptu php zanim zostanie wykonane.
Zrób print całego zapytania i wklej. Zobaczymy co wskakuje do zmiennych.

niestety jestem totalnym "przedszkolakiem" jeżeli chodzi o php sql sad.gif

Cytat(Brick @ 8.01.2010, 09:24:14 ) *
Zakładam że przyczyną jest ten fragment:
( $catid ? ' AND ( catid in ( '.$catid.' ) )' : '' )

bez tego wyrzuca zdjęcia ze wszystkich galerii i podgalerii



więc rozumiem że przerobienie tego kodu nie jest ani małe ani proste.

Prada / Fałsz *

* niepotrzebne skreślić
Brick
Przerobienie tego kodu jest możliwe pod warunkiem że człowiek wie co robi.
Do zapytania wchodzą różne wartości w postaci zmiennych. Nie jestem w stanie pomóc jeżeli nie wiem jak wygląda zapytanie które wykonuje baza, czyli co znajduje się w zmiennych.

Wpisz do kodu php
print "SELECT * ........." <- pomiędzy cudzysłów wklej całe zapytanie a potem wklej na forum to co się wyświetliło.
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.