Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SQL]Wyswietlanie zawartosci jednego pola w 2 kolumnach
-jaszczura774-
post
Post #1





Goście







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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
HellRider
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 7
Dołączył: 12.09.2008
Skąd: localhost

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Zmęczenie i tyle, ale może tym nakieruję (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował HellRider 18.10.2008, 13:03:10
Go to the top of the page
+Quote Post
-jaszczura774-
post
Post #3





Goście







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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Dzięki za starania (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
HellRider
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 7
Dołączył: 12.09.2008
Skąd: localhost

Ostrzeżenie: (0%)
-----


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.

Ten post edytował HellRider 18.10.2008, 15:52:37
Go to the top of the page
+Quote Post
-jaszczura774-
post
Post #5





Goście







Ten kod także nie działa nie wiedzieć czemu ale znalazłem inne rozwiązanie. Dzięki za pomoc!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:21