dane z bazy do dwóch kolumn

0

Witam
Mam do rozwiązania następujący problem: w tabeli mam zapisane obserwacje ptaków (strona ornitologiczna), potrzebuję pobrać z niej dane z konkretnej kategorii i wyświetlić je na stronie w dwóch kolumnach - w lewej z okresu 1.01.-30.06. a w prawej z okresu 1.07.-31.12. W szablonie strony używam SMARTY.
Kod PHP

 $gatunki_lista = array ();
            $daty_lista_1 = array ();
            $daty_lista_2 = array ();
            $i = -1;
            $j = -1;
            $wynik = mysql_query ("SELECT gatunki.species_id, gatunki.species_nazwapl, gatunki.species_nazwalt FROM gatunki, obserwacje WHERE gatunki.species_id=obserwacje.obs_gatunek AND obserwacje.obs_typ='$id_fenologia' AND obserwacje.obs_status='1' AND year(obserwacje.obs_data)='$rok' GROUP BY gatunki.species_nazwapl ORDER BY gatunki.species_nazwapl;");
            while ($g = mysql_fetch_array ($wynik)){
                $gid = $g[0];
                $gnazwapl = $g[1];
                $gnazwalt = $g[2];
                
                $gatunki_lista[] = array (
                                                    'nazwapl' => $gnazwapl,
                                                    'nazwalt' => $gnazwalt
                                                    );
                
                $kid = 0;
                $res = mysql_query ("SELECT obs_id, obs_data, obs_nazwamsc, obs_gatunek FROM obserwacje WHERE obs_gatunek='$gid' AND year(obs_data)='$rok' AND dayofyear(obs_data)<'182' AND obs_status='1' AND obs_typ='$id_fenologia' ORDER BY obs_data;");
                while ($r = mysql_fetch_array ($res)){
                    $id = $r[0];
                    $data = formatuj_date($r[1]);
                    $miejsce = stripslashes ($r[2]);
                    $os_gatunek = $r[3];
                    
                    if ($os_gatunek != $kid){                
                      $kid = $os_gatunek;
                      $i++;
                  }
                  $opcje_pokaz = '<a href="pokaz.php?idm='.$id.'&t=4"><img src="'.$szablon_strony.'img/btn_preview.gif" title="Szczegóły" /></a>';
            
                  $daty_lista_1[$i][] = array (
                                                      'id' => $id,
                                                      'data' => $data,
                                                      'miejsce' => $miejsce,
                                                      'opcje' => $opcje_pokaz
                                                      );
                }
                $kid1 = 0;
                $res1 = mysql_query ("SELECT obs_id, obs_data, obs_nazwamsc, obs_gatunek FROM obserwacje WHERE obs_gatunek='$gid' AND year(obs_data)='$rok' AND dayofyear(obs_data)>'181' AND obs_status='1' AND obs_typ='$id_fenologia' ORDER BY obs_data;");
                while ($w = mysql_fetch_array ($res1)){
                    $id1 = $w[0];
                    $data1 = formatuj_date ($w[1]);
                    $miejsce1 = stripslashes ($w[2]);
                    $os_gatunek1 = $w[3];
                    
                    if ($os_gatunek1 != $kid1){                
                      $kid1 = $os_gatunek1;
                      $j++;
                  }
                  $opcje_pokaz = '<a href="pokaz.php?idm='.$id1.'&t=4"><img src="'.$szablon_strony.'img/btn_preview.gif" title="Szczegóły" /></a>';
            
                  $daty_lista_2[$j][] = array (
                                                      'id' => $id1,
                                                      'data' => $data1,
                                                      'miejsce' => $miejsce1,
                                                      'opcje' => $opcje_pokaz
                                                      );
                }
            }
            $tpl -> assign ('fgatunek', $gatunki_lista);
            $tpl -> assign ('daty', $daty_lista_1);
            $tpl -> assign ('daty1', $daty_lista_2);

Kod HTML

<table class="tbl_fenol">
            {section name=g loop=$fgatunek}
                <tr>
                    <td colspan="2" class="gname">
                        {$fgatunek[g].nazwapl} <i>{$fgatunek[g].nazwalt}</i>
                    </td>
                </tr>
                <tr>
                    <td class="lewa">
                        <table class="tbl_fenol_inner">
                            {section name=p loop=$daty[g]}
                            <tr>
                                <td width="30">
                                    <input type="checkbox" name="zaznaczona[]" id="zaznaczona" value="{$daty[g][p].id}" />
                                </td>
                                <td width="80">
                                    {$daty[g][p].data}
                                </td>
                                <td>
                                    {$daty[g][p].miejsce}
                                </td>
                                <td width="25">
                                    {$daty[g][p].opcje}
                                </td>
                            </tr>
                            {/section}
                        </table>
                    </td>
                    <td class="prawa">
                        <table class="tbl_fenol_inner">
                            {section name=o loop=$daty1[g]}
                            <tr>
                                <td width="30">
                                    <input type="checkbox" name="zaznaczona[]" id="zaznaczona" value="{$daty1[g][o].id}" />
                                </td>
                                <td width="80">
                                    {$daty1[g][o].data}
                                </td>
                                <td>
                                    {$daty1[g][o].miejsce}
                                </td>
                                <td width="25">
                                    {$daty1[g][o].opcje}
                                </td>
                            </tr>
                            {/section}
                        </table>
                    </td>
                </tr>
            {/section}
            </table> 

Niestety nie wszystko działa tak jak powinno. Wygląda to tak że w pierwszym wierszu w lewej kolumnie dane są OK, ale w prawej znajdują się już dane które powinny znaleźć się w 2 wierszu 2 kolumnie; w 2 wierszu 1 kolumnie są dane z 3 wiersza 1 kolumny a w 2 kolumnie są dane z 4 wiersza 2 kolumny; w 3 wierszu 1 kolumnie są dane z 5 wiersza 1 kolumny a 2 kolumnie są dane z 6 wiersza 2 kolumny itd.
Jest jakiś sposób żeby to zadziałało czy też moje podejście do zagadnienia jest z założenia błędne? Od razu zaznaczam że nie mogę zrezygnować ze SMARTY bo cała strona jest na niej zbudowana.

0

Doczytaj jak działa smarty (dokumentacja jest dostępna online).
Zamiast section wystarczy Ci chyba foreach. KAŻDA zmienna ma przed sobą dolara, więc zamiast $fgatunek[g].nazwapl byś chciał używać $fgatunek[$g].nazwapl gdyby tylko w tym przykładzie $g nie było puste.

W kod się nie zagłębiałem, widzę tylko niepoprawne użycie section cały czas, i te zmienne.

Edit - mógłbyś oczywiście używać tego section, tylko nie samego g, a $smarty.section.g.index (a do loop wpisać $fgatunek|@count)

1 użytkowników online, w tym zalogowanych: 0, gości: 1