Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] mała przeróbka kodu
artmajster
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.01.2007

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


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

Ten post edytował artmajster 8.01.2010, 08:41:32
Go to the top of the page
+Quote Post
Brick
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

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


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.' ) )' : '' )



--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post
artmajster
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.01.2007

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


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ć
Go to the top of the page
+Quote Post
Brick
post
Post #4





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

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


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.


--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 20:46