Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP - wyświetlanie produktów z samej kategorii lub podkategorii - problem
Forum PHP.pl > Forum > PHP
arlid
Witam. Za pomocą GET pobieram dwa parametry:

  1. pokaz_tablice.php?katID=1&podkatID=2


Wszystko tutaj działa ok - wyświetla mi produkty z kategorii 1 i przypisanej do niej podkategorii. . Chciałbym móc także podać taki link
pokaz_tablice.php?katID=1
który wyświetli produkty z całej kategorii i wszystkich należących do niej podkategorii.

Zrobiłem takie zapytanie:

  1. SELECT produkt.id_produkt AS ID_produkt, produkt.nazwa AS nazwa2, produkt.cena_netto AS netto2, produkt.zdjecie AS zdjecie2, kategoria.nazwa AS nazwa3, podkategoria.nazwa AS nazwa4 FROM produkt
  2.  
  3. JOIN kategoria ON (produkt.id_kategoria = kategoria.id_kategoria)
  4. JOIN podkategoria ON (produkt.id_podkategoria = podkategoria.id_podkategoria)
  5.  
  6. WHERE kategoria.id_kategoria='$katID' AND podkategoria.id_podkategoria='$podkatID'
  7.  
  8. GROUP BY id_produkt


I w pierwszym przypadku kiedy link jest długi (ma dwa GETy) działa super. Kiedy chcę wyświetlić tylko cała kategorię nie mam nic. Zmodyfikowałem to tak:

  1. SELECT produkt.id_produkt AS ID_produkt, produkt.nazwa AS nazwa2, produkt.cena_netto AS netto2, produkt.zdjecie AS zdjecie2, kategoria.nazwa AS nazwa3, podkategoria.nazwa AS nazwa4 FROM produkt
  2.  
  3. JOIN kategoria ON (produkt.id_kategoria = kategoria.id_kategoria)
  4. JOIN podkategoria ON (produkt.id_podkategoria = podkategoria.id_podkategoria)
  5.  
  6. WHERE kategoria.id_kategoria='$katID' OR (kategoria.id_kategoria='$katID' AND podkategoria.id_podkategoria='$podkatID')
  7.  
  8. GROUP BY id_produkt


Wtedy działa cała kategoria, lecz, gdy chce wyświetlić tylko elementy z podkategorii (dwa GETy) to wyświetla mi i tak całą kategorię. Coś pewnie jest źle w zapytaniu, ale już troszkę nad tym myślę i ciężko mi coś wyłapać.
Daimos
  1. WHERE kategoria.id_kategoria='$katID' OR (kategoria.id_kategoria='$katID' AND podkategoria.id_podkategoria='$podkatID')


za pomocą $_GET wysyłasz $katID i $podkatID. Więc zobacz co masz powyżej.
Najpierw sprawdzasz:
  1. WHERE kategoria.id_kategoria='$katID'

Prawda czy fałsz? Prawda, więc pobiera wszystkie rekordy z całej kategorii. Usuń ten warunek, w przypadku, kiedy ktoś podał podkategorię
arlid
Dzięki. Źle zrozumiałem zapytanie i myślałem, że
  1. WHERE kategoria.id_kategoria='$katID' OR (kategoria.id_kategoria='$katID' AND podkategoria.id_podkategoria='$podkatID')


wykona pierwszy LUB drugi człon i będzie bardziej inteligentne smile.gif
Daimos
Cytat(arlid @ 4.08.2015, 09:15:45 ) *
Dzięki. Źle zrozumiałem zapytanie i myślałem, że
  1. WHERE kategoria.id_kategoria='$katID' OR (kategoria.id_kategoria='$katID' AND podkategoria.id_podkategoria='$podkatID')


wykona pierwszy LUB drugi człon i będzie bardziej inteligentne smile.gif


Dokładnie jak mówisz, wykona pierwszy LUB drugi człon, więc rekord może spełniać pierwszy warunek LUB drugi. Więc nie chodzi tu o brak inteligencji zapytania wink.gif Po prostu musisz skorzystać z AND, lub posłużyć się samą podkategorią.
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.