Witam, mam problem z wyświetleniem podkategorii dla kategorii. Zacznijmy od kodu:
index.php
  1. $zapytaniekat=mysql_query("SELECT * FROM kategorie");
  2. while($a = mysql_fetch_array($zapytaniekat))
  3. {
  4. $kat[] = $a;
  5.  
  6.  
  7. }
  8. $zapytanie=mysql_query("SELECT * FROM podkategorie WHERE id_own = 1");
  9. while($b = mysql_fetch_array($zapytanie))
  10. {
  11. $pod[] = $b;
  12. }
  13.  
  14. $smarty -> assign('pod', $pod);
  15. $smarty -> assign('kat', $kat);


index.tpl
  1. <ul id="mkat">
  2. {foreach from=$kat item=to}
  3.  
  4. <li><a href="#">{$to.nazwa}</a>
  5. <ul>
  6. {foreach from=$pod item=to}
  7. <li><a href="index.html">{$to.nazwa}</a> </li>
  8. {/foreach}
  9. </ul>
  10. </li>
  11. {/foreach}


Problem polega na tym, że nie wiem jak wyciągnąć id z kategorii i wyświetlić podkategorie dla każdej kategorii, baza zbudowana jest tak:
kategorie
id | nazwa

podkategorie
id | id_own | nazwa


Chodzi po prostu o to, że podkategoria ma id_own(id kategorii do której należy) i ma być wyświetlana względem niej, jest to jakby przyporządkowanie.
Mam nadzieję, że mniej więcej wiadomo o co chodzi, dzięki.

EDIT
Zrobiłem to tak, ale też nie działa. Wyświetla wszystkie podkategorie niezależnie od id.

  1. $zapytaniekat=mysql_query("SELECT * FROM kategorie");
  2. while($a = mysql_fetch_array($zapytaniekat)) {
  3. $kat[] = $a;
  4. }
  5.  
  6. foreach($kat as $linia)
  7. {
  8. $id = $linia['id'];
  9. $zapytanie=mysql_query("SELECT * FROM podkategorie WHERE id_own = $id");
  10. while($b = mysql_fetch_array($zapytanie)) {
  11. $pod[] = $b;
  12. }
  13. }
  14.  
  15.  
  16. $smarty -> assign('pod', $pod);
  17. $smarty -> assign('kat', $kat);


Próbowałem tak:
  1. $zapytaniekat=mysql_query("select
  2. podkategorie.*,
  3. kategorie.nazwa
  4. from
  5. podkategorie
  6. left join
  7. kategorie
  8. on
  9. podkategorie.id_own = kategorie.id
  10. order by
  11. kategorie.id asc;");
  12. $kat = array();
  13. while($row = mysql_fetch_array($zapytaniekat)) {
  14. array_push( $kat[ $row->nazwa ], $row->nazwa-podkategoria );
  15. }


Niestety pojawia się problem z array push
Kod
Warning: array_push() expects parameter 1 to be array, null given



Tak można zrobić to w czystym PHP, ale jak przenieść to na SMARTY?
  1. $result = mysql_query("SELECT * FROM kategorie");
  2. while ($row = mysql_fetch_assoc($result)) {
  3. echo $row["nazwa"];
  4. $id = $row['id'];
  5. $resultw = mysql_query("SELECT * FROM podkategorie WHERE id_own = $id ORDER BY id DESC");
  6. while ($roww = mysql_fetch_assoc($resultw)) {
  7. echo $roww["nazwa"];
  8. }
  9. }


Nie wiem jak wyświetlić taki kod:

  1. $zapytaniekat=mysql_query("select
  2. podkategorie.*,
  3. kategorie.*
  4. from
  5. podkategorie
  6. left join
  7. kategorie
  8. on
  9. podkategorie.id_own = kategorie.id
  10. order by
  11. kategorie.id asc;");
  12. $kat = array();
  13. while($row = mysql_fetch_array($zapytaniekat)) {
  14. if( false === is_array($kat[ $row->nazwa ]) )
  15. $kat[ $row->nazwa ] = array();
  16. array_push( $kat[ $row->nazwa ], $row->nazwa-podkategoria );
  17. }


Proszę o pomoc.