Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapytanie mysql z tablicy
crew123
post
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 0
Dołączył: 25.02.2012

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


Witam. Mam taki problem, otóż robię szukajkę z chceckboxami zapisywanymi do tablicy opcje[] i chce wyswietlic wszystkie ogloszenia ktore te opcje mają, z jednym daje rade ale z wieloma jest ciężko, struktura bazy z opcjami:
id|id_oglo|id_oglo_opcje|

- id_oglo - id ogloszenia
- id_oglo_opcje - id/nazwa treści chceckboxa np: Hodowlane

próbuję to wyciągnąć takim sposobem:

  1. if (!empty($_GET['opcje'])) {
  2. foreach($_GET['opcje'] as $options) {
  3. $tab[] = "dodatkowo.id_oglo_opcje = '".$options."'";
  4. }
  5. }
  6.  
  7. if (!empty($tab)) {
  8. $wheretab = 'WHERE '.implode(' AND ', $tab);
  9. }
  10.  
  11. $sql = mysql_query("SELECT * FROM ogloszenia LEFT JOIN(dodatkowo) ON (ogloszenia.id=dodatkowo.id_oglo) $wheretab ORDER BY ogloszenia.id DESC") or die(mysql_error());


lecz wyswietlaja mi sie tylko pierwsze zaznaczone chckboxy, przy zaznaczeniu wiecej niz 1 checkboxa nie wyswietla ogloszen, wiem ze problem lezy w tym AND... tylko nie wiem jak zrobic aby zczytywalo wszystkie gdy np: id_oglo='100'.
Proszę o jakieś wskazówki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
d3ut3r
post
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


podaj jakieś dane z tych tabel, jeżeli się nie mylę to przykładowo masz tam:

id|id_oglo|id_oglo_opcje|
1 10 1 (Hodowlane)
2 10 2 (Inne)
3 12 1 (Hodowlane)

i teraz jeżeli chcesz wyciągnąć wszystkie ogłoszenia które mają Hodowlane i Inne to jedyne zapytanie które przychodzi mi do głowy to:

  1. SELECT id_oglo FROM `tabelka` WHERE id_oglo_opcje IN (1,2)
  2. GROUP BY id_oglo
  3. HAVING COUNT(id_oglo_opcje)=2


ewentualnie coś takiego:

  1.  
  2. SELECT id_oglo FROM `tabelka`
  3. GROUP BY id_oglo
  4. HAVING GROUP_CONCAT(id_oglo_opcje SEPARATOR "|")="1|2"
  5.  


Być może jednak istnieje lepsze rozwiązanie.
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: 14.10.2025 - 12:00