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?



