Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie danych z bazy
Forum PHP.pl > Forum > PHP
krysk
Witam, mam do wydrukowania tabelkę o zmieniającej się ilości wierszy z zawartością która jednak może być różna od ilości wierszy. Pytanie - jak wydrukować taką tabelkę na ekran aby miała ustaloną w zmiennej przeze mnie ilość wierszy oraz wydrukowała tyle rekordów ile się w niej zmieści, lub jeśli rekordów jest mniej niż wierszy to żeby wydrukowało wszyskie rekordy i dokończyło drukowanie wierszy z białą spacją jako treść, myślałem nad czymś takim:

  1. <?php
  2.  
  3. for ($i = 1; $i <= $wiersze; $row=mysql_fetch_array($q), $i++){
  4. //wyświetlanie wiersza
  5. }
  6.  
  7. ?>

Przykłady:
-tabelka ma mieć 10 wierszy, rekordów jest 3. Drukuje 3 wiersze wypełnione z rekordami, 7 wypełnionych białą spacją &nbsp;.
-ta sama tabelka, rekordów jest 20 - drukuje tylko 10. (to się rozwiąże dodaniem do zapytania LIMIT, ale celem przykładu;))


Mam nadzieję, że problem opisałem jasno smile.gif
a1EL
son jak prosilem napisal cos takiego co wyswietla 3rezultaty z pozniej nasteonia linia i znowu 3
  1. <?php
  2.  i++;  
  3.  $reszta = $i%3;
  4.  if($reszta == 0) print '<br />';
  5. ?>

Mam nadziej ze to Ci chodciaz troche pomoze
Ociu
W najprostrzy sposób, można zrobić tak:
  1. <?php
  2. if($row['id'] > 3)
  3. {
  4. echo '<br />'; // TRUE
  5. } else {
  6. echo $row['id']; // FALSE
  7. }
  8. ?>


Ale, jeśli chcesz tylko pierwsze 3 rekordy wyświetlić z danymi to nie lepiej walnąć drugą pętlę ? Albo nawet pisać ręcznie te &nbsp; smile.gif
  1. <?php
  2. $query = mysql_query(&#092;"SELECT * FROM costam LIMIT 3\");
  3. while($row = mysql_fetch_array($query))
  4. {
  5. echo $row['id'];
  6. }
  7.  
  8. for($i = 0; $i < 7; $i++) echo '&nbsp;';
  9. ?>
krysk
Ociu - drugi sposób też przyszedł mi do głowy, ale wg. mnie jest mało efektwny i dlatego szukam czegoś lepszego - może jest i wychodzą tylko moje braki w wiedzy winksmiley.jpg)

Doszedłem do czegoś takiego kontynuując swój poprzedni pomysł:
  1. <?php
  2.  
  3.  $q = sql(&#092;"SELECT * FROM `\" . $config[\"tbl_list\"] . \"` WHERE `l_kurs` = '\" . $dane['g_id'] .\"' LIMIT 0,\" . $left);
  4.  for($i =1; $i <= $left; $i++, $tmp = mysql_fetch_array($q))
  5.  {  echo '<tr>
  6. <td align=\"center\" class=\"tbl_f1_red\" width=20>' . $i . '</td>
  7. <td class=\"tbl_white_red\"><span class=\"bk8\">' . $tmp['l_name'] .'</span></td>
  8. <td align=\"center\" class=\"tbl_white_red\" width=20>
  9. <a href=\"?action=delete&id=\"'. $tmp['id'] .' target=\"_self\"><img src=\"./../img/delete.gif\" border=0></a>
  10. </td>
  11. </tr>';
  12.  }
  13.  
  14. ?>



Wyświetla się wszystko tak jak chcę, gdyby nie fakt, iż pierwszy wers jest zawsze pusty. Dlaczego?
ActivePlayer
zrob ta petelke na
  1. <?php
  2. do{}while($i <= $left)
  3. ?>


nie działa bo:
  1. <?php
  2.  $tmp = mysql_fetch_array($q)
  3. ?>

wykonuje sie po pierwszym przejsciu petli.
SongoQ
W for masz za duzo parametrow.
ActivePlayer
for jest dobre. ale nie w tym zastosowaniu.
krysk
@ActivePlayer: działa - dzięki.
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.