Categories:
|Category_id|category_title|category_title_link|category_posts|
category_posts:
|category_id|post_id|
oraz tabelę z postam, ale z niej wyciągam tylko tytuł postu, więc jest mało ważna.
Chcę osiągnać taki efekt, że na stronie głównej wyciągnę sobie nazwy wszystkich kategorii, a obok kazdej nazwy będzie przycisk 'rozwiń' i po rozwinięciu wyświetlą się nazwy wszystkich tematów, które należa do danej kategorii. Wymyśliłem sobie, że zrobię tablicę, gdzie $tablica[0] zwróci mi aktualną nazwę kategorii, a $tablica[1] zwróci mi wszystkie linki do wspiów. No i niby coś mam, ale skrypt pomija zawsze jeden wynik. Po prostu w pierwszej kategorii powinienem mieć 16 wpisów, a wyświetla mi 15, w drugiej powinienem mieć 2 wpisy, a wyświetla 1.
Tutaj jest kod:
$sql = "SELECT p.post_title, p.post_id, cp.category_id, cp.post_id, c.category_id, c.category_title, c.category_title_link, c.category_posts FROM `categories` c LEFT JOIN `category_posts` cp ON cp.category_id = c.category_id LEFT JOIN `posts` p ON p.post_id = cp.post_id ORDER BY cp.category_id ASC"; if ( !($result = Query($sql)) ) { } $cat = 0; $num_cat = 0; $max_num_cat = 0; { if ( $cat == $row['category_id'] ) { $link_cat .= '<a href="#">'.$row['post_title'].'</a><br>'."\n"; $name_cat = '<a href="'.$row['category_title_link'].'-vc'.$row['category_id'].'.htm">'.$row['category_title'].'</a>'; 0 => $num_cat.$name_cat, 1 => $link_cat ); } else { $link_cat = ''; $cat = $row['category_id']; $num_cat = $num_cat+1; } if ( $num_cat > $max_num_cat ) { $max_num_cat = $num_cat; } } echo $category[1][0].'<br> >> '.$category[1][1].'<br><br><br>'.$category[2][0].'<br> >> '.$category[2][1]; exit;
Od razu mówię, że wiem czemu tak się dzieje - przy przejściu w pętli z jednego ID kategorii na drugie, pierwszy 'przelot' przez pętlę jest jakby pusty bo nie zapisuje żadnych danych, tylko aktualizuje zmienne warunkowe. Kolejny przelot już wszystko załapuje.
Chciałbym aby ktoś mi pomógł to poprawić tak, aby zapisywało wszystkie wpisy.
EDIT:
Albo inaczej - czy w PHP jest jakaś funkcja, typu repeat(), która potwórzy przelot przez pętlę? Znalazłem w necie coś takiego jak repeat ale z tego co czytam to to tylko delphia obsługuje. Czy w PHP nie ma alternatywy dla tej funkcji?