Witam
Tworzę sobie stronkę o filmach. Mam liste chechboxów z gatunkami filmów. Klikając na kilka gatunków, ma mi się wyświetlić tabelka z nazwą filmu ocena ale tylko z tych zaznaczonych gatunków. Niestety coś jest nie tak. W php zapytanie pokazuje tylko jeden gatunek. W MySQL zapytanie wyświetla wszystko tak jak chcę.
W MySQL:
select distinct filmy.tytul as tytulek, oceny.ocena as ocenka, oceny.ilosc_glosow as glosy from oceny,filmy, gatunek, kategoria where oceny.id_filmu = filmy.id_filmu and filmy.id_filmu = gatunek.id_filmu and kategoria.id_kategori = gatunek.id_kategori and kategoria.nazwa = 'Fantasy' or kategoria.nazwa = 'Przygodowy' or kategoria.nazwa ='Dramat' group by tytulek order by ocenka desc;
to działa poprawnie
Teraz html/php
Część formularza:
<form method="post" name="rank" action="ranking.php"> <li><b>Gatunek</b></li> <li> <input id="" type="checkbox" name="chkbox[]" value="Akcja"></input> Akcja</li> <li> <input id="" type="checkbox" name="chkbox[]" value="Animowany"></input> Animowany</li> <li> <input id="" type="checkbox" name="chkbox[]" value="Biograficzny"></input> Biograficzny</li> <li> .... <li> <input type="submit" value="Filtruj"> </li> </ul> </form>
PHP
if (isset($_POST['chkbox'])) { echo 'kategoria.nazwa = \'' . implode($_POST['chkbox'], '\' or kategoria.nazwa = \' ').'\''; $nazwa = 'kategoria.nazwa = \'' . implode($_POST['chkbox'], '\' or kategoria.nazwa = \' ').'\''; $result = mysqli_query($polaczenie, "select distinct filmy.tytul as tytulek, oceny.ocena as ocenka, oceny.ilosc_glosow as glosy from oceny,filmy, gatunek, kategoria where oceny.id_filmu = filmy.id_filmu and filmy.id_filmu = gatunek.id_filmu and kategoria.id_kategori = gatunek.id_kategori and $nazwa group by tytulek order by ocenka desc;") or die("Bład zapytania"); } while ($row = mysqli_fetch_array($result)) { echo "<tr><td>" . $row["tytulek"] ."</td><td class='pr'>" . $row["ocenka"] ."</td><td class='pr'>" . $row["glosy"] ."</td></tr>"; }
isset sprawdza mi formularz chkbox co jest zaznaczone i wrzuca do zmiennej $nazwa. Za pomocą implode dodaje kilka kategori tworząc ciąg znaków i zapisuje do $nazwa. Ciąg zapisuje się poprawnie ponieważ wcześniej zrobiłem sobie echo z tym samym implodem (wyświetla mi się dokladnie to co zaznaczyłem) czyli np: kategoria.nazwa = 'Dramat' or kategoria.nazwa = ' Fantasy' or kategoria.nazwa = ' Przygodowy'
Niestety wyświetlająć whilem całą tabelkę pokazuje mi się tylko jeden gatunek.
Cały dzień walczę z tym i już padam. Macię jakąś radę albo przykład?