Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pętla while na tworzenie tabeli z dwoma komórkami w rzędzie
Forum PHP.pl > Forum > Przedszkole
mpps
witam,
ma ktoś z Was może pomysł na stworzenie pętli, która umożliwiłaby wyświetlenie tabeli z wieloma rzędami (w zależności od ilości danych), w których występowałyby po dwie komórki?
dane do tabeli są pobierane z bazy danych (tak na marginesie).
wynikiem powinno być coś takiego:
  1. <tr><td>dana_a</td><td>dana_b</td></tr>
  2. <tr><td>dana_c</td><td>dana_d</td></tr>
  3. <tr><td>dana_e</td><td>dana_f</td></tr>


pozdrawiam
Cienki1980
Wykorzystaj operator '%'. Np w pętli
  1. <?php
  2. for($i=0;$i<$ile;$i++)
  3. ?>

sprawdzaj takie cos:
  1. <?php
  2. if($i%$ilosc_kolumn_w_wierszu==0)
  3.  echo "</tr><tr>";
  4. ?>
albrzykowski
Hej,
Troszke rozwine poprzednia odpowiedz. Wklejam Ci moj kod:
  1. <?php
  2. echo'<div class="row">';
  3. while($row=mysql_fetch_row($mysqlConn->result)) {
  4. if($i<3){
  5. $thumbnailsTpl->blocks=array('IMAGE'=>$row[4].$row[2],'CAPTION'=>$row[5]);
  6. $thumbnailsTpl->load('thumbBoxTemplate.tpl');
  7. $thumbnailsTpl->parse();
  8. $thumbnailsTpl->returnResult();
  9. $i++;
  10. }
  11. if($i%3==0){
  12. $i=0;
  13. echo'</div><div class="row">';
  14. }
  15. }
  16. echo'</div>';
  17. ?>

Tutaj kozystam z klasy, ale to co Ciebie interesuje widac dokladnie. Pierwsza linia analogcznie otwiera w Twoim przypadku <tr> i musisz zmienic wartosc 3/2 odpowiednio rowniez dla modulo==0 zamykasz </tr>
Mam nadzieje ze troche pomoglem.
Pozdrawiam
mpps
dziękuję Wam,
oczywiście działa bez zarzutu guitar.gif
poniżej rozwiązanie dla mniej zaawansowanych (uproszczone) z zastosowaniem <tr>
  1. <?php
  2. echo('<tr>');
  3. $tabq = mysql_query("select * from tabela") or die(mysql_error());
  4. while($rek = mysql_fetch_array($tabq)){
  5. if($i<2){
  6. print('<td>'.$rek[0].'</td>');
  7. $i++;
  8. }
  9. if($i%2==0){
  10. $i=0;
  11. echo('</tr><tr>');
  12. }
  13. }
  14. echo('</tr>');
  15. ?>
kszychu
No to ja dodam jeszcze, że zamiast na sztywno wpisanej 2 możemy użyć zmiennej $ilosc_kolumn i wtedy mamy już bardzo uniwersalne rozwiązanie.
Tylko na końcu proponuję wziąć pod uwagę sytuację, gdy dane skończą się powiedzmy w pierwszej kolumnie i pozostałe kolumny trzeba będzie dopełnić np. spacjami.
mpps
  1. <?php
  2. echo('<tr>');
  3. $columns = 2;
  4. $tabq = mysql_query("select * from tabela") or die(mysql_error());
  5. $count_cols = mysql_num_rows($tabq);
  6. while($rek = mysql_fetch_array($tabq)){
  7. if($count_cols == 1){
  8. print('<td>'.$rek[0].'</td><td> </td>');
  9. }
  10. else{
  11. if($i<$columns){
  12. print('<td>'.$rek[0].'</td>');
  13. $i++;
  14. }
  15. if($i%$columns==0){
  16. $i=0;
  17. echo('</tr><tr>');
  18. }
  19. }
  20. }
  21. echo('</tr>');
  22. ?>

powinno być dobrze - u mnie działa
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.