Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]PHP MySQL - ilość kategorii
Forum PHP.pl > Forum > Przedszkole
Slashmd
Witam wszystkich,
mam ogromny problem którego nie mogę rozwiązać. Skrypt źle zlicza kategorie. Baza skonstruowana jest tak że:
1. jest kategoria np. Samochody (W bazie danych nr. 1)
2. jest podkategoria np. BMW (W bazie nr. 1)
3. jest ogłoszenie które posiada kolumnę a w niej kategorię i podkategorie w formie (1_1, 1_2) Gdzie pierwszy numerek to kat. a drugi podkat.

Schodki zaczynają się gdy mam przykładowo 1,11,12,13. Skrypt powinien zliczać ogłoszenia w danej kategorii, tak jednak nie jest bierze sobie kategorię 1,10,11,12,13,14 itd. wszystko przydładowo z 1 z przodu i zlicza do 1. Tak samo jest analogicznie z 2 zlicza niepotrzebnie 2,20,21,22,23, gdzie to wszystko powinno być osobno.

Proszę o podpowiedź co może być źle w kodzie. Nie jestem doświadczony i męczę się z tym już dobre 3 miesiące.





  1. <?php defined( 'dostep' ) or die( '' ); ?>
  2. <?php
  3. include ("tempp.php");
  4. $zapytanie=mysql_query("SELECT * FROM pmz_kategories order by kat_nr asc");
  5. $i=1;
  6. while ($row = mysql_fetch_assoc($zapytanie))
  7. {
  8. $ilosc_kat=mysql_query("SELECT ogl_kategoria FROM pmz_ogloszenia where ogl_kategoria LIKE '".$row['kat_id']."_%' AND ogl_aktywne LIKE '1'");
  9. $ile_rek = mysql_num_rows($ilosc_kat);
  10. $id_kat[]=$row['kat_id'];
  11. $nazwa_kat[]=$row['kat_nazwa'];
  12. $ile_ogl[]=$ile_rek;
  13. $podkategorie=mysql_query("SELECT * FROM pmz_podkategories WHERE kat_id LIKE '".$row['kat_id']."'order by podkat_nr asc ");
  14. $k=1;
  15. while ($row2 = mysql_fetch_array($podkategorie)) {
  16. $id_podkat[]=$row2['podkat_id'];
  17. $nazwa_podkat[]=$row2['podkat_nazwa'];
  18. $id_id_kat[]=$row2['kat_id'];
  19. $ilosc_podkat=mysql_query("SELECT ogl_kategoria FROM pmz_ogloszenia where ogl_kategoria LIKE '".$row['kat_id']."_".$row2['podkat_id']."' AND ogl_aktywne LIKE '1'");
  20. $ile_rek_pod = mysql_num_rows($ilosc_podkat);
  21. $ile_podogl[]=$ile_rek_pod;
  22. $k++;
  23. }
  24. $i++;
  25. }
  26. $str2=explode('_',$_GET['show']);
  27. $str=$str2[0];
  28. /*--------------------smarty----------------------------------------------*/
  29. $smarty = new Smarty;
  30. $smarty->assign('kategorie',$id_kat);
  31. $smarty->assign('nazwa_kat',$nazwa_kat);
  32. $smarty->assign('ile_ogl_kat',$ile_ogl);
  33. $smarty->assign('id_podkat',$id_podkat);
  34. $smarty->assign('nazwa_podkat',$nazwa_podkat);
  35. $smarty->assign('ile_podogl',$ile_podogl);
  36. $smarty->assign('id_id_kat',$id_id_kat);
  37. $smarty->assign('str',$str);
  38. $smarty->display(''.$grf.'/kategorie.tpl');
  39. /*------------------------koniec------------------------------------------*/
  40. ?>
sadistic_son
Masz źle skonstruowaną bazę. Poczytaj o relacjach. Zdecydowanie unika się czegoś takiego jak X_Y gdzie X oznacza id z jednej tabeli a Y z drugiej. Do tego właśnie służą relacje jeden-do-wielu i wiele-do-wielu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.