Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Wyswietlanie zawartosci jednego pola w 2 kolumnach
Forum PHP.pl > Forum > Przedszkole
jaszczura774
Witam!

Z góry przepraszam jeżeli powtarzam temat. Tak jak napisałem w tytule - chce umieścić dane z jednego pola w bazie danych w dwóch kolumnach tabeli HTML. Problem tkwi w tym ze chciałbym zachować dane w kolejności alfabetycznej, a jedyny rozwiązanie jakie przychodzi mi do głowy będzie za bardzo obciążać serwer (o ile w ogóle jest wykonalne tongue.gif). Żeby nie zostawić żadnych wątpliwości chodzi mi o rozłożenie danych w następujący sposób:

1. A 4.D
2. B 5.E
3. C 6.F
HellRider
Przyszło mi na myśl coś takiego, ale nie testuję tego, może na tym coś napiszesz:

  1. <?php
  2. $res = mysql_query("SELECT * FROM tabela ORDER BY kolumna ASC");
  3. $rekordy = mysql_num_rows($res);
  4.  
  5. $i=0;
  6. while ($row = mysql_fetch_array($res, MYSQL_ASSOC)){
  7.  if ($i%2 == 0) $tablica1[] = $row['pole'];
  8.  else $tablica2[] = $row['pole'];
  9.  $i++;
  10. }
  11.  
  12. echo ("<TABLE>")
  13. $c=0;
  14. for ($n=0; $n<($rekordy/2); $n++){
  15.  echo "<TR><TD>".$c++.": ".$tablica1[n]."</TD><TD>".$c++.": ".$tablica2[n]."</TD></TR>";
  16. }
  17. echo ("</TABLE>")
  18. ?>


Eh, coś pomieszałem, ale ogólnie mam na myśli rozbicie danych z bazy najpierw na dwie tablice już w PHP,
po czym naprzemienny odczyt z dwóch tablic do każdego rzędu tabeli HTML.

Nie krytykować proszę, wiem, że zamotałem tongue.gif Zmęczenie i tyle, ale może tym nakieruję smile.gif
jaszczura774
Pomijając fakt że kod który podałeś ułoży dane w zupełnie inny sposób niż podałem (dane będą rosły nie w kolumnach tylko w wierszach) i że można to wykonać bez dzielenia tego na dwie tablice (o ile się nie mylę), to na domiar złego ten kawałek kody nie działa:

Cytat(HellRider @ 18.10.2008, 12:57:46 ) *
  1. <?php
  2. $i=0;
  3. while ($row = mysql_fetch_array($res, MYSQL_ASSOC)){
  4.  if ($i%2 == 0) $tablica1[] = $row['pole'];
  5.  else $tablica2[] = $row['pole'];
  6.  $i++;
  7. }
  8. ?>


Próbowałem też wstawić w miejsce indeksów obu tablic zmienne ulegające inkrementacji ale i to nic nie dało sad.gif
Dzięki za starania haha.gif
HellRider
Ugh, faktycznie, zły układ, sorry.

  1. <?php
  2. $res = mysql_query("SELECT * FROM tabela ORDER BY kolumna ASC");
  3. $rekordy = mysql_num_rows($res);
  4.  
  5. $i = 0;
  6. while ($row = mysql_fetch_array($res, MYSQL_ASSOC)){ //while wykona $rekordy ilośc razy
  7.  if ($i < ($rekordy/2)) $tablica1[]=$row['pole'];       // pierwszą połowę do pierwszej tablicy i drugą do drugiej
  8.  else $tablica2[]=$row['pole'];
  9.  $i++;
  10. }
  11.  
  12. $c1=0;   // licznik pierwszej kolumny
  13. $c2=($rekordy/2);   // licznik drugiej kolumny (początek w połowie)
  14.  
  15. echo ("<TABLE>")
  16.  
  17. for ($n=0; $n<$c2; $n++){  // przez $rekordy/2 razy wypisze pary z tablic z indeksami 0+n i połowa+n
  18. echo "<TR><TD>".$c1+n.": ".$tablica1[n]."</TD><TD>".$c2+n.": ".$tablica2[n]."</TD></TR>";
  19. }
  20. echo ("</TABLE>")
  21. ?>

Jakoś się tam uporasz z parzystością i nieparzystością rekordów. Tego też nie testowałem, ale interpretowałem sobie i wychodzi ok.
jaszczura774
Ten kod także nie działa nie wiedzieć czemu ale znalazłem inne rozwiązanie. Dzięki za pomoc!
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.