Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciąganie danych z bazy - problem z odpowiednim wyświetleniem wyników
Michael2318
post 31.01.2013, 23:34:55
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Mam w bazie takie tabele:

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:

  1. $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
  2. FROM `categories` c
  3. LEFT JOIN `category_posts` cp
  4. ON cp.category_id = c.category_id
  5. LEFT JOIN `posts` p
  6. ON p.post_id = cp.post_id
  7. ORDER BY cp.category_id ASC";
  8. if ( !($result = Query($sql)) )
  9. {
  10. message_die_error(mysql_error(), __LINE__, __FILE__);
  11. }
  12.  
  13. $cat = 0;
  14. $num_cat = 0;
  15. $max_num_cat = 0;
  16. while($row = mysql_fetch_assoc($result))
  17. {
  18. if ( $cat == $row['category_id'] )
  19. {
  20. $link_cat .= '<a href="#">'.$row['post_title'].'</a><br>'."\n";
  21. $name_cat = '<a href="'.$row['category_title_link'].'-vc'.$row['category_id'].'.htm">'.$row['category_title'].'</a>';
  22. $category[$num_cat] = array(
  23. 0 => $num_cat.$name_cat,
  24. 1 => $link_cat
  25. );
  26. }
  27. else
  28. {
  29. $link_cat = '';
  30. $cat = $row['category_id'];
  31. $num_cat = $num_cat+1;
  32. }
  33.  
  34. if ( $num_cat > $max_num_cat )
  35. {
  36. $max_num_cat = $num_cat;
  37. }
  38. }
  39. echo $category[1][0].'<br> >> '.$category[1][1].'<br><br><br>'.$category[2][0].'<br> >> '.$category[2][1];


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?

Ten post edytował Michael2318 1.02.2013, 07:38:43
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:16