Skocz do zawartości


Zdjęcie

Multi chechbox wyświetla jeden rekord


  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Druii

Druii
  • Użytkownicy
  • 1 postów

Napisano 24 marzec 2015 - 22:41

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?


  • 0



Użytkownicy przeglądający ten temat: 2

0 użytkowników, 2 gości, 0 anonimowych