Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MYSQL] Formatowanie wyniku - dwie listy 3 elementowe
Forum PHP.pl > Forum > PHP
neverever
Nie potrafię tego nawet dokładniej zatytułować.


Chodzi o coś takiego:

mam sobie zapytanie do bazy, dajmy: SELECT x,y FROM tabela WHERE warunek

to zapytanie zwraca mi X rekordów

teraz potrzebuję to wyswietlić w rozbiciu na dwie (połączone) listy, po max trzy elementy każda.

Przykładowo dla 8 rekordów ma powstać docelowo taka struktura:

Kod
<ul class="a">
<li>rekord1 x</li>
<li>rekord2 x</li>
<li>rekord3 x</li>
</ul>
<ul class="b">
<li>rekord1 y</li>
<li>rekord2 y</li>
<li>rekord3 y</li>
</ul>

<ul class="a">
<li>rekord4 x</li>
<li>rekord5 x</li>
<li>rekord6 x</li>
</ul>
<ul class="b">
<li>rekord4 y</li>
<li>rekord5 y</li>
<li>rekord6 y</li>
</ul>

<ul class="a">
<li>rekord7 x</li>
<li>rekord8 x</li>
</ul>
<ul class="b">
<li>rekord7 y</li>
<li>rekord8 y</li>
</ul>


Czyli kazda kolumna w osobnej liście...

Jak wygenerować taką strukturę z wyniku zapytania?
Kojak
Powinno pomóc:

  1. <?
  2. $tab =
  3. // tablica dwuelementowa z rekordami, pierwszy index oznacza numer rekordu, a drugi numer kolumny z tabeli
  4. // (tak więc $tab[1][0] oznacza drugi rekord => poonieważ [1] to drugi element; numerujemy od 0,
  5. // a także pierwszą kolumnę => w tym wypadku 'y'
  6.  
  7. $max_ilosc = 3; // maksymalna ilość w tabelce
  8. $ilosc = count($tab); // ilość rekordów
  9.  
  10.  
  11. for ($index=-1 ; ; )
  12. {
  13. for ($i = 0 ; $i < 2 ; $i++)  // rozbicie na dwie listy
  14. {
  15.   if ($i == 0) $klasa = 'a';
  16.   else if ($i == 1) $klasa = 'b';
  17.  
  18.   ?>
  19.   <ul class="<?echo $klasa;?>">
  20.   <?
  21.     $old_index = $index;
  22.   for ($j = 0 ; $j < $max_ilosc ; $j++)
  23.   {
  24.      $index++;
  25.      if (isset($tab[$index][$i]))
  26.      {
  27.         ?>
  28.         <li><?echo $tab[$index][$i];?></li>
  29.         <?
  30.      }
  31.      else $break;
  32.   }
  33.     if ($i == 0) $index = $old_index;
  34.   ?>
  35.   </ul>
  36.   <?
  37.  }
  38.  if ($index == $ilosc) break;
  39. }?>
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.